Pull to refresh

Comments 6

Про AI слишком поверхностно рассказали всё же. Хотелось бы поподробнее про это почитать.
Особенно интересуют пути оптимизации алгоритмов и т.п.
Старался довольно подробно расписать. Эта статья — почти готовое техзадание. Оптимизации две: сенсоры используют физический движок и реализация основана на событиях.
Опиши плиз поподробнее — интересно почитать, как это реализовывается, можно с примерами кода.
В этой статье описана концепция. Планирую написать статью, как только будет готов визуальный редактор ИИ, сейчас всё пишется в скриптах. Реализовать это можно по-разному. Даже во время съёмки видео код подвергся некоторому рефакторингу.
Реализация сейчас довольно проста:
класс — контекст мозгов объекта, который содержит в себе:
1) сознание — ссылку на активный обработчик команд,
2) подсознание — массив объектов обрабатывающих события от сенсоров и передающих события сознанию,
3) ссылку на интерфейс тела,
4) набор необходимых объектов (сенсоры, трекер и другие по мере потребностей);
используются три интерфейса:
* интерфейс тела — набор методов для управления телом,
* интерфейс сознания — набор методов, обрабатывающих команды от пользователя и подсознания (только один метод),
* интерфейс подсознания — только метод инциализации под контекстом, имплементация которого должна требовать у контекста необходимые объекты-сенсоры и подписываться на их события.
Спасибо. Очень интересно.
Я хотел использовать модель с приоритетами, но ваша мне нравится больше, да и в интеграции в игру будет лучше.
Но хотелось бы подробностей: как часто обрабатываются сенсоры, как часто отрабатывает AI, не слишком ли «затратны» расчёты сенсоров?
Работает довольно быстро. Самый медленный сенсор — это визуальный. Для получения видимых объектов используется testAABB — он работает очень быстро. Потом тестируется область видимости, ограничивающая по конусу видимости из глаз. И последняя самая медленная стадия — это трассировка луча из глаз до предмета. При большом количестве НПЦ (от 64-х, и они видят друг друга) трассировка сильно уменьшает FPS. В этом случае оптимизировать можно трассировку — не каждый квант игрового времени (их у нас 128 в секунду), а раз в секунду — вполне достаточно.
Sign up to leave a comment.