歩きスマホ対策をテーマにゲームを作った関係上、当初はポケモンGOと同じく、リアルタイムで捕獲対象を見つけてそのままバトルして、勝った場合リアルタイムで対象を捕縛し、仲間に加える(加えない場合もあり)といったシステムを見直し、プレイヤーが冒険をする対象を指名し、その者がプレイヤーに代わりバックグラウンドでリアルタイムで捕獲対象を見つけてそのままバトルし、勝った場合は捕縛し仲間に加えるというシステムに変更しました。
これなら歩きながら画面を見て、さらに操作し、面白ければ夢中になって事故や事件に巻き込まれてしまうのを防げるだろうと考察しましたが、このバックグラウンドでリアルタイムでという点が課題となり、Android版ではバックグラウンドで動くものは本体アプリとは違うネイティブアプリを作り、本体アプリを終了させると同時に起動させる事で解決させました。
バックグラウンドで動くアプリというと「おまけ」みたいな印象をうけると思いますが、本来はこちらがメインで、本体アプリはユーザーインターフェースという構成です。アプリで「冒険に送り出す」をタップするとバックグラウンドで冒険がはじまり、プレイヤーが指名した者が、出会い、戦い、勝って仲間を得て、時には敗北し全てを失ってしまうのですが、バックグラウンドで冒険を続けるプレイヤーの指名した者はめげる事無く冒険を続けていきます。
アプリ本体は起動するとUnityのロゴが表示されるように統合開発環境のUnityを使っていますが、サーバー側はMySQL・PHP・HTML・Javascript、ネイティブアプリ(バックグラウンドで動かすアプリ)はJavaとそれぞれ開発言語が違い、意外に地味なアプリですが結構規模に見合わない運営をしています。
今回、iOS版の移植・調整に伴い課題になっているのはiPhoneのバックグラウンドで動かすネイティブアプリです。言語はSwift(スウィフト)です。Xcodeをいじったことのある人なら「えっ?Objective-Cは?」って思われる方もいるとは思いますが最近のiOSネイティブ開発は、Objective-C→Swiftが主流となっています。
なのでAndroid版のバージョンアップとバグの修正が済んだ今後はiOS版リリースへの調整作業に移行し、Unityでのビルドを行いアプリの細かい動作チェック(Android版では8/5のバージョンアップ後に一部のOSバージョンではログインできない現象が起きてしまいました)を行い、問題がない事が確認できたらSwiftにてネイティブアプリを構築・調整していこうと考えています。
プレイヤーの方は気が付いている方もいらっしゃると思うのですが、意外にこのアプリはGPS通信を行うアプリの中ではバッテリー消費が少ないんです。バックグラウンドで動かしている事に加えて、GPSの通信間隔が他のアプリに比べて長いのでバッテリー消費を抑えています。
という事で本日からiOS版の調整作業に移りたいを行います。確認が済んだら次へ進みますのでまた報告させていただきますね。