懸命に作業する AppShip3000 開発チーム。はんだ付けも楽しい作業です!
動作の仕組み
AppShip3000 は、3 人で協力してロケットを飛ばすという簡単なゲームです。上に向かって飛ぶロケットは、すぐに燃料切れになってしまいます。プレーヤーは、そのロケットを協力して操作します。画面の上からは、隕石が次々と落ちてきます。その中でロケットを上昇させるには、Firebase や Google Cloud に関するクイズに答えなければなりません。
難しいのは、プレーヤーには問題か一部の選択肢しか見えないことです。プレーヤーは、時間切れになる前に、話し合って(叫び合って)正解を見つけなければなりません。同じように、他のプレーヤーよりも早く隕石が見えるプレーヤーがいるので、どこに隕石が落ちてくるかを叫び、チーム全員でロケットを操作しなければなりません。燃料を失わずに隕石との衝突を避けるには、プレーヤー全員が同じ方向にジョイスティックを動かす必要があります。
Firebase を使った開発
では、Firebase がどのように AppShip3000 を支えているのかを見てみましょう。まず、ログインには
Firebase Authentication が利用されています。プレーヤーはスマートフォンでプログレッシブ ウェブアプリ(PWA)を開き、自分の Google アカウントでログインします。すると、
Cloud Function の Authentication トリガーによってアカウントが作成され、カスタムのボタン操作(起動コード)が生成されます。この起動コードによって、ゲームのプレイ中、アカウントとコントローラが関連付けられ、ゲームの終了時には、すべての状態が自動的にアカウントに関連付けられます。
Google I/O 2017 で公開された完成品
ゲームが終わると、
Realtime Database を使って PWA のスコアボードを即座に更新します。I/O では、スコアボードが大画面で表示されていました。Realtime Database は、ゲーム中のクイズの管理にも利用されています。そのため、クイズはその場で更新でき、あるゲームが終わったあとに追加されたクイズは、次のゲームで本番環境に反映されます。
さらに、ゲームが終わるごとにロケットの飛行経路のイメージを生成し、
Cloud Storage for Firebase に格納しています。この操作で別の Cloud Function が呼び出され、
Firebase Cloud Messaging でプレーヤーに通知されます。この通知によって、プレーヤーは記念になるイメージを友だちと共有できます。
スタートガイド
AppShip3000 の開発はとても楽しい経験でした。ほとんどのインフラストラクチャに Firebase を使ったので、他にはない(と思われる)ゲームの開発に集中でき、皆さんに楽しんでいただくことができました。Firebase を使ってゲームを作ってみたい方は、
C++ および Unity のドキュメントをご覧ください。AppShip3000 のデータ パイプラインの管理にどのように Firebase や Google Cloud が使われていたかを詳しく知りたい方は、
I/O のセッションをご覧ください。皆さんのゲームのリリースを楽しみにしています。
Reviewed by
Khanh LeViet - Developer Relations Team