「モノポリー」というゲームに似た基本的なゲームを作っています。サイコロを転がし、サイコロが転がった場所の数 (1 ~ 6) を移動する必要があります。
コード例は次のようになります。
public function RollDice() : int
{
return randRange(1, 6);
}
private function randRange(param1:int, param2:int) : int
{
return Math.floor(Math.random() * (param2 - param1 + 1)) + param1;
}
しかし、このコードが何らかの操作に対して十分に安全であるかどうかが心配です(たとえば、チートエンジンを使用してロール数を変更するなど)。私は実際に自分のゲームを「ハック」しようとしましたが、randRange 関数の数字を変更することに成功しただけなので、特定の数字またはより短い範囲の数字など、サイコロを振ることができます。しかし、これはプレイする前にしかできませんでした(ゲームのスタートボタンを押します)。値を再度変更しようとしたとき、何も変更されませんでした (まあ、私はあまりハッカーではありません...)。
少し調べてみたところ、Actionscript Virtual Machine の JIT コンパイラが、私のゲーム (SWF) を CPU で実行されるマシン コードにコンパイルするため、私の失敗の原因である可能性があることがわかりました。私が知る限り、JIT コンパイラは関数を最初に実行するまでコンパイルしませんが、一度コンパイルすると、その関数の SWF バイトコードは二度とアクセスされなくなります。
問題はこれです: Cheat Engine などのプログラムを使用して関数を呼び出した後に、サイコロの出目の数を変更する方法はありますか?