制御されていない入力を特定する
ランダムな敵の位置、経過時間、アニメーション フレームのタイミング、保存されたハイ スコア、ビューポートの寸法、ユーザー入力のシーケンスなど、実行ごとに異なる可能性のあるものをすべてリストします。テスト対象の動作にとってどの変数が重要かを決定します。衝突チェックでは、固定された敵の位置と既知のプレイヤーのスタートを使用します。スポーン パターン チェックの場合は、ランダム シーケンスを制御しますが、1 つの設定で悪いパターンが隠蔽されないように、選択したいくつかのシードをテストします。
プレイヤーの行動をフリーズさせずに時間を制御する
タイマー ルールの場合は、明示的な開始時間を指定し、残り 3 秒やちょうど 0 秒など、意味のある境界で何が起こるかを確認します。フレームベースの動きの場合は、レンダリングされたフレームの同じ数ではなく、同じ経過時間を比較します。 MDN は、requestAnimationFrame のコールバックの頻度は一般に表示のリフレッシュ レートに従い、ほとんどのブラウザでは非表示タブのコールバックが一時停止されると述べています。したがって、アニメーション コードでは、進行状況を計算するときにタイムスタンプまたは別のタイム ソースを使用する必要があります。
決定論的なゲームテストについての質問
決定論的テストとは、ランダムなゲームプレイを削除することを意味しますか?
いいえ。これは、動作を比較するために選択したテストのランダム性を制御することを意味します。さまざまなシードに対して個別の探索的テストを実行して、ゲームの範囲を検査することもできます。
ローカルではテストが成功しても、ブラウザーの実行では失敗するのはなぜですか?
タイミング、ビューポート、保存された状態、またはランダムなシーケンスが異なると、セットアップが変更される可能性があります。それらの状態を記録し、チェックされる動作に関連する状態を制御します。
関連情報
古い情報を見つけましたか? 訂正を連絡