> 返回资讯列表
news_article.exe
2つのビルドが異なるゲームを再生している間、私の決意テストは数ヶ月経過しました

2つのビルドが異なるゲームを再生している間、私の決意テストは数ヶ月経過しました

My determinism test passed for months while the two builds played different games

2026年8月1日15 次浏览来源:Dev.to 阅读原文

出荷されたAndroidゲームのルールエンジンをブラウザにコンパイルしました。 同じJava、2つのコンパイラ。 それから2人が合意したかどうか確認しました。 彼らはそうでなかった — と、私はすでにこのために持っていたテストは、全体的に緑色だった. 同じコマンドは、現在のエンジンに対して緑色にし、壊れたビルドのコミットされた録画に対して行います。 テキストを選択したい場合は、端末セッションとして再生します。 セットアップ ルールは、そのクラスパスでAndroidなしで1つのモジュールに住んでいます。これは、TeeVMで2秒間それらをコンパイルし、ブラウザタブで同じロジックを実行することです。 シードランは再現可能です。 エンジンシード42と入力の固定シーケンスを与え、毎回同じゲームを入手する必要があります。つまり、実行再生可能と2つのビルドが比較可能になります。 お問い合わせ.

出荷されたAndroidゲームのルールエンジンをブラウザにコンパイルしました。 同じJava、2つのコンパイラ。 それから2人が合意したかどうか確認しました。 彼らはそうでなかった — と、私はすでにこのために持っていたテストは、全体的に緑色だった. 同じコマンドは、現在のエンジンに対して緑色にし、壊れたビルドのコミットされた録画に対して行います。 テキストを選択したい場合は、端末セッションとして再生します。 セットアップ ルールは、そのクラスパスでAndroidなしで1つのモジュールに住んでいます。これは、TeeVMで2秒間それらをコンパイルし、ブラウザタブで同じロジックを実行することです。 シードランは再現可能です。 エンジンシード42と入力の固定シーケンスを与え、毎回同じゲームを入手する必要があります。つまり、実行再生可能と2つのビルドが比較可能になります。 ここで私が実際に持っているもの、同じ種子、同じ入力:JVMブラウザ最初の障害X、フレーム60 405.426 304.426はまだフレーム360で生きています はい 最終スコア9 6 ラウンドの違いはありません。 別のゲーム。 原因は退屈です。 試験失敗はありません。 使用 . そのアルゴリズムは定数まで指定されます。Javadoc では、正確な線形円錐形のジェネレーターを読み込みます。 つまり、シードは1つのシーケンスを正確に呼び出すべきだ。 しかし、そのアルゴリズムが実行されていない。 どの実行時にも実行され、TeeVM は JVM の実行時間ではありません。 仕様は何をするかを記述します。それは一致するために外国のランタイムのreimplementationを強制しません。 修正は10分かかりました。LCGを長手書きで書きますので、両方とも同じ算数を実行します。 興味深い部分はテストです。 それをキャッチしていないテストは、私が呼ばれたテストを持っていた. エンジンを2回実行し、同じシードで、結果が一致したとアサートしました。 ブラウザのビルドが異なるゲームを再生していたすべてのコミットを含む、すべてのコミットに渡されます。 合格した。 同じランタイムで2回エンジンを実行します。 ランタイム間の不一致を観察できないようなテスト

> 分享: