-
스파르타) The Last Rollback (D-28, Node.js 게임 서버 최종 프로젝트)TIL-sparta 2024. 7. 31. 00:40
> 과제 진행 간 완료한 사항 및 문제점과 해결 과정을 정리해보았다.학습 키워드: Node.js, NavMesh, Unity, Pathing, Bull queue
1. 과제 진행 사항
1) 매치 대기열 중복 제거 작업 및 Unity 클라이언트 수정:
매칭 큐 진입을 주점 포탈에 접근하는 것으로 진행하는 구조로 되어있는데, 포탈 밖으로 이동했다가 다시 접근하면 패킷을 다시 보내게 되는 구조여서 여러 던전 queue에 동시에 존재하게 될 수 있는 문제가 있었다. 또한 유저가 대기열에 존재하는 채로 게임을 종료하는 케이스도 있을 수 있어서 Bull queue를 통해 유저를 대기열에서 제거하는 기능을 추가했다.
processor 함수들을 비동기로 처리해야 하나 싶어서 바꿔봤는데, 비동기 processor가 작업 종료를 기다리지 않고 다음 작업을 실행하기 때문에 dequeue 호출 후 enqueue를 했을 때 enqueue가 먼저 완료될 수 있는 문제가 있을 수 있어서 다시 동기 함수로 정의했다.
2. 과제 진행 간 문제점
1) 비효율적인 서버 구조를 개선할 방법 고민:
기존 기획으로는 통신 구조를 호스트 기반 통신에 C/S 구조를 섞은 super peer 방식으로 생각하고 설계했는데, 막상 구현하려고 보니 Unity 클라이언트 끼리의 P2P를 구현해야하는 점에서 Node.js 서버 구축 작업이 줄어들게 되는 문제가 있게 됐다. 그래서 온전히 서버 주도로 해결하려고 보니 또 몬스터들의 pathing 이 Unity의 NavMesh로 이루어지고 있어서 서버가 검증하기 어려워지는 문제가 생겼다.
일단 현재 과정이 Node.js 게임 서버기 때문에 호스트 구조는 폐기하는 것으로 가닥이 잡혔고, 다음 회의에서 NavMesh와 몬스터 Pathing 관련 부분을 어떻게 해결할 것인지를 논의하기로 했다. 짧게 알아본 바로는 NavMesh를 Node.js 서버에서 사용하게 해주는 라이브러리가 있어서 이 라이브러리를 사용해도 될 지에 대한 부분을 위주로 회의를 진행하게 될 것 같다. Unity에서의 NavMesh export와 Node.js에서의 import를 다룬 예제도 회의간에 참고할 예정이다.
--
REFERENCES:> 프로젝트 repo
728x90'TIL-sparta' 카테고리의 다른 글
스파르타) The Last Rollback (D-26, Node.js 게임 서버 최종 프로젝트) (0) 2024.08.01 스파르타) The Last Rollback (D-27, Node.js 게임 서버 최종 프로젝트) (0) 2024.07.31 스파르타) The Last Rollback (D-29, Node.js 게임 서버 최종 프로젝트) (0) 2024.07.29 [TIL] TypeScript 배우기 (짧) - 1 (0) 2024.07.28 LeetCode) 1211. Queries Quality and Percentage 풀이 (0) 2024.07.28