Это может быть своего рода тривиальный вопрос, но у меня возникают проблемы с пониманием этого. Буду очень признателен за вашу помощь.
В разработке игр с использованием объектно-ориентированного дизайна я хочу понять, как AI-агенты получают доступ к информации, которая им нужна из игрового мира для выполнения своих действий.
Как мы все знаем, в играх очень часто агентам ИИ нужно «воспринимать свое окружение» и действовать в соответствии с тем, что происходит вокруг них. Например, агент может быть запрограммирован, чтобы преследовать игрока, если он / она приближается достаточно близко, избегать препятствий во время движения (используя поведение поворота для предотвращения препятствий) и т. Д.
Моя проблема в том, что я не уверен, как это сделать. Как агент ИИ может получить доступ к необходимой информации об игровом мире?
Один из возможных подходов заключается в том, что агенты просто запрашивают необходимую информацию непосредственно из игрового мира.
Есть класс под названием GameWorld. Он обрабатывает важную игровую логику (игровой цикл, обнаружение столкновений и т. Д.), А также содержит ссылки на все объекты в игре.
Я мог бы сделать этот класс Singleton. Когда агенту нужна информация из игрового мира, он просто получает ее непосредственно из экземпляра GameWorld.
Например, агент может быть запрограммирован Seek
на игрока, когда он / она близко. Для этого агент должен получить позицию игрока. Таким образом, можно просто запросить его непосредственно: GameWorld.instance().getPlayerPosition()
.
Агент также может просто получить список всех сущностей в игре и проанализировать его на предмет его потребностей (чтобы выяснить, какие сущности находятся рядом или что-то еще): GameWorld.instance().getEntityList()
Это самый простой подход: агенты напрямую связываются с классом GameWorld и получают необходимую им информацию. Тем не менее, это единственный подход, который я знаю. есть ли лучший?
Как опытный разработчик игр разработает это? Является ли наивный подход «получить список всех сущностей и найти все, что вам нужно»? Какие существуют подходы и механизмы, позволяющие агентам ИИ получать доступ к информации, которая им необходима для выполнения их действий?