Ещё одной системой, которая влияет на геймплей и различается у людей и заражённых – система раздражителей.
Когда человек видит луч фонарика или получает кирпичом в лицо – они понимают, что рядом кто-то есть и стараются найти причину. Создавая, причина-следственную связь. Заражённые уже не настолько разумные и реагируют только на сам раздражитель, вместо попытки найти того, кто кинул кирпич, они идут к самому кирпичу. Такая реакция даёт большое разнообразие в геймплее и создаёт ценность кирпичей и бутылок.
Но в этой системе были и проблемы, когда игрок кидал коктейль Молотова, звук разбивающейся бутылки привлекал всех заражённых поблизости и они все шли в пламя и погибали. Это весело (веселее только прохождение с включённым DEV режимом и бесконечным огнемётом), но слишком имбалансно. Разработчики решили эту проблему костылём, ограничив количество персонажей на которых может взаимодействовать пламя.
Ещё одна механика – дымовые шашки, которые позволяют разорвать зрительный контакт и маскировать передвижения игрока. Что логично, они должны быть бесполезны на заражённых, они ведь не видят, а слышат. Но это было бы это скучно, так что разработчики сделали что дымовые шашки ещё перекрывают слух. Таким образом, будучи привлеченными взрывом дымовой шашки, зараженные попадают в облако и становятся, по сути, слепыми и глухими. В награду игрок получает возможность убежать или двигаться среди отвлеченных зараженных, удушая бегунов и уничтожая щелкунов заточками.
Когда человек видит луч фонарика или получает кирпичом в лицо – они понимают, что рядом кто-то есть и стараются найти причину. Создавая, причина-следственную связь. Заражённые уже не настолько разумные и реагируют только на сам раздражитель, вместо попытки найти того, кто кинул кирпич, они идут к самому кирпичу. Такая реакция даёт большое разнообразие в геймплее и создаёт ценность кирпичей и бутылок.
Но в этой системе были и проблемы, когда игрок кидал коктейль Молотова, звук разбивающейся бутылки привлекал всех заражённых поблизости и они все шли в пламя и погибали. Это весело (веселее только прохождение с включённым DEV режимом и бесконечным огнемётом), но слишком имбалансно. Разработчики решили эту проблему костылём, ограничив количество персонажей на которых может взаимодействовать пламя.
Коктейли Молотова - дорогое удовольствие, и они должны быть очень эффективными, но не настолько, чтобы лишать игру сложности.
Ещё одна механика – дымовые шашки, которые позволяют разорвать зрительный контакт и маскировать передвижения игрока. Что логично, они должны быть бесполезны на заражённых, они ведь не видят, а слышат. Но это было бы это скучно, так что разработчики сделали что дымовые шашки ещё перекрывают слух. Таким образом, будучи привлеченными взрывом дымовой шашки, зараженные попадают в облако и становятся, по сути, слепыми и глухими. В награду игрок получает возможность убежать или двигаться среди отвлеченных зараженных, удушая бегунов и уничтожая щелкунов заточками.
👍36🔥4😁4👌2🤯1
Мы поговорили о том, как с логической стороны работает ИИ, как он различается между людьми и разными типами заражённых, так давайте теперь поговорим над его технической реализацией!
Система ИИ разделена две части, высокоуровневая логика принятия решений (навыки aka скиллы) и низкоуровневая логика решений (поведение aka бехейверы). Говоря определениями, система скиллов определяет, что должен делать персонаж, а система поведения продумывает, как и реализует эти решения.
Самый простой пример: для передвижения персонажей используется бехейвер
В это время тот самый бехейвер
Интересный момент, что аналогичная система реализована и используется у нас в сторителлинге. К примеру, вспомним Брендона. В определённые моменты дня у него в скрипте (наш аналог системы скиллов) происходит выбор, куда пойти, в этот момент не решается как пойти или на какую точку, нет, он думает пойти качаться или перекусить. Когда на основе его характеристик и мышления выбирается что именно он хочет делать, реализация этой задачи падает на
Система ИИ разделена две части, высокоуровневая логика принятия решений (навыки aka скиллы) и низкоуровневая логика решений (поведение aka бехейверы). Говоря определениями, система скиллов определяет, что должен делать персонаж, а система поведения продумывает, как и реализует эти решения.
Самый простой пример: для передвижения персонажей используется бехейвер
move-to
, который используется в большом количестве разных навыков. Навыки решают, что делать, основываясь на мотивах и возможностях персонажа, а также на его окружении, буквально отвечая на вопросы «Хочу ли я напасть, спрятаться или убежать?» или «В каком месте мне тактически лучше находиться?». Как только решение принято, то вызывается бехейвер который реализовывает это «желание». Например, навык может вызвать бехейвер move-to
, а затем ждать завершения его работы.В это время тот самый бехейвер
move-to
пытается добраться до места назначения используя любые доступные возможности (напоминает работу баритона в майне :D), решая какой маршрут выбрать и какие анимации проигрывать в этот момент.Интересный момент, что аналогичная система реализована и используется у нас в сторителлинге. К примеру, вспомним Брендона. В определённые моменты дня у него в скрипте (наш аналог системы скиллов) происходит выбор, куда пойти, в этот момент не решается как пойти или на какую точку, нет, он думает пойти качаться или перекусить. Когда на основе его характеристик и мышления выбирается что именно он хочет делать, реализация этой задачи падает на
BehaviorManager
, который уже низкоуровнево пристраивает маршрут до выбранного места обходя дырки и открывая двери и контролирует его вплоть до точки назначения.❤🔥31❤6🔥6😍2🤩1🙉1
В этот раз мы уйдём ещё глубже, так что этот пост может быть сложнее для ребят далёких от мира программирования, так что не стесняйтесь задавать вопросы в комментариях!
Ещё одна вещь, которая заинтересовала меня в том, как устроен ИИ в The Last of Us – дизайн кода. В нём никогда не упоминались типы персонажей, а вместо этого указывались наборы характеристик, определяющих каждый из типов. Лучшее описание этому – все типы заражённых имеют всего один класс C++ и различаются только набором навыков и значениями переменных в файлах данных.
К примеру, код ссылается на тип зрения персонажа вместо того, чтобы проверить, является ли он бегуном или щелкуном. Это может казаться незначительным отличием, но хорошо показывает усилия разработчиков по сохранению общего характера кода. Вместо того чтобы разносить определения персонажей в виде куч проверок по всему коду, они сосредоточили их на настраиваемых данных.
Из плюсов которое это даёт: игровые дизайнеры, которые далеки от программирования, могли не трогая команду ИИ самостоятельно редактировать параметры персонажей. А ещё это невероятно упрощает добавление новых типов таковых, вместо создания новых классов и поиска в коде всех мест, где идёт ссылка на персонажей достаточно просто добавить или удалить нужные навыки!
Но почему все не делают так? Такой подход требует невероятной и постоянной бдительности. У разработчиков было много случаев, когда они испытывали искушение упросить немного жизнь и добавить проверку на определённый тип для реализации одной фичи. Но эта одна вещь имеет тенденцию разрастаться по мере расширения и повторного использования кода. Тут урок заключается в том, чтобы оставаться верным своим принципам проектирования и разработки, ведь сложность при проектировании потом окупится стабильностью и простотой реализации новых возможностей.
Ещё одним преимуществом стало – упрощение реализации системы уровней сложности. Вместо десятков и сотен проверок на текущий уровень таковой, достаточно поменять параметры в скиллах персонажей и готово!
В целом, такой подход в разработке называется Data-driven, вы кстати могли видеть его, ведь последние пару лет Mojang активно вносят его в Minecraft, позволяя датапаками не только редактировать характеристики и поведение игры, но и создавать свои собственные предметы и энтитей! И это без навыков программирования.
Кстати, даже среди моих разработок есть применения data-driven подхода, это система настроек чатов в Имперском Стражнике! Вместо задачи всех десятков параметров кучами проверок и условий, они заданы лишь определениями типов и ссылками на языковые строки и дефолтными настройками, пример вы можете увидеть на скриншоте, который я подкрепил к посту. Вот как-то так :3
Ещё одна вещь, которая заинтересовала меня в том, как устроен ИИ в The Last of Us – дизайн кода. В нём никогда не упоминались типы персонажей, а вместо этого указывались наборы характеристик, определяющих каждый из типов. Лучшее описание этому – все типы заражённых имеют всего один класс C++ и различаются только набором навыков и значениями переменных в файлах данных.
К примеру, код ссылается на тип зрения персонажа вместо того, чтобы проверить, является ли он бегуном или щелкуном. Это может казаться незначительным отличием, но хорошо показывает усилия разработчиков по сохранению общего характера кода. Вместо того чтобы разносить определения персонажей в виде куч проверок по всему коду, они сосредоточили их на настраиваемых данных.
Из плюсов которое это даёт: игровые дизайнеры, которые далеки от программирования, могли не трогая команду ИИ самостоятельно редактировать параметры персонажей. А ещё это невероятно упрощает добавление новых типов таковых, вместо создания новых классов и поиска в коде всех мест, где идёт ссылка на персонажей достаточно просто добавить или удалить нужные навыки!
Но почему все не делают так? Такой подход требует невероятной и постоянной бдительности. У разработчиков было много случаев, когда они испытывали искушение упросить немного жизнь и добавить проверку на определённый тип для реализации одной фичи. Но эта одна вещь имеет тенденцию разрастаться по мере расширения и повторного использования кода. Тут урок заключается в том, чтобы оставаться верным своим принципам проектирования и разработки, ведь сложность при проектировании потом окупится стабильностью и простотой реализации новых возможностей.
Ещё одним преимуществом стало – упрощение реализации системы уровней сложности. Вместо десятков и сотен проверок на текущий уровень таковой, достаточно поменять параметры в скиллах персонажей и готово!
В целом, такой подход в разработке называется Data-driven, вы кстати могли видеть его, ведь последние пару лет Mojang активно вносят его в Minecraft, позволяя датапаками не только редактировать характеристики и поведение игры, но и создавать свои собственные предметы и энтитей! И это без навыков программирования.
Кстати, даже среди моих разработок есть применения data-driven подхода, это система настроек чатов в Имперском Стражнике! Вместо задачи всех десятков параметров кучами проверок и условий, они заданы лишь определениями типов и ссылками на языковые строки и дефолтными настройками, пример вы можете увидеть на скриншоте, который я подкрепил к посту. Вот как-то так :3
❤40🔥8👾4❤🔥3🦄3🙊2🤩1
Рассматривая систему навыков персонажей, можно находить и другие схожести с нашими любимыми играми. Мы знаем как работает взаимодействие навыков и поведения, но как работает выбор навыков, которые будут действовать на персонажа в тот или иной момент?
Тут мы и встречаемся с ещё одной схожей системой. У каждого персонажа выстроен список приоритетов навыков, от высшего к низшему. Во время определения код идёт по каждому навыку сверху вниз и ищет первый который будет допустим в текущих условиях. Затем этот навык будет исполняться до тех пор, пока текущий не закончится или не активизируется более приоритетный.
С меня лайк, если вы уже догадались, где ещё есть такая система, конечно же это Minecraft! А если быть точным, система Goal-ов у сущностей в игре. Они работают полностью аналогично. Специально для вас, прикрепил скришнотик декомпилированной логики Панды.
Давайте вместе разберём все гоалы (далее задачи) у Панды:
Самая приоритетная задача у Панды – плавать если она находится в жидкости.
Далее идёт задача паниковать если она получила урон, стандартная логика спасения своей жизни.
Следующая по приоритету задача у панды – размножение.
И уже только затем идёт задача на атаку, причём учитывая как выстроен targetSelector – панда атакует только тех, кто её саму атаковал первым. Отсюда лайвхак, если на вас напала панда, размножайте их :D
Далее идёт TemptGoal – панда следует за игроком который держит еду которую любят панды.
Затем идёт две задачи с одинаковым приоритетом PandaAvoidGoal на игрока с расстоянием 8 блоков и на монстров с расстоянием 4 блока, панда защищается и избегает нас.
А дальше начинается кайф…
Задача на посидеть, задача на полежать на спинке, задача чихнуть :D
Когда уже всё это было сделано мы доходим до уровня приоритета 9 – Посмотреть на игрока.
Игроков нет? – случайно осматриваться вокруг
Смотреть вокруг скучно? – хреначим кувырок!
Ну и конечно после всего веселья надо следовать за родителем, если ты маленькая пандочка.
А если большая – то просто случайно блуждаем, избегая воды.
Вот так, посмотрели систему гоалов панды и узнали её планы на дни :3
Тут мы и встречаемся с ещё одной схожей системой. У каждого персонажа выстроен список приоритетов навыков, от высшего к низшему. Во время определения код идёт по каждому навыку сверху вниз и ищет первый который будет допустим в текущих условиях. Затем этот навык будет исполняться до тех пор, пока текущий не закончится или не активизируется более приоритетный.
С меня лайк, если вы уже догадались, где ещё есть такая система, конечно же это Minecraft! А если быть точным, система Goal-ов у сущностей в игре. Они работают полностью аналогично. Специально для вас, прикрепил скришнотик декомпилированной логики Панды.
Давайте вместе разберём все гоалы (далее задачи) у Панды:
Самая приоритетная задача у Панды – плавать если она находится в жидкости.
Далее идёт задача паниковать если она получила урон, стандартная логика спасения своей жизни.
Следующая по приоритету задача у панды – размножение.
И уже только затем идёт задача на атаку, причём учитывая как выстроен targetSelector – панда атакует только тех, кто её саму атаковал первым. Отсюда лайвхак, если на вас напала панда, размножайте их :D
Далее идёт TemptGoal – панда следует за игроком который держит еду которую любят панды.
Затем идёт две задачи с одинаковым приоритетом PandaAvoidGoal на игрока с расстоянием 8 блоков и на монстров с расстоянием 4 блока, панда защищается и избегает нас.
А дальше начинается кайф…
Задача на посидеть, задача на полежать на спинке, задача чихнуть :D
Когда уже всё это было сделано мы доходим до уровня приоритета 9 – Посмотреть на игрока.
Игроков нет? – случайно осматриваться вокруг
Смотреть вокруг скучно? – хреначим кувырок!
Ну и конечно после всего веселья надо следовать за родителем, если ты маленькая пандочка.
А если большая – то просто случайно блуждаем, избегая воды.
Вот так, посмотрели систему гоалов панды и узнали её планы на дни :3
🔥35❤🔥7❤4🤝3🤯2🎉1🤗1
Помните те прекрасные (нет) дни, когда нам отключали мобильный интернет? Я в те дни был на учёбе, а там периодически мне приходится пользоваться нейронками — для помощи с экспериментами или коррекции постов.
И вот представьте: мобильного интернета нет, через Wi‑Fi моё образовательное учреждение блокирует VPN, а мне позарез нужно попросить помощи. И тут на помощь пришёл мой хороший знакомый! Вы точно его помните — Котя, автор FinWave! Он к нам с еще одной классной вещью!
Вы наверняка видели кучу ботов с GPT в телеге, но у многих — просто чат и отдельная команда для создания картинки. А если нужен целостный диалог с дополнительными фишками — фигвам. Котя решил сделать хорошо и сделал Godlike GPT! Мне самому очень понравилась реализация и удобство, так что уверен — вам тоже зайдёт. Но что там есть?
— Оплата за фактическое использование, вместо подписок (ура, не платим $23 за пару запросов).
— Разные модели, включая очень мощную и крутую GPT-4.1, которая даёт жару или GPT-4.1-mini, которая может быть немножко глупенькой, но очень дешёвая.
— Поддержка войсов, файлов, картинок и стикеров прямо в чате — и это без лимита 10 файлов в день (да, OpenAI?).
— Он даже реакции в Телеге понимает, РЕАКЦИИ, ДЖОННИ!
А самая топовая фича — пресеты. Можно создать пресет доктора, психолога, программиста (гача-друга?), настроить как угодно и использовать в пару нажатий. Специально для вас даже сделали пресет для тех, кто немного не понял мои последние посты — попробуйте сами!
А самое главное, Котя сейчас даёт бесплатный тест для всех. Но кто я, если бы не договорился на бонус для вас❤️ . При пополнении баланса по ссылке вы получите приятный бонус:
👉 @godlike_gpt_bot
(Не забудьте активировать бесплатный тест кнопочкой, которая появится после запуска бота)
И вот представьте: мобильного интернета нет, через Wi‑Fi моё образовательное учреждение блокирует VPN, а мне позарез нужно попросить помощи. И тут на помощь пришёл мой хороший знакомый! Вы точно его помните — Котя, автор FinWave! Он к нам с еще одной классной вещью!
Вы наверняка видели кучу ботов с GPT в телеге, но у многих — просто чат и отдельная команда для создания картинки. А если нужен целостный диалог с дополнительными фишками — фигвам. Котя решил сделать хорошо и сделал Godlike GPT! Мне самому очень понравилась реализация и удобство, так что уверен — вам тоже зайдёт. Но что там есть?
— Оплата за фактическое использование, вместо подписок (ура, не платим $23 за пару запросов).
— Разные модели, включая очень мощную и крутую GPT-4.1, которая даёт жару или GPT-4.1-mini, которая может быть немножко глупенькой, но очень дешёвая.
— Поддержка войсов, файлов, картинок и стикеров прямо в чате — и это без лимита 10 файлов в день (да, OpenAI?).
— Он даже реакции в Телеге понимает, РЕАКЦИИ, ДЖОННИ!
А самая топовая фича — пресеты. Можно создать пресет доктора, психолога, программиста (гача-друга?), настроить как угодно и использовать в пару нажатий. Специально для вас даже сделали пресет для тех, кто немного не понял мои последние посты — попробуйте сами!
#геймдев что такое Data-driven подход?
А самое главное, Котя сейчас даёт бесплатный тест для всех. Но кто я, если бы не договорился на бонус для вас
👉 @godlike_gpt_bot
(Не забудьте активировать бесплатный тест кнопочкой, которая появится после запуска бота)
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥7❤3😁3🏆3🎉1
Мы разобрали один день панды, так что давайте вернёмся в тлоу и изучим дни заражённых, но в этот раз дав чуть больше внимания каждому из гоалов.
И так, для начала предлагаю вам изучить таблицу распределения гоалов у сущностей, я прикрепил её к посту. Почти все заражённые имеют свои различия... Почти...
Давайте начнём с навыка "Погоня за игроком". У большинства заражённых тактика боя максимально проста - обнаружив врага, они бегут на свою цель и убивают её. Но давайте изучим работу подробнее.
Когда на заражённого действует раздражитель (урон или звук), включается наш навык и первое что он делает - крик в сторону раздражителя чтобы предупредить игрока о том, что его обнаружили.
Затем навык вызывает бехейвер move-to, который отслеживает позицию игрока и ведёт заражённого к нему.
Во время погони персонаж время от времени приостанавливаться, чтобы дать игроку возможность спрятаться или подготовить атаку, но вместо остановки бехейвера движения, в этот момент вызывается бехейвер поиска "infected-canvass", о котором мы поговорим в следующем посте. В этот момент заражённый обновляет своё понимание мира и позицию игрока, просчитывая возможность того, что тот спрятался или убежал.
И так, для начала предлагаю вам изучить таблицу распределения гоалов у сущностей, я прикрепил её к посту. Почти все заражённые имеют свои различия... Почти...
Давайте начнём с навыка "Погоня за игроком". У большинства заражённых тактика боя максимально проста - обнаружив врага, они бегут на свою цель и убивают её. Но давайте изучим работу подробнее.
Когда на заражённого действует раздражитель (урон или звук), включается наш навык и первое что он делает - крик в сторону раздражителя чтобы предупредить игрока о том, что его обнаружили.
Затем навык вызывает бехейвер move-to, который отслеживает позицию игрока и ведёт заражённого к нему.
Во время погони персонаж время от времени приостанавливаться, чтобы дать игроку возможность спрятаться или подготовить атаку, но вместо остановки бехейвера движения, в этот момент вызывается бехейвер поиска "infected-canvass", о котором мы поговорим в следующем посте. В этот момент заражённый обновляет своё понимание мира и позицию игрока, просчитывая возможность того, что тот спрятался или убежал.
💋21🔥7❤5🕊2😇2
Давайте отвлечёмся от рубрики и немного вспомним старые рубрики :D
Что посмотреть во время миграции (в моём случае оказалось, что посмотреть, когда ты целый день в МВД😄)?
Все мы знаем СТС, далеко не многие шоу у них успешны, но мне удалось найти среди них незамеченный самородок.
Встречайте - Большой Побег, невероятно кайфовое шоу-квест. Оно интересно со стороны того как действуют участники, со стороны что ты сам порой долго думаешь как разгадать ту или иную загадку и со стороны наличия юмора.
Продюсерам удалось собрать довольно органичную команду (конечно же звёзд, но тут это не так крижово как в новом галелео).
Ну и да, любители ТЛОУ, первый эпизод вы зацените.Говорят Маркони всё-ещё пытается угадать номер автобуса
Что посмотреть во время миграции (в моём случае оказалось, что посмотреть, когда ты целый день в МВД😄)?
Все мы знаем СТС, далеко не многие шоу у них успешны, но мне удалось найти среди них незамеченный самородок.
Встречайте - Большой Побег, невероятно кайфовое шоу-квест. Оно интересно со стороны того как действуют участники, со стороны что ты сам порой долго думаешь как разгадать ту или иную загадку и со стороны наличия юмора.
Продюсерам удалось собрать довольно органичную команду (конечно же звёзд, но тут это не так крижово как в новом галелео).
Ну и да, любители ТЛОУ, первый эпизод вы зацените.
YouTube
Большой побег | Выпуск 1 | Заброшенная больница
Владимир Маркони – https://youtube.com/@VladimirMarkoni
Алексей Столяров – https://youtube.com/@fitnessstoliarov
Эльдар Джарахов – https://youtube.com/@dzharakhov
Магомед Муртазаалиев – https://youtube.com/@Murtazaaliewmaga
Александр Белькович – http…
Алексей Столяров – https://youtube.com/@fitnessstoliarov
Эльдар Джарахов – https://youtube.com/@dzharakhov
Магомед Муртазаалиев – https://youtube.com/@Murtazaaliewmaga
Александр Белькович – http…
🔥39❤6😍4🤗2😘2🕊1
Админ если что живой (на процентов 30), просто сдаёт экзамен и диплом :D
❤113🔥15😱11👍5😁3🤷♀1🤷♂1🍓1🎄1🤷1
Неделя без постов... Да...
Я немного ожил чтобы рассказать вам что да как, ну и подкинуть контента.
Начнём с хорошего, экзамен я сдал на высший бал, диплом ещё пока в работе)
Вообще, я планировал вернуться к вам после экзамена и завести гору контента, но у меня тут возникли проблемы, много юридических приколов, суд и заявления, короче я прохожу ещё один интересный уровень с головоломками в игре "жизнь".
Ну а пока я утопаю в документах, Никилодиум (а вернее Никитунс) выпустил новый мультфильм который во-первых зашёл мне, во-вторых, я уверен что зайдёт вам. Первый эпизод доступен на ютубе.
Я немного ожил чтобы рассказать вам что да как, ну и подкинуть контента.
Начнём с хорошего, экзамен я сдал на высший бал, диплом ещё пока в работе)
Вообще, я планировал вернуться к вам после экзамена и завести гору контента, но у меня тут возникли проблемы, много юридических приколов, суд и заявления, короче я прохожу ещё один интересный уровень с головоломками в игре "жизнь".
Ну а пока я утопаю в документах, Никилодиум (а вернее Никитунс) выпустил новый мультфильм который во-первых зашёл мне, во-вторых, я уверен что зайдёт вам. Первый эпизод доступен на ютубе.
❤58👏15💘7🫡4❤🔥3🔥3🍓2👍1💊1
Почти месяц без постов... Ну что я вам скажу 🙈
Кто-то завершил государственный экзамен и защитил диплом на высший балл😄
Юридические приколы пока ещё идут, но тоже начинают отпускать (200+ листов дела Джонни, БОЛЬШЕ ДВУХСОТ)
Так что... ДА, я начинаю возвращаться к вам, готовьтесь к контенту :3
Кто-то завершил государственный экзамен и защитил диплом на высший балл
Юридические приколы пока ещё идут, но тоже начинают отпускать (200+ листов дела Джонни, БОЛЬШЕ ДВУХСОТ)
Так что... ДА, я начинаю возвращаться к вам, готовьтесь к контенту :3
Please open Telegram to view this post
VIEW IN TELEGRAM
💋88👏27❤5👍4🔥3🤩3👌3🆒2💊1
Помните этот момент, вы случайно были замечены одним из заражённых, проходит минута и вот за вами идут уже все заражённые дома. Почему так случалось? Где реализм?
Как вы уже знаете, заражённые не общаются друг с другом. Они не обмениваются информацией ни в одной части кода. Это соответствует представлению о том, что они не обладают интеллектом и реагируют на стимулы в окружающей среде исключительно инстинктивно.
Следовательно, если зараженный обнаруживает игрока и начинает преследовать его, другие зараженные, которые не обнаружили игрока напрямую, остаются равнодушными. Хотя это и логично, на практике зараженные казались слишком невосприимчивыми к окружающей среде.
По этому, в качестве альтернативы Naughty Dog добавили навык «follow», который позволяет одному персонажу следовать за другим, который что-то преследует. Следующий персонаж не получает никакой информации о преследуемом объекте, он просто испытывает побуждение следовать за ним.
Просто и изящно, не так ли?
Как вы уже знаете, заражённые не общаются друг с другом. Они не обмениваются информацией ни в одной части кода. Это соответствует представлению о том, что они не обладают интеллектом и реагируют на стимулы в окружающей среде исключительно инстинктивно.
Следовательно, если зараженный обнаруживает игрока и начинает преследовать его, другие зараженные, которые не обнаружили игрока напрямую, остаются равнодушными. Хотя это и логично, на практике зараженные казались слишком невосприимчивыми к окружающей среде.
По этому, в качестве альтернативы Naughty Dog добавили навык «follow», который позволяет одному персонажу следовать за другим, который что-то преследует. Следующий персонаж не получает никакой информации о преследуемом объекте, он просто испытывает побуждение следовать за ним.
Просто и изящно, не так ли?
👍42❤17🔥5🌚4👏2⚡1👀1
Бессонный кодер
Мы разобрали один день панды, так что давайте вернёмся в тлоу и изучим дни заражённых, но в этот раз дав чуть больше внимания каждому из гоалов. И так, для начала предлагаю вам изучить таблицу распределения гоалов у сущностей, я прикрепил её к посту. Почти…
Продолжая изучать скиллы, давайте рассмотрим «Засаду» aka «Ambush».
Это уникальный боевой навык сталкеров который заменять им навык преследования, но интересно, он был создан лишь на поздней стадии разработки игры. Создавая тип заражённых, который боялся бы света и сдерживался бы фонариком (привет Alan Wake), команда Naughty Dog столкнулась с тем, что в итоге было трудно сдержать баланс их опасности и полной бесполезности фонарика, в результате идея сменилась.
В итоговом варианте сталкеры перемещаются из укрытия в укрытие давая игроку только мелком увидеть их в потёмках, выжидая, когда игрок подойдёт ближе и нападали. За счёт этого при встрече сталкеров игрок автоматически начинал накручивать себе саспенс и максимально опасаться любого угла. Отдельной фичей стало что попытки сталкеров «спрятаться» приравнивали сложность и напряжение поиска последнего сталкера к аналогичному для первого.
Ещё одна уникальность навыка – он единственный среди заражённых использует механизм укрытий, но, кроме него эту систему используют и люди, так что на них её и рассмотрим.
Бойся каждого угла, кто знает, какой дорогой пойдёт сталкер…
Это уникальный боевой навык сталкеров который заменять им навык преследования, но интересно, он был создан лишь на поздней стадии разработки игры. Создавая тип заражённых, который боялся бы света и сдерживался бы фонариком (привет Alan Wake), команда Naughty Dog столкнулась с тем, что в итоге было трудно сдержать баланс их опасности и полной бесполезности фонарика, в результате идея сменилась.
В итоговом варианте сталкеры перемещаются из укрытия в укрытие давая игроку только мелком увидеть их в потёмках, выжидая, когда игрок подойдёт ближе и нападали. За счёт этого при встрече сталкеров игрок автоматически начинал накручивать себе саспенс и максимально опасаться любого угла. Отдельной фичей стало что попытки сталкеров «спрятаться» приравнивали сложность и напряжение поиска последнего сталкера к аналогичному для первого.
Ещё одна уникальность навыка – он единственный среди заражённых использует механизм укрытий, но, кроме него эту систему используют и люди, так что на них её и рассмотрим.
Бойся каждого угла, кто знает, какой дорогой пойдёт сталкер…
❤30👍2🔥1🕊1👀1🙉1
А это уже 50-й пост рубрики про игры и технологии!
Настало время для последнего интересующего нас навыка — «поиск» aka «search».
Когда заражённый теряет игрока — он начинает искать. И делает это не как человек. ИИ заражённых строится вокруг концепции хаотичного и органически выглядящего поиска.
Когда игрок убегает и прячется, заражённый включает навык поиска и здесь запускается целый алгоритм.
1) Сначала выстраивается навигационная сетка (далее навмеш) с зонами которые неизвестны для заражённого.
2) Простраивается граф точек, ведущих к укрытиям, и начинаются обследования.
3) При этом обследования идут не по сетке слева направо или по маршруту, а по принципу пристраивания через случайный набор анимаций.
Т.е. ИИ не управляет тем, куда пойдёт заражённый, он выбирает анимацию которая даст максимальный обзор.
К примеру скриншот в посте, на 3 этапе у нас есть 2 доступные анимации, движение чуть вперёд или резкий разворот, идёт расчёт насколько каждая анимация закроет точки на карте, решив что вторая более производительная в этом плане он запускает эту анимацию и помечает просмотренные точки как готовые.
4) А затем этот механизм продолжается до тех пор, пока не будет найден игрок или пока неизведанные точки не закончатся.
Это довольно интересный и необычный механизм поиска который подчёркивает хаотичную природу заражённых, надеюсь я смог понятно объяснить его для вас (чтобы мне осознать его, ушло пару дней).
А на этом у нас кончается цикл постов про ИИ заражённых, надеюсь вам понравилось такое специфичное отступление с детальным раскрытием темы)
Настало время для последнего интересующего нас навыка — «поиск» aka «search».
Когда заражённый теряет игрока — он начинает искать. И делает это не как человек. ИИ заражённых строится вокруг концепции хаотичного и органически выглядящего поиска.
Когда игрок убегает и прячется, заражённый включает навык поиска и здесь запускается целый алгоритм.
1) Сначала выстраивается навигационная сетка (далее навмеш) с зонами которые неизвестны для заражённого.
2) Простраивается граф точек, ведущих к укрытиям, и начинаются обследования.
3) При этом обследования идут не по сетке слева направо или по маршруту, а по принципу пристраивания через случайный набор анимаций.
Т.е. ИИ не управляет тем, куда пойдёт заражённый, он выбирает анимацию которая даст максимальный обзор.
К примеру скриншот в посте, на 3 этапе у нас есть 2 доступные анимации, движение чуть вперёд или резкий разворот, идёт расчёт насколько каждая анимация закроет точки на карте, решив что вторая более производительная в этом плане он запускает эту анимацию и помечает просмотренные точки как готовые.
4) А затем этот механизм продолжается до тех пор, пока не будет найден игрок или пока неизведанные точки не закончатся.
Это довольно интересный и необычный механизм поиска который подчёркивает хаотичную природу заражённых, надеюсь я смог понятно объяснить его для вас (чтобы мне осознать его, ушло пару дней).
А на этом у нас кончается цикл постов про ИИ заражённых, надеюсь вам понравилось такое специфичное отступление с детальным раскрытием темы)
🔥35❤3👍1🥰1👌1🤝1🎄1
Как мы уже знаем, разрабатывая заражённых Naughty Dog придерживались принципа отчуждённости и природной естественности. Но какие цели стояли при разработке искусственного интеллекта людей?
А ответ максимально прост: «заставить поверить игрока в то, что противники достаточно реальны, вызывая угрызения совести при их убийстве».
Первой задачей в реализации этой цели было достижение того, чтобы враги были опасными, ведь если бы они вели себя как пушечное мясо, игрок бы так к ним и относился. Нам же нужно чтобы каждый человек, с которым столкнётся игрок, представлял угрозу и сложность (не такую как уровень с вертолетиком, конечно).
Дополнительной задачей было реализация системы, которая бы позволяла людям координировать свои действия или, по крайней мере, создавать видимость координации. (спойлер, во второй части они настолько хорошо продвинутся в этом, что создадут собственный язык). Группа бродяг или мародёров должна работать вместе чтобы выжить, так же, как и Джоэл с Элли работают сообща, без этого они выглядят нечеловечески.
Кроме того, люди должны заботиться о своей безопасности и безопасности своих близких, ведь навряд ли во время битвы с Джоэлом им нужны новые террористы-смертники. Они были выжившими, они должны быть так же осторожны, как игрок осторожен с жизнью главных героев.
Кроме того, в отличии от заражённых, они не хаотичны, они должны опираться на свои знания и навыки при выборе куда идти и когда именно начинать идти. Они должны делиться информацией о потере или встрече игрока между собой, они должны замечать и реагировать на потерю своих соратников.
Сочетание всех этих выпиленных задач и чуточка SFX создаёт настоящих и живых человеческих врагов, которые становятся полной полярностью к заражённым, с которыми игроку интересно играть и которые могли вызвать чувство сочувствия у игрока при убийстве.
Получилось ли? Решать вам.
А ответ максимально прост: «заставить поверить игрока в то, что противники достаточно реальны, вызывая угрызения совести при их убийстве».
Первой задачей в реализации этой цели было достижение того, чтобы враги были опасными, ведь если бы они вели себя как пушечное мясо, игрок бы так к ним и относился. Нам же нужно чтобы каждый человек, с которым столкнётся игрок, представлял угрозу и сложность (не такую как уровень с вертолетиком, конечно).
Дополнительной задачей было реализация системы, которая бы позволяла людям координировать свои действия или, по крайней мере, создавать видимость координации. (спойлер, во второй части они настолько хорошо продвинутся в этом, что создадут собственный язык). Группа бродяг или мародёров должна работать вместе чтобы выжить, так же, как и Джоэл с Элли работают сообща, без этого они выглядят нечеловечески.
Кроме того, люди должны заботиться о своей безопасности и безопасности своих близких, ведь навряд ли во время битвы с Джоэлом им нужны новые террористы-смертники. Они были выжившими, они должны быть так же осторожны, как игрок осторожен с жизнью главных героев.
Кроме того, в отличии от заражённых, они не хаотичны, они должны опираться на свои знания и навыки при выборе куда идти и когда именно начинать идти. Они должны делиться информацией о потере или встрече игрока между собой, они должны замечать и реагировать на потерю своих соратников.
Сочетание всех этих выпиленных задач и чуточка SFX создаёт настоящих и живых человеческих врагов, которые становятся полной полярностью к заражённым, с которыми игроку интересно играть и которые могли вызвать чувство сочувствия у игрока при убийстве.
Получилось ли? Решать вам.
❤25🤔5😍3🤝2🔥1
🧠 Как работает навигация и скрытность у ИИ в The Last of Us?
Вы когда-нибудь замечали, что люди в TLoU не просто бегут к вам по прямой, а словно пытаются обойти, укрыться, выйти с фланга?
Такое поведение — результат сложной архитектуры, в основе которой лежит несколько хитрых решений. Давайте разберёмся, как работает интеллект, который «понимает», когда он видим и откуда может быть замечен.
🔹 Навигация в два уровня
The Last of Us использует навигационные меши — треугольные сетки, по которым ИИ рассчитывает маршрут. Это обычная практика.
Но в TLoU всё сложнее. Поверх мешей — ещё один уровень: локальная 2D-сетка, центрированная вокруг каждого NPC. Она уточняет препятствия: стены, мебель, динамичные объекты. Результат — точные короткие маршруты + возможность планировать дальние перемещения.
Чтобы всё это работало быстро (да, ещё и на PS3!), Naughty Dog распределяли задачи по SPU-процессорам. До 40 маршрутов в кадр. Но как оказалось на тестах, более продвинутая локальная навигация очень сильно нагружала консоль, из-за чего её было решено ограничить сильнее — максимум 1 проработка за кадр с общей очередью всех персонажей, так что им приходилось ждать своей очереди.
🔹 Exposure Map
Ещё одним интересным нововведением стала карта экспозиции — простая 2D-карта, где пиксель = «видно/не видно».
ИИ не просто знает путь — он знает, где он может попасться игроку на глаза.
Это решает кучу проблем:
- выбирать маршрут не только по расстоянию, но и по укрытию,
- делать фланговые атаки,
- быть осторожным (да-да, даже ИИ может бояться Элли с винтовкой за спиной).
Как это работает? В меш вшита карта высот, позволяющая делать быстрые рэйкасты (проверки видимости) в 360°. Причём, она работает в целочисленных координатах благодаря чему она стала идеальной для параллельных SPU, позволяя за пару миллисекунд обновить карты видимости — и для игрока, и для каждого NPC.
И вот здесь магия: эта карта становится стоимостью в навигации. Чем «открытее» путь — тем выше стоимость. ИИ начинает выбирать маршруты с минимальной экспозицией. Прямо как человек, инстинктивно крадущийся под прицелом.
📌 Какой приём здесь используется?
Это приём называется visibility-informed pathfinding — путь строится с учётом зон видимости. Это гибрид тактической оценки и маршрутизации, придающий врагам видимость разума.
ИИ не просто знает, где вы. Он знает, где вы можете его увидеть. И старается не попасться.
Вы когда-нибудь замечали, что люди в TLoU не просто бегут к вам по прямой, а словно пытаются обойти, укрыться, выйти с фланга?
Такое поведение — результат сложной архитектуры, в основе которой лежит несколько хитрых решений. Давайте разберёмся, как работает интеллект, который «понимает», когда он видим и откуда может быть замечен.
🔹 Навигация в два уровня
The Last of Us использует навигационные меши — треугольные сетки, по которым ИИ рассчитывает маршрут. Это обычная практика.
Но в TLoU всё сложнее. Поверх мешей — ещё один уровень: локальная 2D-сетка, центрированная вокруг каждого NPC. Она уточняет препятствия: стены, мебель, динамичные объекты. Результат — точные короткие маршруты + возможность планировать дальние перемещения.
Чтобы всё это работало быстро (да, ещё и на PS3!), Naughty Dog распределяли задачи по SPU-процессорам. До 40 маршрутов в кадр. Но как оказалось на тестах, более продвинутая локальная навигация очень сильно нагружала консоль, из-за чего её было решено ограничить сильнее — максимум 1 проработка за кадр с общей очередью всех персонажей, так что им приходилось ждать своей очереди.
🔹 Exposure Map
Ещё одним интересным нововведением стала карта экспозиции — простая 2D-карта, где пиксель = «видно/не видно».
ИИ не просто знает путь — он знает, где он может попасться игроку на глаза.
Это решает кучу проблем:
- выбирать маршрут не только по расстоянию, но и по укрытию,
- делать фланговые атаки,
- быть осторожным (да-да, даже ИИ может бояться Элли с винтовкой за спиной).
Как это работает? В меш вшита карта высот, позволяющая делать быстрые рэйкасты (проверки видимости) в 360°. Причём, она работает в целочисленных координатах благодаря чему она стала идеальной для параллельных SPU, позволяя за пару миллисекунд обновить карты видимости — и для игрока, и для каждого NPC.
И вот здесь магия: эта карта становится стоимостью в навигации. Чем «открытее» путь — тем выше стоимость. ИИ начинает выбирать маршруты с минимальной экспозицией. Прямо как человек, инстинктивно крадущийся под прицелом.
📌 Какой приём здесь используется?
Это приём называется visibility-informed pathfinding — путь строится с учётом зон видимости. Это гибрид тактической оценки и маршрутизации, придающий врагам видимость разума.
ИИ не просто знает, где вы. Он знает, где вы можете его увидеть. И старается не попасться.
❤18👍3🔥2🤔1👻1