ゲーム開発を扱う場合、ソフトウェアテストは異なりますか?


11

一般にソフトウェア開発とゲーム開発の違いについてこの論文を読んでい、著者はソフトウェアテストに関していくつかの良い点を指摘しました。たとえば、

...ゲーム開発者は、ゲームデザイナーの創造的な欲求の変化に直面して、これらのテストが急速に陳腐化するため、自動テストの使用をためらいます。

それで、この読書は、ゲームを扱っている/テストしているときに、ソフトウェアテストの他のどの側面を異なるまたは特定と見なすべきかを考えさせましたか?誰かがこれを経験したことがありますか、それについて何か他のことを聞いたことがありますか?


論文へのリンクを気にしていますか?私はそれを読んでみたいです。
ラバーダック

1
:ここでは紙であるmicrosoft.com/en-us/research/wp-content/uploads/2016/02/...が。ああ、気にしないならこれについてあなたの意見を述べてください。ありがとう。:-)
ロニーエドソン

9
私は、ゲーム以外の開発でも発生する力の欲求の変化に直面して、(テストの)急速な陳腐化を恐れています。おそらく、ゲーム開発は他の開発とそれほど変わらないことを示唆していますか?
エリックエイド

ビジネスソフトウェアとゲームの最大の違いは、「シフト要件」ではなく、それは事実上どこにでも共通していることではなく、ゲームを構成するパフォーマンスと強力なUI作業に重点を置いていることです。ビジネスソフトウェアでは、データモデルとロジックモデルはプレゼンテーションから分離される傾向があり、ユニットテストの候補として容易になります。ゲームには常にこのような贅沢があるとは限りません。これは、オンラインゲームのサーバー側の部分をより純粋なゲームロジック、モンスターの
出現

1
違いは非常に広い教会です。そしてそれはむしろあなたがそれを比較しているものに依存します。
ロビーディー

回答:


10

実際、現代のゲームは、社内または独自のゲームエンジンを使用して開発された大量の創造的なアートコンテンツです。エンジン自体は、ほとんどの部分(レンダリング、ジオメトリ、物理学、AIモジュールなど)でユニットテスト可能です。同様に、開発されたコンテンツの個々の部分に簡単なテストを添付することもできます。これは、ユニットおよびホワイトボックステストが実際に実行可能で成功していることを意味します。

「製品全体」に関する限り、ゲームはシミュレーションです。単純なビジネスプログラムよりも生成的な複雑さがあります。数え切れないほどよく計画された振る舞いを備えたエンタープライズリソースプランナーとは対照的に、無限でユニークな手続き型の世界を考えてください。簡単に言えば、ゲームのコンテキストで何かを行うための可能なユニークな方法の数は、数学的に非常に大きくなる可能性があります。実際、ゲームのセールスポイントと見なされます。

それに加えて、最終出力は純粋にオーディオビジュアルであり、そのような出力の絶対的な正確性の決定論的標準はありません。GPUチップは、正確でない計算であっても、実際には正確な計算を実行する必要はなく、多くの計算を実行する必要があります。

そして最後に、主な目標はエンターテイメントです。ゲーマーは、60以上のFPSを実行し、素晴らしく見え、何時間にもわたる娯楽コンテンツを持っている場合、グリッチに問題はありません。

これは、ゲームに適用された場合、従来の自動化されたブラックボックステストのアイデアを「それほど具体的ではなく価値のある」領域に置くだけです。

ただし、NN訓練してゲームをプレイするという最近の試みがあります。これは、事実上、探索的自己学習型のサルテストです。


2
「平均的なビジネスプログラム」とは何ですか?
whatsisname

1
はい !相互作用の数はそれほど多くありません(数千の相互に関連するトランザクションタイプと、無限に再構成可能なプロセスランドスケープを備えた主要なERPを使用してください)。さらに、ビジネスソフトウェアは、統合テストで簡単に検証できる再現可能な動作を提供することが期待されています。ゲームは楽しまなければならず、繰り返し可能なものは退屈です。そのため、テストツールでエンターテイメントの度合いや、ユーザーが見るシーンの一貫性とリアリズムを測定することは困難です。今から30年後にはAIを使用するかもしれません....?
クリストフ

@Christopheそれは再現性の範囲に依存します-例えば、「キャラクターが撃たれたとき、彼は5ヘルスを失うはずです」は完全に再現性と完全にテスト可能です。重要なのは、反復可能なテスト可能なゲームロジックが、主張する具体的な状態が少ない部分から十分に抽象化されていることです。
アントP

2

gamedevをやってから何年も経ちましたが、いい答えに加えて、いくつか追加したいことや詳細があります。

最初に述べたのは、出力が「FPSに厳しい」厳しい制約と計算/メモリバジェットに対して視覚的かつ聴覚的であることです。質問が「見栄えが良いか?スタッターなしでスムーズに実行されるか?素晴らしいサウンドですか?」のような質問になると、正確さのアイデアがぼやけます。開発者は微調整と調整を行い、設計者と開発者のコ​​ラボレーションは見た目と音が急速に繰り返されるたびに少しずつ異なるものになります。

もう1つは、テスターがすごいことです!彼らが望んでいるので、私は他のドメインでより専用のテスターのグループを見つけたことがありませソフトウェアをテストします。彼らは楽しんでいます。彼らは中毒になっていて、コンピューターの隣で寝ている間、ゲームの隅々を探検します。人々が実際にソフトウェアの隅々まで徹底的にテストし、実際には中毒になっているときに、あいまいなグリッチでさえ発見するのはかなり簡単になります。私の現在の業界では、テスターの多くはソフトウェアに生計を立てている専門家であるため、作業が少し難しくなります。したがって、テスターは仕事を終わらせるためにいくつかの機能に依存しており、すべての隅々に常に。当然、人間のテスターに​​それほど頼ることができない場合、より自動化されたテストが必要です。

さらにもう1つは、ゲームのコードベースは通常、長年にわたって維持、変更、拡張されないことです。6502アセンブリで最初に開発したスーパーマリオの開発者が、ゲームの出荷後も元のコードに似たものを維持しなければならなかったということはありません。Doom 3は、おそらくDoom 1のゼロ行のコード(またはクローズ)を使用します。継続的なフランチャイズがある場合、新しいゲームは「アップグレード」というよりも「続編」に似ています。ほとんどのゲームはただ出荷され、おそらくいくつかのパッチ、DLCがリリースされ、その後コードが完成します。これは、数十年にわたって移植および保守されていたAmigaの時代にまで遡るコードの保守に取り組んできた私のVFX業界とは非常に対照的です。ゲームは通常

ゲームコードベースのこの短命な性質の理由の1つは、それらがハードウェアに非常に結び付けられていることです。最先端の性質とFPSクリティカルな要件と組み合わせると、ハードウェアの詳細を抽象化するような方法で開発することはできません。ハードウェアのターゲット世代向けに特別に書かれていることが多く、PS3がPS4に置き換わり、その後PS4が廃止されてPS5に置き換わるなど、すべてが非常に迅速に行われます。ハードウェア機能は、ゲームの設計と開発において極めて重要な役割を果たしているため、PSX向けにPS4向けに記述された同じコードの多くを維持することは一般的には価値がありません。主に最新のハードウェアの基礎から。

存続期間の短いコードベースでは、メンテナンス時間が限られています(つまり、コードを変更する必要がある限られた時間)。エンジンの範囲がアップグレードごとにますます大きくなり、ゲームがミッションクリティカルに近いところにないという事実と相まって、コードが変更される期間は限られています。最も徹底的な単体テストと統合テストを適用することが重要です。将来の変更が行われない場合、将来の変更の整合性を確保することでそれを行うことには利点がありません。また、そもそも「レガシー」がない場合、レガシーコードベースのユニットテストとリファクタリングの側面は自然に無関係です。

常に関連するとは限らないもう1つの小さな問題は、ゲームがデスクトップポートなしで非常に狭い範囲のハードウェアのみをターゲットとする可能性があることです。これらの場合、これらのコンテキストで予測できないグリッチの巨大な原因、つまり根本的に異なるハードウェアとドライバーでソフトウェアを実行しているユーザーは排除されます。

そうは言っても、最高/最も粗いレベルでの統合テストは、すぐに役立つ傾向があります。たとえば、多くのゲームでは、「リプレイ」のためにゲームの状態が時間とともにどのように変化するかを記録する方法を利用できます。このようなリプレイ機能は、ゲームが決定論的であることを保証し、他の誰かによって以前に記録されたゲームセッションをリプレイするためのテストツールのフォームとしても使用できます。

また、小さなスタジオで働いているゲーム開発者と出会い、ゲームのボットを書くなどのことをして、ボットに最高速度でゲームをプレイさせ、そのシミュレーションを実行しました。最初は1、2日後に不明瞭なクラッシュに遭遇し、それを修正してから、シミュレーションを再度実行し、何週間も続けて実行した後でもショーを止めるクラッシュがなくなるまで繰り返しました。したがって、ゲーム開発者からソフトウェアのテストまで見たような興味深い実用的なアプローチがありますが、多くの場合、最も粗いレベルの統合テストに似ており、プレイヤーが実際にゲームとやり取りする方法に非常に近いものをシミュレートします。

最後に、これらの大きなAAAゲームエンジンは、まったく異なる種類の獣に似始めています:レベルエディタが本格的な開発環境に似始めている間、より長いコードベースとより長いメンテナンススパンで、寿命が長く、ハードウェアを少しうまく抽象化することに成功しています。これらの大きなエンジンはおそらく、特にコードの保守時間が大幅に長くなる場合、より徹底的なテスト手順を必要とするでしょう。それでも、多くのゲームスタジオは巨大なAAAゲームエンジンを作成していません。ライセンスを取得するか、スコープがかなり小さく、数年間維持されない独自の小さなエンジンを開発します。


1
ボット。うん、それは試行錯誤されたアプローチです。
SD
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.