読者です 読者をやめる 読者になる 読者になる

元派遣プログラマの自称技術系ブログです。雑記とか自作のオープンソースプロジェクトの話とか。
Javaとか組込とかできます。お仕事ください。

ジャパンスモウカップのチートランカー排除の方法を考えた

JRAのジャパンスモウカップ。簡単な画像認識だけで自動化できるので、ランキングがどう見てもツール使ったものばかりです。

で、実際にツールを組み立ててランクインできたので、逆にどうしたらツールを使ったランクインを防げるか考えてみます。

スモウカップのスコア管理方法

スモウカップには2つの点数記録があるようです。1つめは個人記録で点数上限なし。2つめは公開ランキングで256万点を超えるスコアを集計から除外するリミッターがついています。

公開ランキングには上限の256万点を超えたスコアは記録されませんが、プレイヤーが256万点以下を取れば、その都度記録が上書きされる仕組みでした。

256万点を超えた点数を取ると、ランキング画面遷移の時にエラーが発生してゲームが中断してしまいます。

この仕様は、青天井に最高得点を狙うツールプレイヤーの排除を狙った様な気もしますが、点数を調整できるツールを作れば上限丁度の点数がとれるので、ツール対策としては余り意味が有りませんでした。

ツールを使ったハイスコアの取り方

スモウカップで高得点を取るために必要なのは、画像認識を元にキーイベントの送信するゲーム操作の自動化ツールの作成、加点ルールの解析、点数上限値の算出です。

はじめはツールで自動化して青天井で点数を取れるようにしましたが、途中で点数上限があることが判り、それから加点ルールを解析して、点数上限丁度を取れるように調整していきました。

ツールの作成とリテイクで200回くらいはハッケヨーイFightした気がします。

ツールプレイヤーの特徴

ツールを使って高得点狙いのプレイをする場合、調整の過程で1度は「とんでもない点数」を取る特徴があります。

自動化したツールとはいえ1回でいきなりうまくはいきません。何十回も試して、パラメータを調整していきます。さらにランキングに載るためには出来るだけ高得点を狙う必要があるので、最適なパラメータを追い続ける過程で、どうしても1度は「とんでもない点数」を取ってしまいます。

この点数は手動では絶対に取れない点数なので、これを(サーバ側で)記録することで、一般プレイヤーとツールを切り分けることができるはずです。

スモウカップでチートランカーを排除するには?

ツールプレイヤーにありがちな異常な点数を元に、”個人記録に上限値を超えた異常な点数を持つされたプレイヤーは、それ以降、常にランキングから排除する。”という対策が考えられます。

ツールプレイヤーは調整の過程で異常な点数を踏みやすいので、抑止効果はあるはずです。

下の方からビビりながらジリジリ調べていく方法もありますが、上限値をOBするとランキングから記録その物が消えてしまうので、正確な上限値の推測は難しく、再度チャレンジするにはアカウント取り直しで時間的なコストも高くなります。

上限値を探すツールプレイヤー同士が競争してお互いに潰し合う効果も期待できます。

ただ、異常な点数の閾値はバレないようにしないといけません。現在のスモウカップはバレているので無駄かも。