ゲーム作り

カジュアルシューティング制作記 その5(ハイスコアランキング機能)

ハイスコアランキングを見る

ハイスコアランキングが欲しい!

こねこシューターズは色々な楽しみ方ができるのですが、1番のやり込み要素となるのはスコアアタックです。
少ないミスで効率良くスピーディーに敵を倒し、運要素になりますができるだけアイテムをゲットしてパワーアップやプレイ時間延長に挑むことでハイスコアを狙えます。

iOS版のリリースに続いてAndroid版のリリースを進めていましたが、このままだとiOSとAndroidで別々のランキング機能になってしまうのです。
なぜなら、iOS版のランキング機能はiOSのGameCenterについている機能を利用しているので。

せっかくならiOSとAndroidの区別なく一緒にランキングを競いたい、そのためにはいわゆる「マルチプラットフォームリーダーボード」(端末の区別なくランキング機能を利用できるもの)が必要です。

Unityのアセットやフリーのものがあるにはあるけど…

こういうランキング機能の需要は多いみたいで実際いろいろなアプリにこの機能がついていますよね。
なので、多くの方が作り方を紹介してくれていたりフリーで実装するためのパーツを配ってくれていたりします。
他の方が提供してくださっているものの中に「これがいいな」と思うものがあったのですが、思うように実装できなかったりFirebase等特定のサーバーに依存したりで痒いところに手が届かない状態でした。
自前でサーバーを持っているのでできれば特殊性のある他のサーバーでは動かしたくないんです…

私、アプリ開発は初心者ですがWEBシステム等はバリバリ作るタイプの人間なのです。
なので、いろいろ探すより自前のサーバーにその機能を作っちゃおうということで数時間で作りました。
ただし、数時間でできたのはサーバー側だけです…

サーバー側はPHP(Laravel) + MySQL環境があれば動くようにサーバー独自の機能などには依存せずにシンプルな構成にしました。
Laravelが便利すぎてほんの小さなシステムでもとりあえずLaravelを使うようになっちゃいました。

問題はクライアント(アプリ)とサーバーの連携です。

サーバー側はREST APIっぽく作っているので「URLを叩けばJSON形式でデータが取得できる」というものになっています。
これをUnityで作ったアプリはどのように投げてどのように応答を待ってどのように受け取ってどのように解釈するか、これが自分にとっては全く未知の領域でした。

Unity上にテストツールを作って試行錯誤した結果、割と簡単に実装できたのでデータの改竄対策(チート対策)を入れ込んでばっちり完成しました。

最終的には自分のオリジナルアセットとしてインポートしたら他のアプリでも簡単に使えるっていうようにしたかったのですが、実装には手のかかる部分が少しあってお手軽流用という感じには行かないのですが他のアプリでも使えるようになっています。
将来的には、こういうスコアランキング機能を欲しがっている人が手軽に使えるよう提供したいとは思っているのですが今は自分の作業が立て込んでいるので自分の作業優先で保留とします。

今後つけたい機能

スコアランキング機能はWEBベースで作っているのでURLを叩けばWEBで見られるようになっています。

https://ranking.koneko-wakusei.com/

構想があったけど今回見送った機能として「スコアカード」というものがあります。
自分用のURLを叩けば自分のユーザー名とスコアと日時など自分のデータだけがカードのような見た目で表示される機能です。

↑こういうやつ

アプリ自体が盛り上がったときにこういう機能があれば自分のスコアカードをSNSに共有してもらうなどでもっともっと盛り上がって、興味を持った人が新規に遊んでくれるという連鎖の輪ができるかなと思いました。

ただ、何度も言っているようにこねこシューターズはさっぱりダウンロード数が伸びないので一旦見送りで、Android対応に集中することにしました。

Ver1.3からスコアランキング機能に対応済み!

このブログなんですけど書きかけのまま公開を忘れておりまして11/17時点でアンドロイド対応も終わってiOS版にもスコアランキング機能が実装されています。

すでにこねこシューターズをインストールして遊んでくださっている方はVer1.3にバージョンアップしてくださればスコアランキングも利用できるようになっています。

もっと盛り上がってみんなでスコア競争できたらいいな!

詳しくは↓

https://app.koneko-wakusei.com/koneko-shooters/

こねこ星人