クリエイティブのためのテスト、クリエイティブなテスト
著者: 伊藤 隆広近年ゲーム開発の方法が大きく変化しています。以前はプロダクトごとに専用の開発環境の構築をして、ハードウェア性能の限界を引き出していましたが、現在はゲームエンジンと呼ばれる汎用的な開発環境を利用して、効率的にゲーム開発を行うスタイルに変わりつつあります。ゲームエンジンはゲーム開発に使われる汎用的な部品の集まりです。ゲーム開発者はこの汎用的な部品を組み合わせて、目標とするゲームの開発を行います。ゲームエンジンの登場によって、ゲーム開発者はさまざまなモジュールを組み合わせて、いろいろなゲームデザインを試行錯誤ができるようになりました。
しかし、この開発スタイルの変化により、以前はゲーム開発終盤に行えばよかったテスト(デバック作業)を、ゲーム開発を行う前のゲームエンジンを作成する段階でも行う必要が出てきました。ゲーム開発者が新しいゲームデザインを試すときに、すでにテストが行われており、正しく動作することが保障されていなければ、ゲーム開発者は安心して新しいゲームデザインを試すことができません。逆に安定した環境があれば、いろいろなチャレンジをゲーム開発の終盤でも行うことができます。ゲームエンジンが安定して動作することが、クリエイティブなゲームを作ることに直結します。
ゲームエンジンのテストとは何をすればよいのでしょうか。今のところ、これといった決め手はありません。これはゲームエンジンに使われているテクノロジーが多種多様なことに原因があります。ゲームエンジンには、さまざまなモジュールがあります。マルチコアに最適化されたタスクシステム、さまざまな表現を可能にするレンダリングシステム、自動的にアニメーションを生成する物理エンジン、開発者の変更を瞬時に反映させるコンテントパイプライン、プログラムを書かなくても地形やキャラクターの配置が可能なエディター、使われているテクノロジーはさまざまです。そして、これらをテストするための技術も、さまざまな物を組み合わせてデザインをする必要があります。これはとてもクリエイティブな作業です。
ゲームエンジンをテストする上で重要な技術として、テストの自動化があげられます。
従来の売り切り型のゲームのリリースは基本的に1 回です。この場合はリリース前に人間の手で入念にテストをすれば、多くのバグを見つけることができました。しかし、ゲームエンジンの場合は違います。多くのゲーム開発者が使用しているゲームエンジンには、使用される間に多くのフィードバックが来ます。フィードバックに対応した機能追加や修正は、早ければ早いほどよいのですが、このときに問題となるのが、既存の機能が問題なく動作するか確認する作業です。ゲームエンジンの機能とその組み合わせは膨大な数になります。これを人の手だけでテストを行って動作確認を行うには多くの時間がかかり、迅速なリリースは不可能です。追加された新しい機能に対して十分なテストを行うためには、前回のリリース時に行ったテストを自動的に実行させる仕組みを作り、新しい機能のテストに注力できるようにする必要があります。
ゲームエンジンに限らず、多くのゲーム開発において、プログラムの一機能が正しく動作しているか検証をする、ユニットテストと呼ばれるテストを、自動的に実行させる仕組みが利用されています。ゲームエンジンのテストではこれに加えて、ユーザーインターフェースや、パフォーマンスのテストに関しても、自動的実行して問題が発生したことを、ゲームエンジンの開発者に連絡する仕組みを作る必要があります。ゲームエンジンのテストは、ゲームエンジンを利用して作られるゲームと同じくらい、クリエイティブな仕事となってきています。