UDN
Search public documentation:

AIOverviewJP
English Translation
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 ホーム > AI とナビゲーション > AI システムの概要

AI システムの概要


概要


ゲーム AI がゲームプロジェクトに欠かせないコンポーネントになることがよくあります。ゲーム内の基本的なパス検出やナビゲーションなどの問題が適切に解決されるに伴い、AI は一層複雑な状況にも対応できるように進化を遂げてきました。破壊可能な、または永久に変形可能なジオメトリを含む動的レベル、より複雑な運動モード (可変運動機能を備えたビークルなど) はもちろん、3D 環境のより効果的な活用 (カバーの効果的な使用など) にその発展を見ることができます。

優れた AI の構築に不可欠な要素には、ゲームのルール、戦略、作戦の的確な理解はもちろん、同様のスキルレベルのプレーヤーについての理解も含まれます。つまり AI には、ゲームワールドとゲーム状態に関して、人間のプレーヤーの認識の限界を模倣する知識モデルが必要です。FPS ゲームの場合はさらに、人間と同じような照準モデルも必要になります。このモデルには、人間のプレーヤーに影響を及ぼすさまざまな状況下で、ターゲットに命中させるときにプレーヤーが示す弱さや強さが含まれます。最後に、AI には対話型オブジェクトのクラス (ビークルや武器など)、または問題クラスに対応する柔軟なシステムも必要です。

近年のコンソールや PC の計算力の驚異的な増大のお陰で、ついに AI にも十分な馬力が残されるようになりました。この恩恵を受けて、AI プログラマーは衝突チェックのようなより計算集約型のタスクを実行し、AI の環境情報を検出したり、よりコスト高なパス検出方法を決定できるようになりました。

今まで AI の挙動決定で選択せざるを得なかった「ショートカット (簡略な方法、近道)」の数が減少したため、AI により詳細な情報を与えて、より微妙な決定を下せるようになりました。例えば、UT3 で離れた目標にたどり着こうとする NPC は、最短ルートの選択だけでなく、複数のルートを評価します。これらのルートは、フレンドリーな他の NPC の行動やルートの難易度などの「リスク」を含む、多数の要因に基づいて評価されます。

ときには Game AI を 巧妙な仕掛け として見せることができます。AI の学術的な研究とゲームにおける AI の実装内容の間には、かなりの部分でまだ基本的に大きな相違点があります。ゲーム環境情報の取得に関しては、ゲーム AI より現実世界の Al の方がより複雑で、未解決の問題が多々残されています。確かに、AI 研究に由来する知識は適用されていますが、AI の「最先端」研究の結果はほとんど使用されていません。今でも、ゲーム AI の最難関の 1 つは NPC を人間「らしく」することであり、人間同様の反応や限界を表現することはゲーム AI にとって間違いなく最も難しい問題です。同時に、ゲーム AI では突発的な挙動などの領域の模倣が試行されています。ゲームプレイ中に UT3 のボットが学習する方法の 1 つは、パスネットワークのコストを、例えば「殺戮ゾーン」などの要素を反映して動的に調整することです。この方法により、例えばスナイパー (狙撃チーム) が配置されているという理由で回避する地域を学習できます。

FPS ゲームの場合、ゲーム AI のもう 1 つのゴールはより「人間らしい」挙動の表現、つまり一見成り行き任せの挙動や、習慣的、ときには未完の動作を表現することにあります。

このような機能の一部は、UT3 AI に示されています。キャラクターごとに武器の好み、戦術的な意識、攻撃的などの特性がカスタマイズされ、意思決定プロセスに反映されています。ボットについては、このような「人間らしさ」の適用は控えめにしています。その理由は、プレーヤーが「AI はただの愚か者」と判断してしまうためで、実際に、当社のデザイナーの 1 人から、あるレベル内で彼の敵全員が本当の人間であることに気がつかず、そのレベルの AI のプレイが酷いと何度も文句を言われたことがありました。時には、知性ではなく「わざとらしい愚行」の表現が AI の目標になる場合があります。これは、NPC のターゲット照準や、ゲーム状態に関する知識の限界 (特に、現在ボットから見えない敵の場所や能力に関する知識) の 2 つの分野において特に重要です。完璧に命中させるのは簡単ですが、人間のプレーヤーのように外すのは難しいのです。また、見えなくなった敵の居場所を見当付けるメンタル モデルをボット用に作成するのもきわめて大変な作業です。

ゲーム AI の未来には、実験やシミュレーションなど、多彩な心躍らせるチャンスが待ち受けています。科学面/大学での AI 研究から導かれた理論や解決策は、ゲーム AI にとって有益となる分野を新たに提供してくれるでしょう。もちろん、計算能力の増加に伴いゲーム AI の質も向上します。ゲーム AI がよくなれば、それに合わせた新しいゲームシナリオや技巧の探究も可能になります。例えば、堅牢なスピーチ認識と合成機構が的確にインターフェース実装され、NPC に関する強力なパーソナリティ/モーチベーション モデルが確立されたゲームであれば、ゲームプレイで敵味方の背後にある動機の読み取りに焦点を当てることも不可能ではありません。

機能


「Unreal」 Game AI フレームワークは以下の2 つの部分から構成されています。

  1. インゲームにおける決定にかかわる情報を含んでいるレベルの基本的なレイアウトを提供するための手段 : ナビゲーション
  2. 決定を処理して、ゲームのアクションに転化するための手段 : コントローラー

ナビゲーション

ナビゲーションは、あらかじめ生成されたパスネットワークに基づいています。このパスネットワークはボットの移動領域を 100% カバーしないので、局部的な環境評価とナビゲーションの実行も可能にする必要があります。これらの目的のために、衝突トレースを使ってサンプリングを行うほか、衝突データ構造近辺のオブジェクトが検査されます。

パスノードとナビゲーション システムの詳細については、 Navigation AI (ナビゲーション AI) ページを参照してください。

ウェイポイントおよび パスノード

パスノードシステムを使ったプログラミングの詳細については Waypoints Technical Guide をご覧ください。

ナビゲーション メッシュ

ナビゲーションメッシュシステムを使ったプログラミングの詳細については Navigation Mesh Technical Guide をご覧ください。

コントローラー

Controllers はプレイヤーまたは Game AI の論理的な決定によるインプットベースの決定の基となります。コントローラーは、アクタ自身の操作を制御するために Pawn につなげられる非物理的なアクタです。

そのため Pawn は、プレイヤーおよびAIにより制御されるすべてのアクタの基礎クラスなのです。 Pawn はプレイヤーの物理表現で、レベルにある創造物です。Pawn は、メッシュ、コリジョンおよび物理をもちます。Pawn はダメージを受けたり、音を出したり、武器やその他のアイテムを持ったりすることができます。要するに、プレイヤー、または AI やワールド間のすべての物理インタラクションを担っているのです。

コントローラーは制御している Pawn に発生している多くのイベントの通知を受けます。これにより、このイベントに対しての挙動を実装する機会をコントローラーに与え、イベントの中止や Pawn のデフォルト挙動を優先します。

PlayerControllers は Pawn をコントロールするため人間のプレイヤーにより使われ、さらに AIControllers は 制御する Pawn の AI を実装します。コントローラーは Possess() メソッドを使って、Pawn の制御をし、UnPossess() を呼び出すことにより Pawn の制御を中止します。

Controller-Pawn system システムは異なる能力で Pawn の制御ができる クラスを1つ持つためにデザインされてました。

の侵略ゲームタイプはさまざまなモンスターが膨大な量でありましたが、それらはすべて単独の AIController クラスにて制御されていました。Gear of War は基本 AIController クラスを使用し、異なる Locust クラスが必要な場合は拡張します。

関数

MoveTo

これは潜在関数で、ボットを通過ポイントに直接動かすので即時に到着します。この関数はパス検出がないため、Pawn を直接ターゲットに導きます。

MoveToward

これは、アクタを宛先としてとる事や、余分なデータを使用させる特別な処理を持つことを除き、非常に MoveTo に似ています。(ボットがナビゲーションポイントに向けて動いている時にアンカーをセットする、など)