Поиск пути ИИ в Lode Runner

Я внедряю версию Lode Runner (эта версия), но не уверен, как воспроизвести эффект совместной работы миньонов, чтобы загнать игрока в угол, можно ли это сделать с помощью A * или есть лучший подход? Есть ли лучший алгоритм взаимодействия между миньонами (например, боидами) или лучшее решение — просто применить алгоритм отдельно для каждого из них?


person C. Porto    schedule 28.10.2014    source источник
comment
Где ты на этом накосячил? Сам начинаю реализацию Lode Runner, и у меня тот же вопрос :)   -  person Andrew Rubin    schedule 09.07.2020


Ответы (3)


Веб-игра Lode Runner

Исходный код для справки: https://github.com/SimonHung/LodeRunner
Вы можете посмотреть на lodeRunner.guard.js: алгоритм AI Enemy, портированный с языка C, оригинал Дугласа Э. Смита.

надежда может помочь вам!

person R3D3    schedule 25.11.2014

Пути — это линейные линии, по которым следуют объекты вашей игры, поэтому в такой игре, как Lode Runner, у вас будут очень простые пути.

Во-первых, я предлагаю вам написать какой-нибудь объект Plan, который может быть передан любой сущности (кроме игрока) в вашем буфере сущности и может быть выполнен соответствующим образом. Это может быть просто набор инструкций, например ['left', 'up', 'right'], или корректная координата, к которой должен двигаться миньон. Конечно, эта координата должна быть проанализирована на достоверность с точки зрения путей, которые вы загрузили для своих миньонов.

Во-вторых, вам нужен прогноз. Вам нужно предсказать все (крайние) позиции, в которых игрок может оказаться, и время, которое им потребуется, чтобы туда добраться. Например, если игрок движется так быстро, как только может, по маршруту X, чтобы оказаться в координате Y, ему потребуется Z секунд. Конечно, если игрок не сделает это в оптимальное время, миньоны приспособятся и уничтожат игрока.

В-третьих, сложность. Возможно, вам придется написать свой код, чтобы код в прогнозировании и определении пути ИИ стал более сложным и трудным. Я уверен, что вы слышали об искусственной сложности, которая представляет собой просто изменение значений в пути и предсказании.

Наконец, самое главное, сотрудничество. По сути, это всего лишь алгоритм, который учитывает все положения миньонов относительно положения игрока и организует их так, чтобы отрезать все возможные пути в тот момент, когда он их достигнет. Это можно написать разными способами, и я не могу привести здесь пример, потому что я не знаю, какой язык вы используете.

person Patema    schedule 28.10.2014

Большинство кодов, которые я вижу, следуют простому алгоритму.

Если игрок слева, а вы можете пойти направо, идите направо.

иначе, если игрок слева, и вы можете пойти налево, идите налево.

иначе, если игрок находится слева, и вы можете подняться, идите вверх.

иначе, если игрок находится слева, и вы можете спуститься, спуститесь.

иначе, если вы можете двигаться, то двигайтесь в случайном направлении.

иначе не двигаться.

Заставить монахов двигаться вопреки этому, как в Load Runner Online, нужны контрольные точки, где другой алгоритм заставляет их двигаться по-другому.

person Fred Knight    schedule 31.07.2017