同僚の結婚式の余興で mBaaS + Unity を使って、リアルタイム協力ゲームを作ってみました。 参加者各自のスマートフォンからメッセージと写真を送ると、会場スクリーン上に表示され、 一定数表示されるとゲームクリアという非常にシンプルかつ簡単ゲームです。
シンプルなゲームであれば、mBaaSの機能をフルに使う事によって、 高速にゲームを作る事ができますので、是非ご活用頂ければと思います。
はじめに
このゲームの特徴は下記の通りですが、これらは全てmBaaSを使って実現しています。
- mBaaSのデータストア+ファイルストアを利用することで、メッセージや画像をクラウド上に保存できます。
- メッセージの書き込み順序を保障するためにスクリプトも利用、スクリプト経由でデータストアに書き込みを行っています。
急遽、ゲームに対してバックエンド機能が必要がとなれば、mBaaSを利用すると高速で開発することが可能です。
ゲーム概要
ゲーム概要についてはこちらの記事をご参考ください。
構成イメージ
当ゲームの構成イメージと流れとしては下記の通りです。 非常にシンプルに仕上がっていると思います。
- 来場者が手持ちのスマートフォンで、スマホ側のwebアプリからメッセージと写真をアップします。
- アップしたメッセージと写真はそれぞれデータストアとファイルストアに保存されます。
- スクリーン側のアプリからデータストアの更新を検知し、更新があればメッセージと写真を取得します。
- 最後にスクリーン側のアプリにメッセージと画像を表示します。
この記事ではスクリーン側のアプリ(Unityアプリ)について解説したいと思います。 スマホ側のWebアプリについては下記の記事を参考してみてください。 blog.mbaas.nifcloud.com
ダウンロード
ソースコードは下記からCloneして利用可能です。 詳細についてはリポジトリのREADMEをご覧ください。
Unityアプリについて
GitHubからCloneすると、Unityパッケージとなっていますので、Unityフォルダーをインポートするだけで そのままプロジェクトとして利用できます。
このプロジェクトで利用したコードの一部を解説したいと思います。
データストアの更新をUnity側から検知する方法について
データストアに保存しているデータを取得します。
query.AddAscendingOrder("createDate");
でデータストアの作成日時の降順で取得するよう設定します。
次に query.Limit = 1000;
でクエリを取得する件数を1000件とします(デフォルトは100件)。
query.FindAsync
関数を使ってデータストアからデータを取得します。
データの取得に成功すると if (dataCount == 0 || dataCount != objList.Count)
でデータに追加があるかどうかを判別し、データがない場合は処理を行いません。
さらに、追加のレコードがあった場合にそれぞれ _name, _message, _photonName
の変数にセットし、
レコード毎にパネルをめくる処理を行っています。
//Scoreフィールドの降順でデータを取得 query.AddAscendingOrder("createDate"); query.Limit = 1000; //データストアでの検索を行う query.FindAsync((List<NCMBObject> objList, NCMBException e) => { if (e != null) { //検索失敗時の処理 } else { if (dataCount == 0 || dataCount != objList.Count) { for(int i = dataCount; i < objList.Count; i++) { // mBaaSから取得 string _name = objList[i]["name"] as string; string _message = objList[i]["message"] as string; string _photoName = objList[i]["photoName"] as string; // パネルをめくる StartCoroutine(CurlPannel(_name, _message, _photoName)); } // データカウント dataCount = objList.Count; } } });
その他のコードについてはGitHubのプロジェクトをご覧ください。 github.com
このようにシンプルなゲームであれば、mBaaSの機能をフルに使う事によって、 高速にゲームを作る事ができますので、是非ご活用頂ければと思います。
さいごに
mBaaSにはタカノ君という非公式マスコットキャラクターがいます。 このゲームではスピナー(インジケーター)用にgifを製作したので、是非ご活用ください。