ゲームの自動テスト[終了]


54

ゲームの自動テストの方法はありますか?

プラットフォームやゲームのタイプなど、プロジェクトに関する関連情報が明確化に役立つ場合は、特定の経験に感謝します。

回答:


74

一人の独立したゲーム。それは破壊可能な地形を備えたマルチプレイヤー戦車ゲームであり、破壊可能な地形と衝突コードはやや不安定でした。

私はいくつかの基本的なダムAIをリギングしました(「ダム」とは、「絶対にばかげている」という意味です-「敵の戦車に向かうドライブ」、「敵の戦車から離れるドライブ」、「ランダムな方向にドライブする」 「(メインの武器をランダムに発射しながら)キープレスを記録しながら最大フレームレートでゲームをプレイします。リアルタイムで約10〜15倍になりました。このコードは頻繁にアサートされたため、何か問題が発生した場合は、エラー報告と最初のランダムシードとともにキープレスログ全体がディスクにダンプされます。次に、キープレスログを再生して状態を正確に複製するか、エラーレポートからデバッグします。

文字通り何ヶ月もの間、私はそれを絶えず実行し続けました。最初はクラッシュせずに1時間ほどかかることはめったにありませんでした。私はそこに座って1週間ベビーシッターをし、1日に数個の不明瞭なバグを殺さなければなりませんでした。最終的には、障害が発生するまでに1週間実行されていたポイントに到達しました。これは、クラッシュごとに約1500時間のプレーヤーに相当します。

それは非常に貴重で、心からお勧めします。


1
本当に滑らか!ええ、キーログは純粋な勝利です。
デビッドマグロウ

1
私は混乱しています:「基本的なダムAIのリギング」と「キープレスの記録」-キープレスは誰ですか?AIを人間なしで単独でプレイできると思いましたか?API関数を呼び出すのではなく、キー押下をシミュレートすることで、実際にAIにゲームをプレイさせましたか?今では滑らかになります!
デイブO.

4
@Daveうん、混乱する可能性があると認めます。AIは、シミュレートされたコントローラーを介してすべての出力を提供するように設計されました。彼らはゲームの状態を入力として受け取りましたが、ゲームの状態を変更することはありませんでした。これはおそらくマウスUIでは恐ろしいアイデアでしたが、インターフェイス全体がゲームパッドで行われたため、少しいですが機能的でした。AIの仮想キー入力を記録し、さらに、友人とテストするときに同じコードが実際のキー入力を記録しました。
-ZorbaTHut

32

私が取り組んだMMO(100人の開発者、PCに焦点を当てたもの)で、さまざまな成功を収めたさまざまな自動テストを追加しようとしました。うまくいったのは次のとおりです。

  • 自動化されたビルドプロセス中の基本的なテストは大きな勝利でした。これには、キャラクターの作成、マップの転送、スクリプト可能なUIテストの実行、予想される動作の検索などのタスクが含まれていました。彼らが実際に会社の他の部分に到達する前に、これは膨大な数のバグを見つけました。
  • サーバーインフラストラクチャ側では、典型的なMMOサーバートランザクションをシミュレートするさまざまな自動テストを開発しました。その後、これらをさまざまな状況で再生して、パフォーマンスを比較したり、安全性を確保したりできます。時間の経過とともに、これらのテストはライブ記録データの再生に変わるまでますます正確になりました。
  • 世界中をランダムにローミングし、ジャンプし、物を殺し、チャットでランダムなことを言う「偽のプレーヤー」を作成しました。これにより、膨大な数の物理学とインフラストラクチャの問題が見つかりました。

動作しなかったもの:

  • 自動ビルダーに非常に特殊な戦闘指向の自動テストを追加しようとしましたが、これは基本的には機能しませんでした。設計者またはアーティストが何かを変更してテストが失敗し、ビルド失敗アラームが発生するまで、実装後約3日間機能します。本当の問題ではなかった時間の90%。これらのテストは非常に脆弱であり、特定のパワーで特定のマップ上で特定のゲームプレイを実際にテストすることは維持できません
  • クライアントのパフォーマンス(平均FPSなど)を1週間前の記録されたパフォーマンスと比較する自動パフォーマンステストの実装を試みました。これに使用したデモはかなり頻繁に腐敗する傾向があったため、これもかなり脆弱でした。また、実際のパフォーマンスの低下またはテストプロセスの副作用が原因でスローダウンが発生したかどうかを確認することは困難でした。

18

残念ながら、会社が資金を使い果たしたために日の目を見ることはありませんでしたが、3Dコンバット(HomeworldとMasters Of Orionを考えてみてください)で4倍の戦略ゲームに取り組んでいます。

ゲームを一晩中放っておくことができるように、人間のプレイヤーがいなくてもゲームをプレイできることを常に保証しました。

3D戦闘を無効にして(ランダムな結果に単純化)、AI戦略エンジンをそのままにしておきました。これにより、多数のバグと問題が見つかりました。ストッパーバグだけでなく、(たとえば)AI戦略がデッドロックに陥り、「正しいこと」を行わずに数千ターンを費やす戦略バグも表示されます。この種のバグは、「ゲームをプレイする」だけで見つけるのは困難でした。


うーん、これを自動化されたテストとは考えていませんでしたが、あなたは正しいと思います。私は数年間同じことをしてきましたが、そのように考えたことはありません。
mmyers

13

私が取り組んだ一人称シューティングゲーム(Descent 3-linux / mac / windows、1999年にチームで30人まで)で、デモの記録/再生機能が非常に有用であることが判明しました。ゲームがフレームをレンダリングできる速度でデモを再生できるオプションを作成しました。これは、多くの事柄が変更された後にパフォーマンスを検証するための素晴らしい方法になりました。

また、レンダリングシステム以外にも多くのコードを実行したため、適切な健全性チェックになりました。たくさんの変更を行った後、10分間のゲームプレイのデモ再生を実行できました。多くの場合、私は自分自身をチェックすることを考えていなかったエリアでバグをキャッチします。


8

ビルドサーバーでクイックスモークテストを使用するオープンワールドシューティングゲーム(x360、PS3、PC)がありました。ゲームをロードし、フロントエンドをステップスルーし、[アバター]を実行し、スクリーンショットをダンプして終了しました。cctrayがクリーンな終了を検出した場合、ビルドは成功しました。

私たちは、プロジェクトの約1年前に、チームの規模を100人までの開発者で実行しました。

それはショートッピングのバグを捕らえるのに効果的でしたが、スモークテストに合格したが、ほとんどの「実際の」レベルに失敗したビルド、マルチプレイヤーで動作しなかった、またはAIをノブルしたビルドを作成するのは簡単でしたので、完璧ではありませんでした。間違いなくやりがいのあることでした。

私が去ったとき、彼らはより広い範囲のスモークテストを実行し始め、複数のPCで耕作し始めたと聞きました。どうやらスモークテストを維持することは問題であり、ビルドサーバーとソフトウェアを維持することに専念している小さなチームがあるので、それが成功したかどうかは言えません。


6

Crysis 2の開発中の自動テストに関する私の経験は、ここから入手できます:http : //yetanothergameprogrammingblog.blogspot.com/2010/06/aaa-automated-testing.html

概要:

  • 自動テストにより成果物の安定性が向上し、コンテンツ作成者とエンジニアの両方の生産性が向上しました
  • 自動テストは、コード品質を改善し、残業の可能性を減らす効果的なツールです
  • ゲーム業界は全体として非常に反動的であり、自動化されたテストは、
  • それをテストと呼ぶのではなく、他の何か、ほとんど他の何かと呼んでください(行動駆動開発を見てください)
  • 柔軟で、優れたテストを書くのは難しく、ゲーム業界では広く利用できないスキルが必要です

2

実際、ゲーム開発は、個別システム間の相互作用が非常に一般的であるため、ユニットテストが何らかの意味をなすように思われるケースの1つです。設計による設計はもちろんこれの一部であり、開発の初日から計画する必要がありますが、そうするための場所が存在すると仮定して後で実装できない理由はわかりません。

もちろん、難しいのは統合テストです。ときどうなるバグ公開している私は私の時間を費やして、より興味がある-ゲームの多くは単なるデモ・ルーピングそれをか何かでテストすることができますが、その原料は簡単にデバッグに概念的にかなりあるプレイヤーは、何かをしますプレーヤーが決して見ないバグは、プレーヤーがするバグよりも明らかに重要ではないという考え方で。

これは明らかに難しいことです。他のアプリケーションで動作する戦術(ファジング、予想される合格/予想される失敗など)は、ここではあまりうまくいきません。スクリプト可能なシステムでは、プレイヤーをシミュレートするためのスクリプトのテストセットを作成するのが方法のようです(JZigの答えを参照)。しかし、プレイヤーが直接遭遇する可能性のあるもののためのテストは、人間と自動テストの両方の目的のためにあなたの時間を集中するのに最適な場所として私を直撃します。


9
しかし、プレイヤーあなたが正気な人に期待することを決してしません。そのため、リリース後まで、Call of Dutyのエレベーターの不具合などは見られません。開発者とテスターが試したことがなかったようなことをしている人が何千人もいるからです。誰かが強迫観念的な16歳のゲーマーの完璧なシミュレーションを作成するとすぐに、ゲーム開発の特異点に到達するでしょう:)
ケーシーワーグナー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.