「AIにゲームを学習させる環境」のAI機能以外の利用方法

では第5章、実践−プロジェクト推進編−です。第1節、「AIにゲームを学習させる環境」のさらなる活用。シミュレータ環境を導入するだけでは、AIに恩恵を享受するのは難しいです。

「対戦AI」や「AIによるバランス調整」などを行うためには、データサイエンティストがAIの実証実験を行い、その後ゲームに機能として実装する必要があります。

AIの開発を含むプロジェクトは長期間を要する計画になるため、そのためだけにシミュレータ環境を使うと、短期間かつ早期には恩恵が得られにくいです。

しかし、シミュレータ環境というのはさまざまな利用方法が考えられ、AI機能以外にも活用することで、導入の費用対効果を改善できます。本節では、シミュレータ環境について振り返りながら、AI機能以外の利用方法について解説を行います。

復習ですが、シミュレータ環境とは出力機構、入力機構、並列実行、高速実行の機能をゲーム上に実装したものでした。

(スライドを示して)そして、シミュレータ環境を利用することで以下のような活用が行えます。

この活用の中でも、リプレイ機能はシミュレータ環境における入力機構、出力機構を利用することで作れます。さらに、リプレイ機能を派生させることで、さまざまな利用用途に展開が可能です。

本発表では、リプレイ機能と、その派生の中でも費用対効果が得やすいスナップショットテストとチート検知について解説を行います。

リプレイ機能とは、ゲームにおける任意の操作を記録し、記録した操作を自動的に再現する機能です。プレイヤーが行なったプレイの操作を出力機構を用いて操作ログとして保存し、保存したログを入力機構に渡すことで、先ほど行なったプレイをプレイヤーの代わりにシミュレータ環境が再現を行います。

具体的に例を示しましょう。シミュレータ環境でプレイヤーが行なった操作をログに保存します。この時保存するのは、出力機構でも登場したログたちです。

そして先ほど保存したログの中から操作に関するログを入力機構に渡すことで、シミュレータ環境が再現を行います。入力機構を用いた時にもログを出すのは、先ほど入力機構の説明で行なったとおりです。

では、リプレイ機能から派生したスナップショットテストについて解説を行います。

スナップショットテストとは、プログラムにおける機能改修前のログと機能改修後のログを比較して、ログに差分がないかを見ることでバグやデグレードを検知するテストです。

リプレイ機能を使うことで、ゲームの機能改修前におけるログと機能改修後におけるログを収集し、機能改修前後のログを比較することで、バグやデグレードの検知を行います。

このスナップショットテストでは、シミュレータ環境で実際に行なった操作のログを元にテストを作ります。それはつまり、エンジニア以外でもテストが作成可能ということです。QAにて定常的に確認する項目や過去に発生したバグの再現プレイを記録しておくことで、QA期間の圧縮やバグの再発防止などを狙えます。

具体的に例を示しましょう。リプレイ機能の時と同じようにシミュレータ環境でテストしたい操作を行い、ログを保存します。今回の例では、バージョン1.0のシミュレータ環境でゲームをプレイし、ログを保存しました。

次に、テストしたいバージョンのシミュレータ環境にて、先ほど保存した操作のログを読み込ませて操作の再現を行います。今回の例であれば、先ほどのバージョン1.0のシミュレータ環境で行なった操作をバージョン2.0のシミュレータ環境で再現して、同じようにログの保存を行なっています。

そうすることで、バージョン1.0で特定の操作をした時にどうなったかというログと、バージョン2.0で同じ操作をした時にどうなったかというログを得ることができました。

これらのログを使って同じ操作を行なった時に、同じ結果が現れるかの確認を行います。

ログが一致している場合は、機能改修前後でバグやデグレードが発生してないことを確認できます。逆にログが不一致の場合は、機能改修前後でバグやデグレードが発生していることがわかります。ログを読むことで、どの時点の操作で差分が発生したかの確認が可能です。

では次に、チート検出についての解説を行います。リプレイ機能を用いたチート検出とは、ユーザーのプレイをログとして記録し、そのログをリプレイ機能に対して入力、ユーザーのプレイで記録したログと、リプレイ機能で再現したログが一致するかでチートの検出を行う手法です。

このチート検出を突破するためには、ゲームの最終スコアだけを改ざんするのではなく、出力機構が出したゲームのプレイのログの整合性を保って改ざんする必要があります。しかし、プレイ後のログからリプレイを行い、リプレイから得たログと比較でチートを検出するため、チートを行っているプレイをリアルタイムに検出することはできないことに注意が必要です。

チート検出についても例を示しながら解説していきます。今回の例では、プレイヤーがダメージを不正に操作しチートを行ったとします。この時、チートを行っているプレイヤーのログを保存します。

そして、チートを行ったプレイヤーの操作をシミュレータ環境に入力し、同じ操作を行った時のログをシミュレータ環境で取得します。

そうすることで、チートを行ったプレイヤーが操作した時にどうなったかというログと、チートを行ったプレイヤーと同じ操作をした時にどうなったかというログを取得できます。

これらのログを使い同じように操作を比較して、同じ結果が現れるかの確認をします。プレイヤーがチートを使用していた場合、同じ操作を行っても違う結果がログに現れてしまいます。

それでは、本節のまとめです。シミュレータ環境を導入しただけでは、AIプロジェクトを実行できる準備が整っただけです。AIプロジェクトの完遂には長期的な時間が必要なため、シミュレータ環境をスナップショットテストやチート検知といったAI開発以外の用途にも使うことで、短期的成果を作るととてもよいです。

「AIにゲームを学習させる環境」の導入・運用に必要なチーム構成

では第2節、ゲームドメインとAIドメインの接合点について解説を行います。シミュレータ環境の導入・運用には、専門知識を持つチームが求められます。

シミュレータ環境をゲームに導入するには、対象ゲームにおける専門的なドメイン知識が必要です。例えば、入力機構や出力機構の実装方法、ゲームクライアントを並列に起動させる設計、同じログを入力機構に渡した時における、乱数や物理演算の同一性担保などです。

逆に、シミュレータを使ったAIの作成には、AIにおける専門的なドメイン知識が必要です。例えば、AIのための学習環境構築や学習のためのパラメータ選定、他にも機械学習に必要なログの選定などが挙げられます。

しかしこれらのチームは、お互いの専門性の高さからコミュニケーションにすれ違いが発生してしまうことがあります。

例えば、データサイエンティストといったAIの開発チームからゲームタイトルの開発チームへ「シミュレータ環境を作って」とお願いが飛んだ時に、ゲーム開発チームはシミュレータ環境の開発に必要な要件を把握できず、「そもそもシミュレータ環境ってなんだよ!?」っていったことになったり。

いざシミュレータ環境を作ろうとしても、AI開発を含むプロジェクトが長期間を要することから、「シミュレータ環境って費用対効果悪くない?」といったことが発生してしまうことがあります。

そこで、両者のことを理解してるハブ的役割を行えるメンバーやチームを追加することで、両者のコミュニケーションをスムーズに行うことが可能です。

例えば、シミュレータ環境が何を意図していて、何ができる必要があって、何に注意すればいいのかといった解説や、シミュレータ環境導入にあたって、他の利用方法を用いた費用対効果の改善の提案などができます。

他にも、ゲームタイトルとデータサイエンティストをつなぐハブとしての役割が可能なメンバーやチームを作っておくと、AIプロジェクトの進捗管理や、AIを使ったコンテンツの提案、シミュレータ環境の実装におけるノウハウの蓄積や横展開などが行えます。

それでは本節のまとめです。シミュレータ環境の導入・運用にはそれぞれ専門知識を持つチームが必要ですが、お互いの専門性の高さゆえに、コミュニケーションにすれ違いが発生してしまうことがあります。

そこで、両者をつなぐハブ的役割が可能なチームを作成することで、スムーズなシミュレータ環境の導入・運用が行えます。また、このハブ的チームにノウハウを蓄積させることで、シミュレータ環境を横展開したい時などにもスムーズな進行が行えます。

セッションの総括

では、総括に入ります。ゲーム開発における課題として、ゲームバランスはゲームのユーザー体験や品質向上につながる重要な要素ですが、運用年数に比例して増えていくコンテンツの組み合わせ数に対して、人間の力のみですべてを把握してバランスを取ることやチェックすることが難しいというものがあります。これに対してはAIにゲームを学習させて解決をしましょう。

AIにゲームを学習させるためには、出力機構、入力機構、並列実行、高速実行といった機能が必要でした。これらを満たしたAIにゲームを学習させる環境を、シミュレータ環境と呼びます。

シミュレータ環境を設計・実装する際には、ゲームを複製して、複製したゲームをシミュレータ環境とするような二重管理の設計・実装は行わない。将来的にAI活用は必須であると見据えたうえで、ゲームの開発初期からシミュレータ環境を踏まえた設計・実装を行うべきです。これらを満たせないと、導入や運用保守のコストが増大してしまいます。

シミュレータ環境を導入しただけではAIプロジェクトを実行できる準備が整っただけであり、AIの開発を含むプロジェクトは長期間を要する計画になるため、そのためだけにシミュレータ環境を使うと短期では成果を得られにくいです。シミュレータ環境をAIの開発以外にも利用しましょう

シミュレータ環境の導入と、シミュレータ環境を利用してAI作成するには、それぞれ専門性を持ったチームが必要ですが、お互いの専門性の高さゆえにすれ違いが発生してしまうことがあります。両チームのことを理解できるハブ役割を持つチームやメンバーを作ることで、スムーズな開発が行えます。

以上、ご清聴ありがとうございました。引き続きTechCon 2022をお楽しみください。