Бегущий по лезвию тяпки

14:21 

mob's ai

Antib
Ya! Ya! In his house at New Orlean, undead Lestat waits dreaming.
Переведу статейку для лучшего усвоения, ну и из тех соображений, что ничто не вечно в Промежсети, особенно стараниями всяких рос-бюрократ-заборов (да, как ни странно, страницы с обзором питонских ide или хоумрулов по "Ужасу Аркхэма" попадают под раздачу).

Улучшенный ai монстра. www.roguebasin.com

Некоторые рогалики используют простой ai. Он действует примерно так:

если ВижуГероя тогда АтакуюГероя()
иначе ДелатьНичего()

Удивительно, но это работает. Но чтобы дать монстрам больше стиля и индивидуальности его надо расширить.
читать дальше

@темы: Игрища, Шпаргалка

URL
Комментарии
2014-04-12 в 15:02 

Юрий Рэйн
λOther side of the memory crystal. …λ
Смотрел неделю назад: http://www.youtube.com/watch?v=Hb_zih4v7Rs Пишем ИИ для Russian AI Cup - может что-то из мыслей добавит (например упоминалось, как заставляли персонаж открывать карту, а не ходить по открытой части), хотя основная логика такая же, как в статье.

Это в принципе оффтоп, но когда смотрю на половину реализации "интеллектуальных" вещей, возникает похожее ощущение "это же по сути просто и как здорово работает!"

Группа монстров страшнее индивидуальных. Если в определённом направлении есть монстры мы увеличиваем значение страха для этого направления.
Или суммируем для "центра масс" (в координатах) группы. Впрочем, что эфективнее для вычислений - вопрос сложный. Но вычислять центр масс, на первый взгляд, может пригодиться для движения в группе.

если монстр в волнении (не понимаю!)
может "поставленный в тупик" = не отдавший предпочтения одному из состояний? Хотя это всего лишь прикидка.

*Возможное дополнение от Эйдена Райдера: Когда монстр занят, скажем ест
А когда ест, он может реагирвоать только на атаку в целях самозащиты.

Это позволит группам выбирать более серьёзные цели перед менее значимыми, но я не согласен, т.к. большинство монстров на уровне примерно равны по силе
Вариант: брать максимальную из тех, что ниже собственной силы? (А ведь у группы она большая)

Если кто-то боится и решает драпать, он не будет тратить время на атаку слабой цели или сбор хлама, который сделает бегство тяжелее.
Согласен со всем комментарием, впрочем, персонаж можем прихватить вещь, желательность которой много больше её веса.

2014-04-12 в 15:36 

Antib
Ya! Ya! In his house at New Orlean, undead Lestat waits dreaming.
Или суммируем для "центра масс" (в координатах) группы. Впрочем, что эфективнее для вычислений - вопрос сложный. Но вычислять центр масс, на первый взгляд, может пригодиться для движения в группе.

Читаю следующую статью на ту же тему и там этот метод приводится. Сразу думается, что при разнообразной игровой механики этот метод имеет существенный недостаток. Представь себе, что у моба такой "центр ненависти" совпадает или близок к позиции какого-нибудь незначительного по силе союзника. Он шарахает туда фаерболом и вместе с тучей раненых врагов обретает ещё и агрессивных бывших друзей :)

А когда ест, он может реагирвоать только на атаку в целях самозащиты.
Вот тут я предвкушаю много интересного, когда доберусь.

Согласен со всем комментарием, впрочем, персонаж можем прихватить вещь, желательность которой много больше её веса.

Это стоит вспомниьт когда я доберусь до инвентори и объектов.

URL
2014-04-12 в 16:16 

Юрий Рэйн
λOther side of the memory crystal. …λ
Представь себе, что у моба такой "центр ненависти" совпадает или близок к позиции какого-нибудь незначительного по силе союзника. Он шарахает туда фаерболом и вместе с тучей раненых врагов обретает ещё и агрессивных бывших друзей :)
Согласен. Возможность атаки я в такой ситуации не предполагал.

Это стоит вспомниьт когда я доберусь до инвентори и объектов.
Когда это писал,представлял маленький алмаз невероятной стоимости и бегущего мимо него персонажа с мыслями "слишком тяжёлый".

Интересно, зачит что-то пишется?

2014-04-12 в 18:33 

Antib
Ya! Ya! In his house at New Orlean, undead Lestat waits dreaming.
Когда это писал,представлял маленький алмаз невероятной стоимости и бегущего мимо него персонажа с мыслями "слишком тяжёлый".
Жизнь дороже алмаза.

Интересно, зачит что-то пишется?

Ну я занимаюсь этим в свободное от работы время, когда ещё не устал и ничего не отвлекает, при этом по ходу пьесы учусь программировать.
В наличии есть вычисления расстояний и направлений по координатам, генерация уровня в виде словаря tiles[(x,y)] = TileType и поиск пути по А*,очередь событий с поддержкой прерывания одного действия другим, тип данных для статов персонажа с поддержкой баффа/дебаффа и экспы, вложенной в прокачку стата.
Я планирую пока так:
1. придумать как складировать наблюдения персонажа чтобы было о чём думать той самой evaluation function
2. состояния на основе этих наблюдений типа Страх, Ненависть и Покой.
3. и наконец попытаться собрать всё это время и пространство в кучку, чтобы по сгенерёному уровню один моб побегал от другого.
Если это заработает imho можно будет сказать, что что-то пишется.

URL
2014-04-13 в 10:20 

Antib
Ya! Ya! In his house at New Orlean, undead Lestat waits dreaming.
Смотрел неделю назад: www.youtube.com/watch?v=Hb_zih4v7Rs Пишем ИИ для Russian AI Cup - может что-то из мыслей добавит

Посмотрел, интересно, но о тактическом взаимодействии персонажей пока думать рано. Я понял, что мне ещё надо толком продумать скиллы, их проверку и здоровье персонажа.

URL
2014-04-13 в 10:46 

Юрий Рэйн
λOther side of the memory crystal. …λ
Жизнь дороже алмаза.
Даже если на него можно купить много необходимых вещей, а враг далеко?)

1. придумать как складировать наблюдения персонажа чтобы было о чём думать той самой evaluation function
В голову приходит в общем-то логичная мысль, о использовании списка, сортируемого по значению важности, если таковая будет. (Или какого-нибудь наворота вроде кучи - heapq. Суть в принципе одна.)

2. состояния на основе этих наблюдений типа Страх, Ненависть и Покой.
И Желание. (желать предмет, еду, вступить в группу, а в случае с противником пересекается с ненавистью).
Так же, как и система скиллов - достаточно сложная задача.

2014-04-13 в 11:36 

Antib
Ya! Ya! In his house at New Orlean, undead Lestat waits dreaming.
В голову приходит в общем-то логичная мысль, о использовании списка, сортируемого по значению важности, если таковая будет. (Или какого-нибудь наворота вроде кучи - heapq. Суть в принципе одна.)

На heapq у меня как раз очередь событий.

По объектам у меня пока мыслей вообще нет. От лишних очистил, нужных не надумал. Соответственно Желание и покупку всякого на алмазы надо оставить на потом.

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

Скилы я хочу сделать более влияющими чем атрибуты, так что они должны быть чем-то вроде множителей. Тут я ещу думаю. Просто суммировать Ловкость + Скрытность как в ВтМ не хочу, т.к. логичнее считаю когда тот кто больше понимает в скрытности найдёт способ спрятаться так, как ловкий, но мало секущий в маскировке.

URL
Комментирование для вас недоступно.
Для того, чтобы получить возможность комментировать, авторизуйтесь:
 
РегистрацияЗабыли пароль?
главная