おはこんばんにちは!ギルガメです!
前回はサーバーサイドについてお話しましたが、今回はギルガメが開発に使った「Colyseus」について詳しく説明したいと思います。Colyseusのオフィシャルサイトは英語なので、わからないとこもあると思いますが、頑張ります。
ギルガメのリアルタイム通信のテストの動画になります。
まず簡単にColyseusとは何なのか
Colyseusは、Node.js用の信頼できるマルチプレイヤーゲームサーバーです。ネットワーキングを気にする代わりに、ゲームプレイに集中することができます。
このフレームワークの使命は、JavaScriptで独自のマルチプレイヤーゲームを作成するための最も簡単なソリューションになることです。
Colyseusが提供するものについてです。
- WebSocketベースの通信
- サーバー側とクライアント側のシンプルなAPI。
- サーバーとクライアント間の自動状態同期。
- ゲームセッションへのマッチメイキングクライアント
- 垂直または水平にスケーリング
ギルガメが実装したかったものはWebGLでのリアルタイム通信だったので、WebSocketベースの通信が望ましかったので、こちらにしました。
Colyseusでは簡単にルームの作成ができるので、マッチング機能も実装もすぐにできます。また途中で回線が切れても再開できる機能もそろっているのですごく助かります。
オートスケーリング機能もついているので、ユーザーが増えても大丈夫なところもすごくいい。この機能を使うならAWSに移行した方がいいかな・・
またColyseusは信頼できるゲームサーバーの考え方は非常にシンプルです。
サーバーは、位置、速度、衝突など、ゲームに関連するすべてのデータを処理する必要があります。
マルチプレイヤーゲームの作成は、ゲームプレイが複数の遅延を考慮する必要があるため、通常はトリッキーです。他のクライアントはサーバーにデータを送信し、サーバーはすべてのクライアントにデータを送信します。
Colyseusでの「マルチプレイヤーゲームループ」は次のようになります。
- クライアントはサーバーにメッセージを送信し、その状態の変更を要求します。
- 入力は、ルームハンドラーによって検証される必要があります。
- 部屋の状態が更新されます。
- すべてのクライアントは最新バージョンのゲーム状態を受け取ります。
- ゲームの状態の視覚的表現が更新されます
興味のある方はオフィシャルサイトを見てみてください。
https://docs.colyseus.io/
実装にはNodeJSやTypeScriptの知識が必要になりますが、今世界でも人気のある言語なので覚えてみるのもいいかもしれません。ギルガメはものすごく気に入っています。