Blog

制作現場の日常

え!!対戦ゲームのサーバを!? JavaScript数行だけで!!?

いらっしゃいませ、プログラマの山田と申します。

サーバサイドに携わることの多い私ですが、AWS(Amazon Web Service)ともっと仲良くなりたいと思う今日この頃です。

そんなところで表題につきまして。

オンラインでリアルタイム対戦できるゲームをつくりたい!
それならサーバが必要!
でもコードはあまり沢山書きたくないッ!

そんなあなた(私)に!オススメの商品はコチラ!!

↓↓↓

 

ということで、今回はAmazon GameLiftを触ってみようと思います!

Amazon GameLift
https://aws.amazon.com/jp/gamelift/

Amazon GameLiftとはなんぞや?

数あるAWS提供サービスの中で、ゲームサーバのホスティングに特化したものになります。低レイテンシが期待されるタイプのゲームにも適し、数百万人規模のユーザの接続にも耐えうるスケーリングが可能なすごいヤツです。

2種類のホスティング方法がありますが、今回はより簡単に使用できる「リアルタイムサーバ」を使っていきます。

GameLiftリアルタイムサーバ

  •  昨年登場した新機能
  •  Node.jsベースのフレームワークを組込済
  •  数行のJavaScriptコードを書いてデプロイすれば、すぐ使える

 

説明はほどほどに、早速やってみます。
こちらはUnityで作成したゲームのようなもの。

たのしいTKJ

叩いてかぶってジャンケンしそうなやつ

押したキーに応じて画面に絵柄を表示するだけの、とても慎ましやかなゲームです。

ゲームなんです

しかしコチラ、持ち前のシンプルさ故に対戦機能がありません。
このままでは、壁を相手にジャンケンする大変痛いヤツになってしまいます。

そんなときこそGameLiftリアルタイムサーバの出番ですね。オンラインリアルタイム対戦を実現していきましょう。

スクリプトファイルを圧縮してアップロード

サーバのデプロイ手順は、AWSコンソールからスクリプトファイルをアップロードすればほぼ完了。
あとはUnity側をアレコレして、ビルドして別端末と同時に操作すれば……?

 

こんな感じ

サーバを経由し、相手側端末の操作を即座に画面に反映することが可能となりました。これでもう寂しくありませんね!


というわけで、今回はAmazon GameLiftで簡単なゲームサーバを用意してみました。

ちょっと途中を端折りすぎた感は否めませんが、「だいたい100行未満のJavaScriptファイル1つ」だけでリアルタイム対戦ができるサーバを実装できています
実際に運用するためには、セキュリティ面など仕様に応じたカスタムが都度必要となるため、ここまで簡単にはいきませんが……
とはいえこういった裏側部分のハードルをとことん下げてくれるAWSには、いつも助けられています。

このような機能を必要とするプロジェクトの開発を行う際に採用を検討できるよう、引き続き情報収集を続けたいと思います。
そして今後もう二度と、右手(Mac) と 左手(Windows)で一人ジャンケンをするようなことはないと願いたいものです。

次の記事へ