프로젝트 소개

GoWorld는 Golang으로 작성된 확장 가능한 분산 게임 서버 엔진으로, 멀티플레이어 온라인 게임 구축을 위해 설계되었습니다. 플레이어, 몬스터, NPC가 엔티티로 표현되는 엔티티 프레임워크를 갖추고 있습니다. 같은 공간 내의 엔티티는 메서드 호출이나 속성 접근을 통해 직접 상호작용할 수 있으며, 다른 공간의 엔티티는 RPC를 통해 통신합니다. 서버 아키텍처는 디스패처, 하나 이상의 게임 프로세스, 하나 이상의 게이트 프로세스로 구성됩니다. 게이트는 클라이언트 연결과 패킷 전송을 처리하고, 게임은 엔티티를 관리하고 게임 로직을 실행하며, 디스패처는 게임과 게이트 간의 패킷을 라우팅합니다. 주요 기능은 핫 스와핑입니다. 게임 프로세스는 SIGHUP을 보내고 -restore 매개변수로 재시작하여 리로드할 수 있어, 플레이어에게 큰 중단 없이 서버 측 로직을 업데이트할 수 있습니다. GoWorld는 TCP, KCP, WebSocket을 포함한 여러 통신 프로토콜을 지원하며, 클라이언트와 서버 간 트래픽 압축 및 암호화를 제공합니다. 서버 구축, 시작, 중지, 리로드를 위한 명령줄 도구 'goworld'를 포함합니다. 저장소는 채팅방과 Unity 기반 멀티플레이어 슈팅 게임과 같은 데모를 제공하며, 클라이언트는 JavaScript(Cocos Creator)와 C#(Unity)로 작성되었습니다.