こんにちは、ニフティクラウド mobile backend エヴァンジェリストの一條です。
ゲームアプリ開発者にニフティクラウド mobile backend(以下、mobile backend)の利用事例をお聞きするこのコーナー。(過去のインタビューはこちら)
先月から、mobile backendを使ったアプリの宣伝コーナーとして「Powerd by mobile backend」をスタートしまして、今後はこちらにご登録いただいたアプリをピックアップしてメールインタビューを行っていきたい次第です。
というわけで今回は『早押しクイズ はやくい!』の作者Tsubasa Itoh(@twobartha)さんにお話を伺いました。
Tsubasaさん近影
はじめにゲーム概要、特徴をご紹介いただければと思います
(概要・特徴) 「早押しクイズ はやくい!」は、その名のとおり、テレビのクイズ番組などでおなじみの早押しクイズができるゲームアプリです。
画面に少しずつ表示されていく問題文を読み(または読み上げられていく問題文を聞き)、分かったところでボタンを押して解答権を得て、正解を答える、というスタイルのクイズを遊ぶことができます。
6段階の強さのコンピューターを相手に遊ぶ1人用モード、1つの端末を使って2~4人で遊ぶローカル対戦モード、同時に接続している他のユーザーと最大4人対戦ができるネット対戦モードがあります。
派手な演出やストーリーはなく、気軽に早押しクイズを楽しめるアプリ、というスタンスで作っています。
『早押しクイズ はやくい!』
「早押しクイズ」という遊びには、その名の通り「早く押す」という要素があります。答えが分かっていても、押すのが相手より少しでも遅かったら解答権が得られません。このため、早押しクイズで強い人に勝つためには、知識量のほかに、いかに早く、答えが導き出せる限りで最速のポイントで押せるかが重要なポイントになります。
「はやくい!」では、ネット対戦でもローカル対戦でも、答え合わせの際に、解答権者が問題文のどこまで読まれた時点でボタンを押したかがスラッシュ記号(「/」)で明示され、どのポイントで押されたのかが分かりやすくなっています。
また、1人用モードについては、問題データにいわゆる「確定ポイント」(競技クイズなどで使われる用語で、問題文中でそこまで読まれれば答えが確定するといえる場所のこと)の概念を導入することで、コンピュータープレイヤーによる押し方に説得力を持たせようとしています。
自作の問題を出題させることもでき、早押しクイズが好きな方がクイズの練習をするのにも使えます。
本作の開発環境と、併用している他のサービスがあればお教えください
Android版はJava、iOS版は主にSwiftで書いています。開発を始めた頃はiOS端末もmacも持っていなかったため、特にクロスプラットフォームなど考えずに作り始めてしまった、といったかたちです。
NCMB以外にサーバー側では、Google Play Game ServicesとMicrosoft Azureを利用しています。 主に前者は実績とネット対戦、後者はマッチングと掲示板のような処理に使い、NCMBはこれを補完するかたちで利用しています。
mobile backendをお選びいただいた理由は
昨年、iOSアプリのHTTPS接続が必須になるということで、従来使っていたHTTPSの使えないレンタルサーバーから別のサービスへの乗り換えを検討しました。
その際、個人開発ゲームでの採用実績があり、導入が簡単だという話題をちらちら見聞きしていたNCMBを触ってみることにしました。
日本の会社によるサービスでドキュメントやコミュニティが充実していそうだったことや、昔NIFTY-Serveを使っていたためニフティさんには愛着があった、というのも理由の一部です。
実際に少し触ってみて、導入も楽で、さしあたりBasic(無料プラン)の範囲で十分使えそうだということで導入を決めました。現在のところBasicプランで運営できています。
「データストア」はどのようにご利用いただいていますか?
クイズの問題データの配信状況、アプリの最新バージョンやサーバーの稼働状況などの情報をアプリ側に伝えるために利用しています。
対戦のマッチングの処理自体は別サービス(Microsoft AzureとGoogle Play Game Services)で行い、データストアはマッチングサーバーを利用できるかどうか(アプリのバージョンが条件を満たしているか、サーバー側の準備ができているかなど)の情報を得るために利用しています。
「ファイルストア」はどのようにご利用いただいていますか?
ファイルストアにクイズの問題データを置いて、問題データ更新の際にそちらからダウンロードするようにしています。
現在は使っていない機能のうち、今後使いたい機能はありますか?
会員管理機能とACL機能です。自前できちんと管理しようとするとコストが大きそうで会員管理が必要になる機能は諦めていたのですが、mobile backendでできるならいろいろ実装できそうかなと思っています。
初めて導入した際に分かりにくいところ、詰まったところはありましたか?
Android版は特に詰まるところなく、カンタンに導入できたと思います。 iOS版については、、Swiftでの実装のしかたを調べるのに少々手間取ったような記憶があります。
筆者補足:現在ではSwift3に対応したサンプルを充実させています。 http://qiita.com/natsumo/items/57d3a4d9be16b0490965
mobile backend使って実現できたゲームシステムで、ほかの開発者さんにお勧めしたいものはありますか?
まだまだ十分につかいこなせていませんが、適宜更新するようなデータをファイルストア+データストアで配信すると、更新作業が非常に楽かつ安心でオススメです。
現在のアプリのアピールや、次回作の宣伝等ありましたらお教えください。
「はやくい!」は3年前、当時使っていた端末を基準に作りはじめたアプリですので、多少古い端末でもストレスなく遊べると思います。 クイズ番組が好きな方、競技クイズが好きな方、ぜひ一度遊んでみてください。
今回は各OSで異なる開発環境(Swift、Java)かつMicrosoft Azureとの併用、という珍しいパターンでした。 mobile backendはリアルタイム対戦ゲームは苦手ですが、こうした他のサービスと組み合わせての利用ももちろん可能です。
特に今回は、「サーバーの状態を受け取るためにデータストアを使う」という点がユニークに感じました。言い換えれば設定ファイル置き場のようにご利用いただいているわけですね。
逆にファイルストアは、UGC(ユーザージェネレイテッドコンテンツ)機能の充実のために利用されているということで、こちらも面白い使い方です。 以前ご紹介した自作サンプルでは、ユーザーが作成したステージデータをデータストアに保存する方法をとりました。場合によってはステージの配置情報をバイナリデータにしてしまってファイルストアに格納するやり方の方が、スクリプトからは扱いやすくなるかもしれません。
今後も「こんな使い方しているよ!」という事例がありましたら、ぜひ情報をお寄せいただければと思います!