서버 플로우
<aside>
💡 약어 정리
N — Node.js 메인 게임 서버 / 게임 서버
D — C# .NET Dedicated 서버 / 데디 서버
Detour
DtCrowd — NavMesh 및 Agent를 관리하고 위치 정보를 업데이트
DtCrowdAgent — DtCrowd의 NavMesh 위를 돌아다닐 에이전트
DtCrowdAgentParams — 에이전트의 충돌 정보나 radius 등 NavMesh 연산에서 사용될 옵션
</aside>
서버 실행
dotnet run
- ./Assets 디렉토리 내 .navmesh 파일 및 .json 파일 로드 후 인메모리 매핑
- Socket Listener 실행하여 연결 대기
N → D
-
CreateSession — 새 세션 생성
- 데디 서버에 현재 던전 세션과 연결된 NavManager를 관리할 세션 생성
- 던전 NavMesh 정보를 불러올 때 필요한 dungeonCode를 전달
- 세션에 귀속된 NavManager가 DtCrowd를 생성하여 NavMesh와 Agent 관리
- 비동기 게임 루프 실행
-
SetPlayers — 플레이어 에이전트 추가
- 참가중인 유저들을 식별할 ID인 accountId와 DtCrowdAgentParams 정보를 불러올 때 사용할 캐릭터 모델 코드 charClass를 전송하고 DtCrowd에 에이전트 추가
-
SetMonsters — 몬스터 에이전트 추가 대기
- 매 밤 라운드 종료 시 몬스터 식별 정보인 monsterIdx와 DtCrowdAgentParams 정보를 불러올 때 사용되는 monsterModel 값을 전송하여 배열 초기화
-
KillMonster — 몬스터 에이전트 삭제
- 몬스터를 식별할 monsterIdx 송신하고 있으면 즉시 삭제
-
AddStructure — 건축물 추가
- 건축물을 식별할 structureIdx, DtCrowdAgentParams 정보를 불러올 structureModel, 그리고 건축물이 설치될 위치 좌표 worldPosition 송신
-
RemoveStructure — 건축물 삭제
- 건축물을 식별할 structureIdx 전송하고 있으면 바로 삭제