進捗
iOS版でのオンラインランキングを実装した。実装したと言っても結論としてはAppleのゲームセンター側のリーダーボードを表示し、自作の画面は使用しない仕様とした。
また、iOS版のアプリをテスト配信するためApple Store Connectへのアップロードのためにアプリアイコンを作成する必要があったので、この際だと思ってついでに作成した。
UnityでAppleゲームセンターのユーザプロフィールが取得できない問題
iOS版で自作のリーダーボードは表示しない仕様としたは理由としては、Unityのライブラリに不具合があり、自力解決するためには工数がかかりそうだったため。リーダーボードの見た目にそこまでの熱意は持っているわけでもないので、今回はおとなしくデフォルトのUIを表示して作業完了とした。
不具合の内容について、事象としてはゲームセンターに登録されているユーザの情報を取得するAPI(具体的に書くとSocialクラスのLoadUsersメソッド)を叩くと結果が必ず空になってしまうという内容だった。この不具合については結構長い間対応されていないようなので、ゲームセンターを利用するアプリでわざわざ自作の画面で表示する人自体あまりいないのかもしれない。
↓今回確認した不具合の報告スレッド
https://forum.unity.com/threads/unity-social-loadusers-problem-on-game-center-ios.1126079/
画面は作成しなくとも、Apple Store Connectへのアプリおよびリーダーボードの追加とUnity側での紐づけ設定(これはEasy MobileにリーダーボードのIDを設定するだけ)は必要なので、この作業を行い、自分のスコアと順位が表示されることを確認した。
アイコン作成についての備忘録
今回iOS版のリーダーボードを作成するにあたりApple Store Connectにアプリを追加した。実際にはバンドルIDの登録と画面上でのアプリ追加だけ済めばApple Store Connect側でリーダーボードの追加も行えるが、作業をしているときは勘違いしており、ビルドしたアプリケーション本体のアップロードをし始めた。この時、ビルド完了後のアップロード途中でアプリアイコンが設定されていないためにエラーが発生したことが今回アプリアイコンを作成しだした理由となる。
これまでにもお試しでアプリをいくつかリリースしたが真面目にアイコンを作ったことはほぼなかったので、改めてアイコンの作成について調べつつ作業した。今回やったことを備忘録として記載。
1. 見本を探す
とにかくデザインセンスに自信がないので他のアプリのデザインを参考にした。この際iconDropというサイトを利用し見本となりそうなアプリを探した。https対応していなかったりTwitterの更新が数年止まってたりと若干怪しさはある(ので直リンクは避ける)が、いろいろなアプリのアイコンを一覧で見れるのは便利。
2. 素材を決める
アプリアイコンに入れる素材を決める。おおむねなんとなくで決めてしまったが、いろいろ動画を見て一応以下の方針で素材を決めた。
- なるべくシンプルに。被写体は1点だけにする。ごちゃつかせない。
- アイコンが小さくなると文字も小さくなり読めないのでアプリのタイトル等は入れない。
- 背景は青っぽい方がダウンロードされやすいらしいので困ったら青くしとく。
3. アイコンを作成する
アイコンの作成には別件でWebページ作成用に買っておいたSketchを利用した。普通のお絵かきソフト等でアイコンを作成・加工するといろいろなサイズのアイコンを作らなければならずかなり手間がかかるが、Sketchのようなアプリアイコンの作成をサポートしているツールだと、テンプレートが用意されており、同じデザインでサイズだけ変えて一括出力できるのでとても便利。今後作る際にもこの方法でやろうと思う。
残作業
- 実績機能の試作
- クリア画面の共有機能
- ゲームの説明シーン(チュートリアル)作成
- 音声をつける
- 広告の実装
- プライバシーポリシー作成
- プロモーションの作成
- リリース
オンラインランキング機能についてはひと段落したので実績機能の試作を進める。
その他所感
オンラインランキング機能について、やり始めた当初は意外と少ない工数で実現できそうだと思っていたが、EasyMobileでの流儀(AndroidならGPGSを使う。iOSならゲームセンターを使う。)に従った上で、画面を自作するつもりでやると今回のようなライブラリに起因する不具合に当たることが多かったので今後はやり方を変えて、画面を作るならサーバサイドとのやり取りも自作するつもりで作る。GPGS or ゲームセンターを使うなら画面は自分で作らない。というようにした方が躓くポイントが少なくなって良いと思った。Androidで発生した不具合にしても今回iOSで発生した不具合にしても年単位で対応がなされていない時点で、ベンダー側の優先度も低そうなので特に修正されない前提で今後は仕様を決めていきたいと思う。