Бессонный кодер
5.17K subscribers
262 photos
47 videos
4 files
101 links
Канал разработчика и поисковика ДПСО LizaAlert

Связь: @sleeplessfeedbackbot или Direct канала (они бесплатные)
По рекламе: @dpp_ads
Купить рекламу: https://telega.in/c/sleeplesscode
Download Telegram
Задумывались ли вы, что будет с нашей планетой если мы все исчезнем?
Вот и Naughty Dog задумывались об этом, когда разрабатывали концепции и непосредственный вид игровых локаций. Но на что они опирались?

В 2007-м году писатель Алан Вейсман опубликовал статью "Homo disparitus (The World Without Us)", а позже выпустил расширенную версию в виде книги, которая на русском была опубликована под названием "Земля без людей". Советую прочитать, так как автор даёт справку и о прошлом, и прогнозирует будущее (всего 167 страниц).

А если вкратце? Давайте пройдёмся по "этапам" и важным моментам, и самый первый:
...будущее не станет в точности повторять прошлое. Некоторые виды мы довели до полного исчезновения настолько эффективно, что им уже не суждено появится вновь, не осталось даже их ДНК. Поскольку некоторые последствия наших поступков необратимы, планета, которую мы оставим после себя, не станет такой, как если бы нас никогда не существовало.


Два дня после исчезновения человечества. Нью-Йорк построен в самом начале XVII века в чрезвычайно болотистой местности. Сегодня стабилизацию грунта обеспечивают подземные насосные станции. Если они прекратят работать, через два дня множество тоннелей метро затопит. (Да и не только в Нью-Йорке, многие станции, особенно в Питере вынуждены откачивать поступающие грунтовые воды, а последствия их прорыва можно хорошо подчеркнуть из истории размыва в Петербургском метрополитене который произошёл 8 апреля 1974 года)

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

10-50 лет после исчезновения человечества. Без обслуживания и отопления различные постройки, не высотные многоквартирные и частные дома исчезнут под обилием растительности. Сдвиги земной коры и циклы замерзания-оттаивания будут постепенно воздействовать на бетонные стены и битум. Овощные культуры и культурные растения исчезнут, уступив место диким представителям.

200-400 лет после исчезновения человечества. Обрушатся висячие мосты (Манхэттенский мост, Крымский мост (тот который в центре Москвы)), а затем более прочные конструкции (Бруклинский мост, Живописный мост (это не описание красоты, а название моста в Москве)) рухнут, пожираемые коррозией. Разрушение плотин приведет к масштабным изменениям рельефа, дельты рек заполнятся.

500 лет после исчезновения человечества. Леса сотрут большую часть следов цивилизации с лица земли.

1000 лет после исчезновения человечества. Все оставшиеся следы цивилизации исчезли. Остались только сооружения из бронзы (например, статуи) и некоторых других металлов. Крышки люков и чугунные элементы все еще можно разглядеть.

Миллион лет после исчезновения человечества. Пластик и плутоний наконец полностью разложились.

После миллиона лет. От человека, бывшего оккупанта планеты, остался только уран.

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

Как говорил один хороший (или не очень, как мы поймём во второй части) персонаж:
Природа — та ещё сука.
Элли, The Last of Us Part II
🔥37🤯74👍3🤔1🌭1💊1
«Не бойтесь быть тихими», — с этих слов началась работа над звуком в The Last of Us. Нил Дракманн сознательно отказался от голливудской традиции — где каждый шаг сопровождается оркестровым ударом, а каждый выстрел гремит как гром. Вместо этого команда Naughty Dog решила: звук станет не фоном, а инструментом нарратива.

📌 В чём техническое новаторство?
Один из главных вызовов был: сделать мир, где звук — это не просто эффект, а часть геймплея. В игре, где успех зависит от того, заметил ли ты щелкуна за стеной или услышал шорох в коридоре, простого аудиодизайна было недостаточно. Поэтому разработчики создали уникальную систему позиционирования и распространения звука.

🧑‍💻 Как она работает?
Звуковой лучевой радиус (Raycasting Sound Field): Каждый источник звука — будь то шаг, голос или стон заражённого — анализируется системой через 1500 лучей, расходящихся во все стороны от игрока. Эти лучи проверяют, какие препятствия стоят на пути звука, от чего он отражается, где он глушится. Это позволяет достичь точного моделирования — например, если противник за диваном, звук будет приглушён именно так, как в реальной жизни.

Эхо и акустика помещений (Reverb Volume Mapping): Система также анализирует размер и материалы пространства. Комната с коврами звучит иначе, чем бетонный подвал. Деревянные полы скрипят по-особенному, а большие пространства отдают глубоким эхом. Это влияет на то, насколько отчётливо вы слышите врага — или как далеко вас могут услышать.

Динамическая фильтрация и затухание (Occlusion & Obstruction): Игра учитывает любые препятствия — двери, мебель, стены. Если враг за стеной, вы не просто слышите тише: звук становится глуше, с искажёнными частотами, как будто через плотную преграду. Это позволяет игроку на слух определять не только местоположение, но и то, сколько преград между ним и источником опасности.

Звук как эмоция: Паузы и тишина в игре не пусты. Это намеренные фазы, где слышно только дыхание, ветер, капли воды. Звук здесь — не украшение. Он ведёт игрока, создаёт напряжение, даёт информацию.

🎙 Деррик Эспино, звуковой дизайнер:
Это был наш самый сложный проект. Мы начали с чистого листа. Нам нужно было, чтобы звук работал как механика, как часть дизайна. Каждая деталь — от скрипа пола до стука стекла — имела значение.


Всё это реализовано без использования сторонних решений — только внутренняя система Naughty Dog.
В играх часто говорят про графику и лицевую анимацию. Но звук в The Last of Us это не меньший, а даже больший помощник. Кстати, именно благодаря мощному звуковому движку и дополнительным возможностям ремастер тлоу и вторую часть можно пройти даже если вы совершенно слепы, скоро расскажу про это в отдельном посте.
44🔥74👍4🏆3❤‍🔥1🍓1🫡1
Когда Naughty Dog разрабатывали аудио для The Last of Us, они не просто записывали шаги и скрипы — они искали атмосферу выжженного, заброшенного мира.

Часть команды отправилась в пригород Лос-Анджелеса, где в пыльных, разрушенных домах записывали скрежет по ржавому металлу, шорох обуви по осыпавшимся доскам, скрипы дверей.
Другой дизайнер поехал в трущобы Рио-де-Жанейро, где среди разрушенных зданий жили собаки, куры, крысы.

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

И вот, во время сессии озвучки, актриса Мисти Ли случайно издала глубокий гортанный щелчок.
Так родился звук, ставший символом страха во всей игре.
Его подхватили девять актёров, чтобы дать щелкунам разную интонацию — не просто пугающую, а животную, инстинктивную.

Слышишь щелчок — и уже становится не до шуток.
🍓4010🔥7👻3❤‍🔥21🐳1
Элли пытается заговорить о Сэме и Генри. Но Джоэл — молчит.

Это не просто заминка в диалоге или баг в игре. Это запертая дверь. Naughty Dog сознательно убирает драму — оставляя только напряжение. Вместо исповеди — тишина. Вместо сочувствия — смена темы.

Так работает эмоциональная блокада. Так игра передаёт главную идею сцены: горевать — опасно. Это может сломать. Потому лучше не говорить. Лучше забыть.

Но мы-то помним. И Элли — тоже.
Игрушечный робот в её рюкзаке — деталь, которую не замечаешь сразу. А потом она становится уколом. Она — память, которую никто не разрешил проговорить.

И поэтому игрок страдает не вместе с персонажами — а вместо них.
🔥3610❤‍🔥3👾3😱2👍1🎃1🆒1
Live stream started
Кому нужна lofi girl когда есть я 😎

Пост для комментов к стриму
👍7027👏8🔥5😱4🤯2🥰1😎1
Live stream finished (3 hours)
Помните я писал как природа захватывает места которые были оставлены человеком? Давайте немного выйдем из мира игр и технологий, окунувшись в реальный мир.

Я прогулялся по началу Бескудниковской ветки со стороны станции Бескудниково и изучил Медведковскую ветку в Москве, ловите фотоотчёт для вас (и новые обои для телефона и рабочего стола для любителей ЖД).

Но сначала немного истории, Бескудниковская ветка — это бывшая соединительная линия, построенная в середине XX века. Когда-то по ней шли поезда, возили грузы, а рядом, в промзонах, кипела жизнь. Окончательно линия была закрыта в мае 1987 года. Сейчас — это рельсы в траве, шпалы, вросшие в землю, и случайные следы на бетоне.

Медведковская ветка тянется от МЦД до промышленных окраин, среди гаражей, небольших лесополос, Альтуфьевского шоссе и домов ПИК.

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

📷 В комментариях — фото и комментарии к ним, снятые мной по пути.
🔥45❤‍🔥7🙏4311🤯1👌1
Media is too big
VIEW IN TELEGRAM
Naughty Dog берёт бытовую сцену и превращает её в поворотную точку нарратива.

Всё, что Джоэл подавлял, выходит наружу: страх снова привязаться, снова потерять. Элли впервые проговаривает: «все, кого я любила, ушли. Кроме тебя».
В этот момент она уже знает, что значит для Джоэла — и бросает вызов его защите, его дистанции.

Он, в ответ, пытается оттолкнуть. Грубостью. Последним барьером: «Ты не моя дочь».
Но именно в этом отталкивании и скрыто признание: он уже не может без неё.

Игра мастерски выстраивает напряжение: не через сюжет, а через внутренние конфликты. Через отказ сказать «я боюсь» словами.
Фраза «Ты не моя дочь. А я тебе не папочка» звучит как разрыв.
Но по факту — это признание.
Признание снять маску. Признать: «Я боюсь снова потерять».

Разговор Элли и Джоэла — не поворотный момент сюжета, а поворотный момент привязанности.
Сцена на ранчо не просто предвестие близости.
Это сцена, где персонажи впервые видят друг друга по-настоящему.
🔥31🗿9🐳5❤‍🔥1💋1🤝1🙉1
Когда-то QTE были технологическим компромиссом. Shenmue первой сделала это интерактивным: момент, когда нужно нажать кнопку — и герой делает кульбит, уворачивается, бьёт. Реакция игрока напрямую определяла исход сцены, пусть и в рамках заскриптованной анимации.

Но дальше — God of War, Detroit: Become Human, The Last of Us. QTE перестаёт быть «геймплейной вставкой» и становится способом передать эмоцию. Нажатие кнопки больше не про ловкость — оно про участие.

Ты давишь, чтобы вытащить раненого союзника.
Ты колеблешься, перед тем как принять страшное решение.
Ты нажимаешь F, чтобы отдать честь.

Да, эта сцена из Call of Duty: Advanced Warfare стала мемом — но это попытка была искренней. QTE как механика скорби конечно не идеальна, но как идея — сильна, да и след в игровой индустрии оставила не малый, выйдя даже за рамки игр.

В лучших своих проявлениях QTE — это катарсис.
Не просто выбор, а действие, к которому тебя подводит игра.
Ты сам закрываешь глаза умирающему другу.
Сам отпускаешь своего друга или врага в последний путь.

Но индустрия быстро обмельчала. В блокбастерах QTE стал ленивым способом «вовлечь» игрока без настоящей вовлечённости. Нажми X, чтобы не умереть — и Даша-путешественница тебе поможет.

Сегодня QTE почти исчезли. Их высмеяли, забыли, заменили более «органичными» механиками.
Но суть осталась: игрок в моменте.
Ты не смотришь катсцену — ты в ней.

Quick Time Event — это не про кнопку.
Это про сопричастность.
Если ты забыл, что играешь, и просто чувствуешь — значит, QTE сработал.
🔥386❤‍🔥1🥰1🏆1🍾1👀1🤝1
Media is too big
VIEW IN TELEGRAM
Представьте, вы как обычно, уже привычно проходите боевую сцену. Начинается QTE, ты знаешь, что делать: вовремя нажать, отбиться, выжить. Так работало всегда.

Но в этот раз — не работает.

Ты нажимаешь, реагируешь, уже как по рефлексу. И всё равно — падаешь с высоты, Джоэл получает смертельную рану. Но игра не говорит тебе, что ты ошибся. Она не наказывает. В этот момет, игрок, уже привыкший к своим ошибкам ожидает катсцену смерти героя. С чёрным экраном. Всё подсказывает: это проигрыш. Но экран не темнеет. Всё продолжается. Без предупреждений, без объяснений.

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

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

Игра ломает выученное поведение. Ломает систему ожиданий.
Она забирает у тебя то, что делало тебя сильным — контроль.
И в этом — главный ужас: не смерть, а бессилие.

С технической точки зрения — это приём disempowerment (лишение силы). Он резко переключает режим восприятия: из игрока, привыкшего к победам, ты становишься свидетелем и участником травмы. Вместо привычного «я действую» — появляется «я страдаю». Это нарративный удар не по сюжету, а по контролю. И именно поэтому он работает.
🔥3262👍2😇1
После сцены на ранчо, где звучит: «Ты не моя дочь. А я тебе не папочка», между Джоэлом и Элли происходит перелом. Не внешний — внутренний. За этой фразой, за грубостью — признание. Она вошла в его сердце, даже если он не хотел этого.

С этого момента всё меняется.
Элли больше не просто сопровождающий персонаж — она становится "семьёй". Не только в геймплее, но и в эмоциональной ткани истории.
Они говорят — не о выживании, а о мечтах.
Элли признаётся, что хотела бы стать космонавтом. Джоэл — что мечтал быть певцом.
И он начинает делиться: не просто слушать, но рассказывать.
О Саре. О себе. О том, как рано стал отцом.
Тепло пробивается сквозь боль.

В бою это тоже видно: Элли действует наравне с Джоэлом.
Она помогает, отвлекает врагов, спасает. Её вклад — не декоративен. Он ощутим.
(Пару раз она меня спасала от смерти, ну и ещё больше раз пугала резким выстрелом из-за спины)

А кульминацией становится сцена в университете.
Джоэл тяжело ранен. Не умирает, но близок к этому.
И именно Элли — та, кого он пытался оттолкнуть, — вытаскивает его. Уход, помощь, забота — всё на ней.

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

Всё, что Элли делает дальше — это не просто действия. Это ответ на ту самую фразу:
«Ты не моя дочь».
Теперь — почти что да.
34❤‍🔥5🔥3👍2🥰2😱2😘1
Так, давайте немного отвлечемся от сюжета и психологии, вернувшись в техничку :3
Я думаю вы согласны, что довольно трудно представить тлоу, да и любую другую синглплеер игру завязанную на общении и битвах без... Искусственного интеллекта союзников и соперников.

Те кто лично играл в The Last of Us знают, что тут ИИ конечно далёк от идеала и поддаётся чтению (достаточно минут 5 посмотреть и ты чётко понимаешь поведение каждого соперника). И даже если игрок совершил ошибку, то реакция будет краткосрочной, после чего соперник вернётся на свой круг. Но при этом всём, ИИ всё равно довольно хорош и относительно реалистичен.

Но как работает искусственный интеллект в The Last of Us? Тут надо сделать отступление, как это вполне заметно и логично, ИИ у заражённый отличается от ИИ у выживших, в рамках этого поста мы будем говорить о заражённых.

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


В процессе разработки Naughty Dog хотели сделать заражённых фундаментально отличными от выживших. И это было сделано не только визуально, но и на уровне ИИ.

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

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

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

To be continued...
🥰26❤‍🔥93👍3🔥2👀1🎄1🆒1
И так, мы имеем разные типы заражённых и разную логику у них, но как эта логика должна понимать на кого реагировать и где её враг?

Для этого у живых сущностях в TLoU есть система органов чувств. Которая отслеживает всех сущностей поблизости и фокусируется на самой угрожающей.

Так как почти все заражённые - слепые, (а те что не слепы - всё-равно сильно полагаются на слух), то одна из самых важных систем органов чувств - слух. (Они кстати из-за этого слышат в 6 раз лучше чем люди) Но что логично, она не опирается на звуки которые слышит через наушники игрок, наоборот, каждое действие генерирует событие звука (логические звуки) (это очень напоминает ивенты в Forge), и уже в зависимости от типа звука, типа сущности и расстояния сущности от позиции звука рассчитывается, будет ли реакция на него.

Кстати, фан факт, не все звуки которые генерируют события - могут быть услышаны игроком. К примеру - у нашего главного героя есть очень маленький пассивный логический звук дыхания, который не воспроизводится игроку, но который могут "услышать" враги на коротком расстоянии.

Ещё один интересный момент относительно системы слуха - параметр того, как хорошо слышит сущность - динамичен! Например, чёткость слуха Заражённых снижается пока они не подозревают что игрок находится рядом, но когда вы их побеспокоили и они ищут вас - мощность выходит на 100%. Такая механика позволяет нам играть стелсом.

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

Ещё одна динамичность, которая очень хорошо заметна для игроков играющих на геймпадах, "громкость" логического звука ходьбы зависит от скорости передвижения персонажа, именно по этому когда вы крадётесь далеко от щелкуна, мы можете сдвинуть стик в положение взлёт, но когда вы крадётесь вплотную, вам нужно сдвигать его на пару миллиметров, чтобы не оказаться на экране смерти через 0.1 секунды.

И отсюда идёт интересный момент о котором догадываются далеко не все. Мы знаем легендарный звук щелкуна который они издают для эхолокации, но на самом деле - он не работает :D Этот звук является лишь частью декоративным пережитком геймдизайна. Изначально Naughty Dog планировали чтобы во время щелчков, щелкун на секунду прозревал и делал "снимок" местности в памяти, но это сбивало игроков и в итоге от этой идеи отказались, в пользу общей системе слуха.

Сколько раз я сказал "слух" и "звук" за пост?
🔥44👍7😍2👀21🙏1
Ещё одной системой, которая влияет на геймплей и различается у людей и заражённых – система раздражителей.

Когда человек видит луч фонарика или получает кирпичом в лицо – они понимают, что рядом кто-то есть и стараются найти причину. Создавая, причина-следственную связь. Заражённые уже не настолько разумные и реагируют только на сам раздражитель, вместо попытки найти того, кто кинул кирпич, они идут к самому кирпичу. Такая реакция даёт большое разнообразие в геймплее и создаёт ценность кирпичей и бутылок.

Но в этой системе были и проблемы, когда игрок кидал коктейль Молотова, звук разбивающейся бутылки привлекал всех заражённых поблизости и они все шли в пламя и погибали. Это весело (веселее только прохождение с включённым DEV режимом и бесконечным огнемётом), но слишком имбалансно. Разработчики решили эту проблему костылём, ограничив количество персонажей на которых может взаимодействовать пламя.

Коктейли Молотова - дорогое удовольствие, и они должны быть очень эффективными, но не настолько, чтобы лишать игру сложности.


Ещё одна механика – дымовые шашки, которые позволяют разорвать зрительный контакт и маскировать передвижения игрока. Что логично, они должны быть бесполезны на заражённых, они ведь не видят, а слышат. Но это было бы это скучно, так что разработчики сделали что дымовые шашки ещё перекрывают слух. Таким образом, будучи привлеченными взрывом дымовой шашки, зараженные попадают в облако и становятся, по сути, слепыми и глухими. В награду игрок получает возможность убежать или двигаться среди отвлеченных зараженных, удушая бегунов и уничтожая щелкунов заточками.
👍36🔥4😁4👌2🤯1
Мы поговорили о том, как с логической стороны работает ИИ, как он различается между людьми и разными типами заражённых, так давайте теперь поговорим над его технической реализацией!

Система ИИ разделена две части, высокоуровневая логика принятия решений (навыки aka скиллы) и низкоуровневая логика решений (поведение aka бехейверы). Говоря определениями, система скиллов определяет, что должен делать персонаж, а система поведения продумывает, как и реализует эти решения.

Самый простой пример: для передвижения персонажей используется бехейвер move-to, который используется в большом количестве разных навыков. Навыки решают, что делать, основываясь на мотивах и возможностях персонажа, а также на его окружении, буквально отвечая на вопросы «Хочу ли я напасть, спрятаться или убежать?» или «В каком месте мне тактически лучше находиться?». Как только решение принято, то вызывается бехейвер который реализовывает это «желание». Например, навык может вызвать бехейвер move-to, а затем ждать завершения его работы.

В это время тот самый бехейвер move-to пытается добраться до места назначения используя любые доступные возможности (напоминает работу баритона в майне :D), решая какой маршрут выбрать и какие анимации проигрывать в этот момент.

Интересный момент, что аналогичная система реализована и используется у нас в сторителлинге. К примеру, вспомним Брендона. В определённые моменты дня у него в скрипте (наш аналог системы скиллов) происходит выбор, куда пойти, в этот момент не решается как пойти или на какую точку, нет, он думает пойти качаться или перекусить. Когда на основе его характеристик и мышления выбирается что именно он хочет делать, реализация этой задачи падает на BehaviorManager, который уже низкоуровнево пристраивает маршрут до выбранного места обходя дырки и открывая двери и контролирует его вплоть до точки назначения.
❤‍🔥316🔥6😍2🤩1🙉1
В этот раз мы уйдём ещё глубже, так что этот пост может быть сложнее для ребят далёких от мира программирования, так что не стесняйтесь задавать вопросы в комментариях!

Ещё одна вещь, которая заинтересовала меня в том, как устроен ИИ в 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
🔥35❤‍🔥74🤝3🤯2🎉1🤗1