Задать вопрос
Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (2)

Лучшие ответы пользователя

Все ответы (1)
  • Как работает ИИ в играх?

    @loysob
    Вопрос скорее про "скриптовую игровую логику в играх". Следует подумать о ключевом примере (псевдокод):
    monster1.walkTo(level.homepointA); // идет из текущей точки в точку A, длится минуты
    monster1.walkTo(level.coverpointD); // идет из точки A в точку D, длится минуты
    monster1.fireAt(enemy, 5.0); //  стрелять по врагу 5 минут
    monster1.walkTo(level.homepointA); // идти обратно в точку A

    Входные данные:
    - Статические: Разметка карты невидимыми объектами с именами. Их использует скрипт. У объектов могут быть свойства (высота укрытия например)
    - Времени выполнения: enemy - ссылка на объект врага. Обычно монстр получает уведомление о появлении игрока в радиусе видимости. (Думать о реализации событий и нотификаций)
    Императивные действия, "глаголы":
    Вы правильно заметили про потоки и последовательности. Хотелось бы чтобы действия "длились" и выполнялись последовательно и параллельно для разных ботов. В mainstream языках это невозможно стандартными методами. И поэтому там каждой строчке будет соответствовать состояние в стейт-машине. (Читать про FSM).
    В идеале же для работы в "последовательном стиле" можно воспользоваться coroutines. Это псевдо-потоки как раз для описанного случая. Разумеется, все описанные выше действия можно дополнять стандартными ветками if/else, циклами for/while и т.д.
    Вот пример интеграции Lua и C++: https://github.com/loyso/LuaCSP

    Для начинающего лучше конечно реализовать подход 1 бот = 1 стейт-машина.
    Ответ написан
    Комментировать