|
[ На главную ] -- [ Список участников ] -- [ Правила форума ] -- [ Зарегистрироваться ] |
On-line: |
Game Maker Форум / Вопросы и Ответы (Для Опытных) / ИИ для игр типа Lode Runner |
Страницы: 1 |
Автор | Сообщение |
darqand Группа: Участники Сообщений: 9 |
Добавлено: 05-03-2007 07:08 |
Подскажите алгоритм управления врагами. | |
SatanClaws мастер Группа: Участники Сообщений: 70 |
Добавлено: 05-03-2007 10:30 |
Я использовал следующий алгоритм: В объекте MAIN, отвечающим за весь костяк игры, создавал три массива: один (map) отражал конструкцию уровня, другой (aimap) предназначался для ИИ и отображал конструкцию в более простом виде: 0-если на данной точке можно стоять (т.е. это все лестницы и все пустые клетки, под которыми земля), 1-в остальных случаях, а третий (aipath) показывал ближайший маршрут к игроку. Последний обновлялся раз в несколько кадров. Происходило это следующим образом: 1) Очистка: присвоение всему массиву значения 0. Местоположение игрока обозначалось как 1. 2) Вычисление оптимального пути. Сложный цикл. Вначале ищем в массиве единицу, и присваеваем соседним пустым клеткам (aimap=0) значение 2, затем соседним с двойкам клеткам значение 3 и т.д., пока не охватим всю карту. 3) Единственное, что остается монастрам, это двигаться в ту сторону, где aipath меньше (не считая нулевых значений). Данный алгоритм помогает просчитывать путь любой сложности. Для ограничения "дальности обзора" можно ограничить количество шагов в основном цикле. |
|
darqand Группа: Участники Сообщений: 9 |
Добавлено: 05-03-2007 10:40 |
Спасибо. Алгоритм интересный, попробую реализовать. Но возник такой вопрос - а если у врага есть возможность спрыгнуть, а не бежать к лестнице, которая может быть в другом конце уровня? Или же делать разные массивы, если просчитывается путь наверх или если просчитывается путь вниз. |
|
SatanClaws мастер Группа: Участники Сообщений: 70 |
Добавлено: 05-03-2007 10:56 |
Можно в aimap пустые клетки разделить на 0 "наземные" и 2 "для полетов", и при поиске пути у вторых приращивать путь только в направлении сверху вниз. | |
DreamRunner магистр Группа: Сообщество GM Сообщений: 320 |
Добавлено: 05-03-2007 12:14 |
я видел лодераннеры, где алгоритм врагов был похож на (в объекте врага) hspeed=sign(o_player.x-x) И неплохо очень игралось:) |
|
SatanClaws мастер Группа: Участники Сообщений: 70 |
Добавлено: 05-03-2007 12:51 |
Согласен,вариант неплохой, нормальный результат и на два порядка проще реализация, но уж слишком простой... Не для таких крутых программеров, как мы, верно? | |
darqand Группа: Участники Сообщений: 9 |
Добавлено: 05-03-2007 14:39 |
А то! |
Страницы: 1 |
Game Maker Форум / Вопросы и Ответы (Для Опытных) / ИИ для игр типа Lode Runner |