-
스파르타) Node.js 5기 게임 서버 최종 프로젝트 (D-9)TIL-sparta 2024. 8. 19. 00:25
학습 키워드: C#, .NET, Recast & Detour, DotRecast
1. Progress
1) 작업 현황:
(C# 서버 / 24-08-18 일자 commit history 참고)
주요 작업 내용:
- Protobuf 패킷 구조 설계
- 핸들러 handlePacket method 인자 수정 및 핸들러/매핑 추가
- FileLoader util 추가, DtCrowdAgentParams 관련 값을 JSON 파일에서 읽어들이도록 변경
(JS 서버 / 위 commit 내용 참고)
주요 작업 내용:
- 데디 서버 관련 패킷 구조 및 매핑 추가
- packet sender, serialize/deserialize 리팩토링
2) 회의 내용:
전용 서버가 담당하는 영역을 어디까지 할 것인가에 대해 짧게 논의했다. 현재 게임에 접속하는 클라이언트 중 하나의 클라이언트가 NavMesh에 관련된 연산을 담당하는 방식으로 코드가 쓰여져 있었는데, 현재 구현되고 있는 server-side NavMesh로 옮기려는 과정에서 문제점이 발견됐다.
몬스터의 어그로 구현과 관련된 내용인데, 현재는 클라이언트에서 몬스터가 2초에 한 번씩 RaySphere를 방출하여 범위 내 가장 가까운 타겟을 찾아낸 뒤 이동을 담당하는 brain에 목표물로 설정해준다. 그런데 이 RaySphere는 collider를 필요로 하기 때문에 서버에서 똑같은 방식을 사용하려면 거의 엔진을 하나 만드는 식이 될 것이라는 의견이 있었다.
전용 서버에서 몬스터와 플레이어의 위치를 모두 관리하기 때문에 거리 기반으로 탐색하는 방안도 생각했으나, 새롭게 구현되고 있는 건축 기능 때문에 장애물 및 RayCast collision 부분의 코드를 완전히 새로 작성해야하는 문제가 있어서 보류하기로 했다.
프로젝트 최종 발표까지 남은 시간이 얼마 없기 때문에 코드를 갈아 엎기에는 무리가 있다고 판단되어서 일단 움직임 부분만 서버에서 담당하여 통지하고, 어그로 등 공격 관련 부분과 brain의 이동 목표 등을 서버에 알리는 방식으로 구현하기로 했다. 시간적 여유가 생기면 온전히 서버 기반으로 변경할 방법을 모색해봐야겠다.
--
REFERENCES:> The Last Rollback 프로젝트 repo
> The Last Rollback - Pathfinding Dedicated Server repo
728x90'TIL-sparta' 카테고리의 다른 글
스파르타) Node.js 5기 게임 서버 최종 프로젝트 (D-7) (0) 2024.08.20 스파르타) Node.js 5기 게임 서버 최종 프로젝트 (D-8) (0) 2024.08.20 스파르타) The Last Rollback (D-10, Node.js 게임 서버 최종 프로젝트) - DotRecast (4) (0) 2024.08.18 스파르타) The Last Rollback (D-11, Node.js 게임 서버 최종 프로젝트) - DotRecast (3) (0) 2024.08.16 스파르타) The Last Rollback (D-12, Node.js 게임 서버 최종 프로젝트) - DotRecast (2) (0) 2024.08.16