ランキング作成時、整数のみで降順に制限されている時の対処法

これは私のゲームアマツールAPI利用時の経験談です。

ゲームアマツールAPIのスコアボードはポイントが降順(Ptの多い人が1位)
に設定されています。
この設定を昇順(Ptの少ない人が1位)にすることはできません

私が作っていたのはタイムアタック形式のもの。
つまり、早い順(経過時間が少ない人が1位)でした。
なので、スコアボードに反映させるためには、
オーバーフローしない巨大な数値(100000000とか)から、
経過時間を引いた数値を登録しようと考えました。
ですが、
そんな抜け穴を残したまま作りたくはありませんでした。

そこで、思いついたのが、
スコアを負の数にすることでした。
すべてのスコアを負の数にすれば、
Ptの順番は反転して、少ない順に並んでくれます。
例えば5秒でクリアした人は「-5Pt」というスコア
10秒の人は「-10Pt」
これなら降順でも順位に狂いは生じません。

すべてのスコアを負の数にすることは簡単でした。
結果の値に「-1」をかける計算を入れるだけだったので。
スコアボードの配列の中にはマイナスの値が出てしまうので、
更に、ゲームアツマールAPIのスコアボードは小数点以下が無いので、
最終スコアに「-1000」をかけることで、小数点以下のミリ秒単位で
スコアボードに登録しました。

逆に、画面に表示する際は「-1000」で割った数値に”ミリ秒”という
文字列を追加して、違和感が出ないようにしました。

もし、ゲームアツマールや、
整数のみに制限された環境で昇順にしたい方の
お役に立てればと思います。

いいなと思ったら応援しよう!