今日のネタは直近のねほりんぱほりんでやってた「元チーター」とのトークを観て思ったことを。(※今日のネタはかなりディープかつグレーです)
敵を即死させるチートのプログラムを作るという例え話でやってたこと、エミュレータというゲーム機の動作を再現するソフトウェアのチート機能でやってることとほぼ同じでした。
敵キャラのHPがプログラムのどこで使われているか探りを入れるために値を何度も検索すること、先人の検証などの結果から割り出したHPを最初の候補にすること、どれもチートコードを作るのに頻繁に使われる手法です。
一昔前で言えばプロアクションリプレイなんかがチートコードをゲームに流し込むソフトウェアに当たるのですが、そういうチートコードはHPなどの情報が入っている箱(変数)と場所(アドレス)を指定して中身(値)を流し込むわけで。
ただ、チートそのものが完全に違法かと言われるとそれはNOです。
オンラインゲームでのチートは「ゲームの外部に干渉する」ため完全にアウトですが、逆に言えば通信機能のないような「ゲームの外部に干渉しない」チートはギリギリセーフ圏内と言えます。
例えば「負けが確定している戦闘で勝ったらどうなるか?」「最強状態のチートと運の絡む要素で常に望ましい結果を出せるプレイヤーとが勝負したらどうなるか?」みたいな検証も兼ねたチートなんかは「白いチート」的なものでしょう。
実際そういう検証を行った動画もちらほらと見られます。
他にも通常のプレイでは出せないデバッグモードや没データを引っ張り出すチートなんかもありますね。
こういうチートはプログラミングでも役に立ちます。デバッグモードを通して画像なんかがちゃんと表示されたり不具合がないかをテストしたり、作りかけのプログラムに仮のデータを入力してどう動くかテストしたり。
プログラミングの話になると難しそうに聞こえるかもしれません。なので、学校の授業とテストで例えてみたいと思います。
授業はどこにどの情報が入っているかを知る場、テスト前に復習するのは授業で得た情報をアウトプットする練習、テストは実際に情報をアウトプットする一発勝負の場、カンニングは不正に情報をアウトプットする手段で、発覚したらペナルティ。
実際カンニングも英語ではCheatingと、チート+ingで不正行為の意味となります。
さて、チート=不正、悪というイメージがついていますが、使い方次第では面白いプレイを生み出すこともあります。
「チートバグ動画」「TAS」なんかで検索すると結構な数の面白い動画が出てくると思います。
グラフィックがめちゃくちゃになっていたり、極限まで最速クリアを目指した結果主人公が奇妙な動きをしながら高速移動したりetc...
前者はもちろん、後者も実はチートの応用で本来見えないはずの情報を見ながらプレイした結果だったりします。
ただ、どちらもチートとは別の危険性をはらんでいるのですが。それでもそういう動画が投稿され続けているのは「ゲームを作る側」が何も言わないだけで、お叱りの声が上がればアウトです。
長々と書きましたが、チートはいい物でも悪い物でもあります。
使う人と場所と状況、それらがチートの立場を変えるのです。
確実に言えるのは、「赤の他人を巻き込むチートは100%悪いチート」ですね。
自分一人で自己満足したり、仲間内でわざとめちゃくちゃな遊び方をしたりする分には問題ないでしょう。
ご利用は計画的に。利用する機会があるかはともかく。