0

私はAWSでホストする予定のKryonet(Java TCP/UDPネットワーキングライブラリ)を使用してオンラインのリアルタイムマルチプレイヤーモバイルゲームを作成しています。AWSで専用EC2インスタンスをどのように拡張するのですか?

アーキテクチャは次のとおりです。クライアントは、ログインや統計情報の表示などを可能にするセントラルログイン/アカウントサーバーに接続します。このビットは基本的にはREST APIであり、かなり標準的な方法で(あなたがどんなwebappでもそうです)。

しかし、プレイヤーが実際に試合をするときに、より興味深いビットが表示されます。このために、私は "マッチ"サーバー(EC2)の別のプールを持つ予定です。ログイン/アカウントサーバは2人のプレーヤをペアにし、クライアントに特定のマッチサーバのアドレスを送信します。プレイヤーはそのマッチサーバーに参加し、試合をホストします(おそらく5-10分持続します)。マッチサーバーは、ゲームのリアルタイムインスタンスを実行し、リアルタイムでUDPパケットを送受信するため、固定されている必要があります。各マッチサーバーはおそらく数百のマッチをホストすることができます。

私の質問は、これらのマッチサーバーをどのようにスケーリングするかについてです。私はスタートアップ時に中央サーバに自動登録し、何らかのタイプのキープを送信することを想定しています。私はこのすべてを自分で作ることができました。しかし、私はAWSにこれすべてを私のためにできるツールやサービスがあるのだろうかと思っています。

+0

[Amazon GameLift](https://aws.amazon.com/gamelift/)をご覧ください。 –

+0

残念ながら、GameLiftはJavaベースのサーバーをサポートしていないようです。 UnityやUnrealではなく、LibgdxとKryonetの組み合わせを使用する予定です。 – Jambo

答えて

0

さて、AWSのドキュメントをもう少し読んだことがあります。

2人のプレーヤーがペアになるたびに、キューに追加されます。マッチプレイサーバーの1つでスポットが空いているときにキューから取り出されます。このキューのサイズがあるしきい値を超えると、EC2の数がスケーリングされます。これは基本的にAWSのすべての設定で行うことができます:http://docs.aws.amazon.com/autoscaling/latest/userguide/as-using-sqs-queue.html

トリッキービットは、インスタンスを縮小します。通常のREST APIとは異なり、サーバーをオフにすることはできません。サーバーは現在のすべてのゲームを終了する必要があります。 AWSにはこれもライフサイクルフックでカバーされているようです。

関連する問題