これはちょっとささいな質問かもしれませんが、私はこれを理解するのに苦労しています。よろしくお願いします。
オブジェクト指向設計を使用したゲーム開発で、AIエージェントがアクションを実行するためにゲームの世界から必要な情報にアクセスする方法を理解したいと思います。
誰もが知っているように、ゲームではAIエージェントが「環境を認識」し、周囲で何が起こっているかに応じて行動する必要があることがよくあります。たとえば、エージェントは、プレイヤーが十分に近づいたらプレーヤーを追跡する、移動中に障害物を回避する(障害物回避のステアリング動作を使用する)などのようにプログラムされている場合があります。
私の問題は、それを行う方法がわからないことです。AIエージェントは、ゲームの世界について必要な情報にどのようにアクセスできますか?
可能なアプローチの1つは、エージェントが必要な情報をゲームの世界から直接要求することです。
GameWorldというクラスがあります。重要なゲームロジック(ゲームループ、衝突検出など)を処理し、ゲーム内のすべてのエンティティへの参照も保持します。
このクラスをシングルトンにすることができます。エージェントがゲームワールドからの情報を必要とするとき、それは単にGameWorldインスタンスから直接それを取得します。
たとえば、エージェントSeek
はプレーヤーが近くにいるときにプレーヤーにプログラムされます。これを行うには、エージェントはプレーヤーの位置を取得する必要があります。そのため、直接要求することができますGameWorld.instance().getPlayerPosition()
。
エージェントは、ゲーム内のすべてのエンティティのリストを取得し、それをニーズに合わせて分析することもできます(どのエンティティが近くにあるか、またはその他の何かを把握するため): GameWorld.instance().getEntityList()
これは最も簡単な方法です。エージェントはGameWorldクラスに直接連絡して、必要な情報を取得します。しかし、これが私が知っている唯一のアプローチです。良いものはありますか?
経験豊富なゲーム開発者はこれをどのように設計しますか?「すべてのエンティティのリストを取得し、必要なものを探す」アプローチは単純ですか?AIエージェントがアクションを実行するために必要な情報にアクセスできるようにするには、どのようなアプローチとメカニズムがありますか?