ワールドスコアランキング機能をつけたった(タピタピタピオカ)
Unityで制作してるタピタピタピオカの次期バージョンでは世界中の人にプレイしてもらって、自分の出したハイスコアがどれくらいの位置にランキングされてるのか見れたらいいな、と思ってワールドスコアランキング機能を追加しました。
ちなみに以前はサーバーがなかったんで、Goggleのスプレッドシートを使ってワールドスコアランキングを実装してフィジビリティを確認したんですが、今回はレンタルサーバーがあるので、まあいい機会かなと思ってサーバーサイドのソフトウェアもイチから作ってみました。
【やり方】
①UnityでHttpリクエストのGETメソッドでスコア、名前をサーバーに送る。
例えば
https://uphydn.net/tapioca/php/xxxxx.php?score=100&name=hogehoge
みたいな。
②サーバー上のプログラム(xxxx.php)はリクエストを受信して、スコアと名前を受け取って、ファイルに保存する。
この時にデータはスコア順にソートしておく。
③サーバーはレスポンスとしてランキング200位までのスコアと名前のリスト(ていうか文字列のストリーム(独自))をクライアント(Unity側の端末)に送り返す。
④Unityがサーバーからのレスポンスを受け取ったら、それをリストにして画面に表示する。
とまあ、かいつまんで言うとこんな感じです。
結論として上手く実装出来て、動作確認も出来ました。
今回はサーバーサイドで手っ取り早くPHPを使ったんですが、PHPは超初心者なのでちょっとマナーとか検証とかいろいろと時間が掛かったワケなんですが...。
あとデータベースも使用してないので、世界中から同時にリクエストがあった場合の排他制御が上手く出来てるのかどうかも心配です。
(一応ファイルアクセス時にはロックを掛けるようにして、2台同時アクセスは検証しました)
ゲーム自体はそれほどダウンロードされてないのでそんなアクセスを気にする必要はないんじゃないかって?
うっさいわ!!!
まあ、ちょっと自己満足的な仕様ですが、これでワールドスコアランキング機能をつけたバージョンを実際にリリースして、データが壊れないかどうかを運用して確認してみたいと思います。
データが破壊されてもすぐにまたバージョンアップしたらいいかな、と気楽に考えてます!
FMEA診断上では致命的な欠陥にはならないですし♪