Логика поведения NPC в играх

Есть ролик от БУЛДЖАТЬ про Yandere Simulator, кто не смотрел - рекомендую, так вот там озвучен один из косяков автора симулятора, что неписи запрограммированы на свое "поведение" бесконечными запросами: если у непися обед в 12:15, то он с самого появления на карте будет посылать запрос "сейчас 12:15?" каждую секунду до тех пор пока система не скажет "да, сейчас 12:15" и у непися сработает триггер "идти обедать".

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

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

Я это вижу так - как один ИИ (не в плане ИскИна) управляющий толпой неписей по расписанию, которое ему изначально заложишь.

Но как я вижу и как это на самом деле - две большие разницы. Поясните кто в курсе как логика такого процесса может/должна работать.

1111 показов
674674 открытия
11 репост
88 комментариев

Если коротко, то есть паттерн в программировании - наблюдатель. В тех же шарпах, например самый простой способ это сделать через делегаты и их производные (Action, Event). Суть в том, что НПЦ подписываются на интересующие их события и занимаются рутиной по-умолчанию. Как только событие происходит, все подписанные на него уведомляются и через другой паттерн, например машина состояний - меняют свое поведение соответственно.

Ответить

Ооо, ты меня прям заставил визуализировать как это происходит, спасибо!

Ответить

Чувак, ну оно же правильно работает! Я с утра, когда на работу заспавнился, сразу начинаю думать: «Ну когда же там 12:15 наконец, чтобы покушоц?»

Ответить

Так у нас тут хай лвл симуляция, а не игра на юнити

Ответить

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

Ответить

а часы заставить командовать учениками.Ну так у меня и написано, что так и должно быть на мой взгляд)

Ответить

Комментарий недоступен

Ответить