このプロジェクトについて

GoWorldは、マルチプレイヤーオンラインゲームの構築を目的とした、Golangで書かれたスケーラブルな分散型ゲームサーバーエンジンです。プレイヤー、モンスター、NPCをエンティティとして表現するエンティティフレームワークを特徴としています。同じスペース内のエンティティは、メソッド呼び出しや属性アクセスを介して直接対話できますが、異なるスペースのエンティティはRPCを介して通信します。 サーバーアーキテクチャは、ディスパッチャ、1つ以上のゲームプロセス、および1つ以上のゲートプロセスで構成されています。ゲートはクライアント接続とパケット送信を処理し、ゲームはエンティティを管理してゲームロジックを実行し、ディスパッチャはゲームとゲート間のパケットをルーティングします。重要な機能はホットスワップです。ゲームプロセスは、SIGHUPを送信し、-restoreパラメータで再起動することでリロードでき、プレイヤーに大きな混乱を与えることなくサーバー側ロジックを更新できます。 GoWorldは、TCP、KCP、WebSocketを含む複数の通信プロトコルをサポートし、クライアントとサーバー間のトラフィック圧縮と暗号化を提供します。サーバーのビルド、起動、停止、リロードのためのコマンドラインツール「goworld」が含まれています。リポジトリには、チャットルームやUnityベースのマルチプレイヤーシューティングゲームなどのデモが用意されており、クライアントはJavaScript(Cocos Creator)とC#(Unity)で提供されています。