Помните я писал как природа захватывает места которые были оставлены человеком? Давайте немного выйдем из мира игр и технологий, окунувшись в реальный мир.
Я прогулялся по началу Бескудниковской ветки со стороны станции Бескудниково и изучил Медведковскую ветку в Москве, ловите фотоотчёт для вас (и новые обои для телефона и рабочего стола для любителей ЖД).
Но сначала немного истории, Бескудниковская ветка — это бывшая соединительная линия, построенная в середине XX века. Когда-то по ней шли поезда, возили грузы, а рядом, в промзонах, кипела жизнь. Окончательно линия была закрыта в мае 1987 года. Сейчас — это рельсы в траве, шпалы, вросшие в землю, и случайные следы на бетоне.
Медведковская ветка тянется от МЦД до промышленных окраин, среди гаражей, небольших лесополос, Альтуфьевского шоссе и домов ПИК.
Посещая эти места, задумываешься не только про технику, но и про память. Про то, что остаётся, когда исчезает польза, а вместе с ней и человек. Про красоту распада.
📷 В комментариях — фото и комментарии к ним, снятые мной по пути.
Я прогулялся по началу Бескудниковской ветки со стороны станции Бескудниково и изучил Медведковскую ветку в Москве, ловите фотоотчёт для вас (и новые обои для телефона и рабочего стола для любителей ЖД).
Но сначала немного истории, Бескудниковская ветка — это бывшая соединительная линия, построенная в середине XX века. Когда-то по ней шли поезда, возили грузы, а рядом, в промзонах, кипела жизнь. Окончательно линия была закрыта в мае 1987 года. Сейчас — это рельсы в траве, шпалы, вросшие в землю, и случайные следы на бетоне.
Медведковская ветка тянется от МЦД до промышленных окраин, среди гаражей, небольших лесополос, Альтуфьевского шоссе и домов ПИК.
Посещая эти места, задумываешься не только про технику, но и про память. Про то, что остаётся, когда исчезает польза, а вместе с ней и человек. Про красоту распада.
📷 В комментариях — фото и комментарии к ним, снятые мной по пути.
Media is too big
VIEW IN TELEGRAM
Naughty Dog берёт бытовую сцену и превращает её в поворотную точку нарратива.
Всё, что Джоэл подавлял, выходит наружу: страх снова привязаться, снова потерять. Элли впервые проговаривает: «все, кого я любила, ушли. Кроме тебя».
В этот момент она уже знает, что значит для Джоэла — и бросает вызов его защите, его дистанции.
Он, в ответ, пытается оттолкнуть. Грубостью. Последним барьером: «Ты не моя дочь».
Но именно в этом отталкивании и скрыто признание: он уже не может без неё.
Игра мастерски выстраивает напряжение: не через сюжет, а через внутренние конфликты. Через отказ сказать «я боюсь» словами.
Фраза «Ты не моя дочь. А я тебе не папочка» звучит как разрыв.
Но по факту — это признание.
Признание снять маску. Признать: «Я боюсь снова потерять».
Разговор Элли и Джоэла — не поворотный момент сюжета, а поворотный момент привязанности.
Сцена на ранчо не просто предвестие близости.
Это сцена, где персонажи впервые видят друг друга по-настоящему.
Всё, что Джоэл подавлял, выходит наружу: страх снова привязаться, снова потерять. Элли впервые проговаривает: «все, кого я любила, ушли. Кроме тебя».
В этот момент она уже знает, что значит для Джоэла — и бросает вызов его защите, его дистанции.
Он, в ответ, пытается оттолкнуть. Грубостью. Последним барьером: «Ты не моя дочь».
Но именно в этом отталкивании и скрыто признание: он уже не может без неё.
Игра мастерски выстраивает напряжение: не через сюжет, а через внутренние конфликты. Через отказ сказать «я боюсь» словами.
Фраза «Ты не моя дочь. А я тебе не папочка» звучит как разрыв.
Но по факту — это признание.
Признание снять маску. Признать: «Я боюсь снова потерять».
Разговор Элли и Джоэла — не поворотный момент сюжета, а поворотный момент привязанности.
Сцена на ранчо не просто предвестие близости.
Это сцена, где персонажи впервые видят друг друга по-настоящему.
Когда-то 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 сработал.
Но дальше — 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 сработал.
Media is too big
VIEW IN TELEGRAM
Представьте, вы как обычно, уже привычно проходите боевую сцену. Начинается QTE, ты знаешь, что делать: вовремя нажать, отбиться, выжить. Так работало всегда.
Но в этот раз — не работает.
Ты нажимаешь, реагируешь, уже как по рефлексу. И всё равно — падаешь с высоты, Джоэл получает смертельную рану. Но игра не говорит тебе, что ты ошибся. Она не наказывает. В этот момет, игрок, уже привыкший к своим ошибкам ожидает катсцену смерти героя. С чёрным экраном. Всё подсказывает: это проигрыш. Но экран не темнеет. Всё продолжается. Без предупреждений, без объяснений.
Это не конец сцены. Это — новая сцена. Где ты не можешь двигаться как раньше. Где стрельба уже не даёт власть. Где каждый шаг — большое усилие. Ты не управляешь героем — ты тащишь его вперёд. Сквозь боль. Сквозь беспомощность. Сквозь страх, что он не дойдёт.
На тебя идёт враг. В нормальной ситуации — ты укрылся, быстро высунулся, выстрелил. Всё под контролем. Но сейчас — нет. Джоэл еле держится на ногах. Он двигается как человек, получивший проникающее ранение, а не как боец, стоит только выглянуть — и сразу получаешь пулю.
Игра ломает выученное поведение. Ломает систему ожиданий.
Она забирает у тебя то, что делало тебя сильным — контроль.
И в этом — главный ужас: не смерть, а бессилие.
С технической точки зрения — это приём disempowerment (лишение силы). Он резко переключает режим восприятия: из игрока, привыкшего к победам, ты становишься свидетелем и участником травмы. Вместо привычного «я действую» — появляется «я страдаю». Это нарративный удар не по сюжету, а по контролю. И именно поэтому он работает.
Но в этот раз — не работает.
Ты нажимаешь, реагируешь, уже как по рефлексу. И всё равно — падаешь с высоты, Джоэл получает смертельную рану. Но игра не говорит тебе, что ты ошибся. Она не наказывает. В этот момет, игрок, уже привыкший к своим ошибкам ожидает катсцену смерти героя. С чёрным экраном. Всё подсказывает: это проигрыш. Но экран не темнеет. Всё продолжается. Без предупреждений, без объяснений.
Это не конец сцены. Это — новая сцена. Где ты не можешь двигаться как раньше. Где стрельба уже не даёт власть. Где каждый шаг — большое усилие. Ты не управляешь героем — ты тащишь его вперёд. Сквозь боль. Сквозь беспомощность. Сквозь страх, что он не дойдёт.
На тебя идёт враг. В нормальной ситуации — ты укрылся, быстро высунулся, выстрелил. Всё под контролем. Но сейчас — нет. Джоэл еле держится на ногах. Он двигается как человек, получивший проникающее ранение, а не как боец, стоит только выглянуть — и сразу получаешь пулю.
Игра ломает выученное поведение. Ломает систему ожиданий.
Она забирает у тебя то, что делало тебя сильным — контроль.
И в этом — главный ужас: не смерть, а бессилие.
С технической точки зрения — это приём disempowerment (лишение силы). Он резко переключает режим восприятия: из игрока, привыкшего к победам, ты становишься свидетелем и участником травмы. Вместо привычного «я действую» — появляется «я страдаю». Это нарративный удар не по сюжету, а по контролю. И именно поэтому он работает.
После сцены на ранчо, где звучит: «Ты не моя дочь. А я тебе не папочка», между Джоэлом и Элли происходит перелом. Не внешний — внутренний. За этой фразой, за грубостью — признание. Она вошла в его сердце, даже если он не хотел этого.
С этого момента всё меняется.
Элли больше не просто сопровождающий персонаж — она становится "семьёй". Не только в геймплее, но и в эмоциональной ткани истории.
Они говорят — не о выживании, а о мечтах.
Элли признаётся, что хотела бы стать космонавтом. Джоэл — что мечтал быть певцом.
И он начинает делиться: не просто слушать, но рассказывать.
О Саре. О себе. О том, как рано стал отцом.
Тепло пробивается сквозь боль.
В бою это тоже видно: Элли действует наравне с Джоэлом.
Она помогает, отвлекает врагов, спасает. Её вклад — не декоративен. Он ощутим.
(Пару раз она меня спасала от смерти, ну и ещё больше раз пугала резким выстрелом из-за спины)
А кульминацией становится сцена в университете.
Джоэл тяжело ранен. Не умирает, но близок к этому.
И именно Элли — та, кого он пытался оттолкнуть, — вытаскивает его. Уход, помощь, забота — всё на ней.
Это не просто поворот сюжета. Это поворот отношений.
После эмоционального взрыва на ранчо между ними возникает привязанность, проверенная делом.
Всё, что Элли делает дальше — это не просто действия. Это ответ на ту самую фразу:
«Ты не моя дочь».
Теперь — почти что да.
С этого момента всё меняется.
Элли больше не просто сопровождающий персонаж — она становится "семьёй". Не только в геймплее, но и в эмоциональной ткани истории.
Они говорят — не о выживании, а о мечтах.
Элли признаётся, что хотела бы стать космонавтом. Джоэл — что мечтал быть певцом.
И он начинает делиться: не просто слушать, но рассказывать.
О Саре. О себе. О том, как рано стал отцом.
Тепло пробивается сквозь боль.
В бою это тоже видно: Элли действует наравне с Джоэлом.
Она помогает, отвлекает врагов, спасает. Её вклад — не декоративен. Он ощутим.
(Пару раз она меня спасала от смерти, ну и ещё больше раз пугала резким выстрелом из-за спины)
А кульминацией становится сцена в университете.
Джоэл тяжело ранен. Не умирает, но близок к этому.
И именно Элли — та, кого он пытался оттолкнуть, — вытаскивает его. Уход, помощь, забота — всё на ней.
Это не просто поворот сюжета. Это поворот отношений.
После эмоционального взрыва на ранчо между ними возникает привязанность, проверенная делом.
Всё, что Элли делает дальше — это не просто действия. Это ответ на ту самую фразу:
«Ты не моя дочь».
Теперь — почти что да.
И так, мы имеем разные типы заражённых и разную логику у них, но как эта логика должна понимать на кого реагировать и где её враг?
Для этого у живых сущностях в TLoU есть система органов чувств. Которая отслеживает всех сущностей поблизости и фокусируется на самой угрожающей.
Так как почти все заражённые - слепые, (а те что не слепы - всё-равно сильно полагаются на слух), то одна из самых важных систем органов чувств - слух. (Они кстати из-за этого слышат в 6 раз лучше чем люди) Но что логично, она не опирается на звуки которые слышит через наушники игрок, наоборот, каждое действие генерирует событие звука (логические звуки) (это очень напоминает ивенты в Forge), и уже в зависимости от типа звука, типа сущности и расстояния сущности от позиции звука рассчитывается, будет ли реакция на него.
Кстати, фан факт, не все звуки которые генерируют события - могут быть услышаны игроком. К примеру - у нашего главного героя есть очень маленький пассивный логический звук дыхания, который не воспроизводится игроку, но который могут "услышать" враги на коротком расстоянии.
Ещё один интересный момент относительно системы слуха - параметр того, как хорошо слышит сущность - динамичен! Например, чёткость слуха Заражённых снижается пока они не подозревают что игрок находится рядом, но когда вы их побеспокоили и они ищут вас - мощность выходит на 100%. Такая механика позволяет нам играть стелсом.
Но ладно динамичность на уровне сущности, она есть и на уровне локации! Подобно реальным звукам (и звукам которые мы слышим в наушниках) - логические звуки частично глушатся и закрываются стенами и препятствиями. Это позволяет внести баланс того что персонажи не слышат через стены и провоцирует игрока всегда держать препятствие между собой и заражёнными.
Ещё одна динамичность, которая очень хорошо заметна для игроков играющих на геймпадах, "громкость" логического звука ходьбы зависит от скорости передвижения персонажа, именно по этому когда вы крадётесь далеко от щелкуна, мы можете сдвинуть стик в положение взлёт, но когда вы крадётесь вплотную, вам нужно сдвигать его на пару миллиметров, чтобы не оказаться на экране смерти через 0.1 секунды.
И отсюда идёт интересный момент о котором догадываются далеко не все. Мы знаем легендарный звук щелкуна который они издают для эхолокации, но на самом деле - он не работает :D Этот звук является лишь частью декоративным пережитком геймдизайна. Изначально Naughty Dog планировали чтобы во время щелчков, щелкун на секунду прозревал и делал "снимок" местности в памяти, но это сбивало игроков и в итоге от этой идеи отказались, в пользу общей системе слуха.
Сколько раз я сказал "слух" и "звук" за пост?
Для этого у живых сущностях в TLoU есть система органов чувств. Которая отслеживает всех сущностей поблизости и фокусируется на самой угрожающей.
Так как почти все заражённые - слепые, (а те что не слепы - всё-равно сильно полагаются на слух), то одна из самых важных систем органов чувств - слух. (Они кстати из-за этого слышат в 6 раз лучше чем люди) Но что логично, она не опирается на звуки которые слышит через наушники игрок, наоборот, каждое действие генерирует событие звука (логические звуки) (это очень напоминает ивенты в Forge), и уже в зависимости от типа звука, типа сущности и расстояния сущности от позиции звука рассчитывается, будет ли реакция на него.
Кстати, фан факт, не все звуки которые генерируют события - могут быть услышаны игроком. К примеру - у нашего главного героя есть очень маленький пассивный логический звук дыхания, который не воспроизводится игроку, но который могут "услышать" враги на коротком расстоянии.
Ещё один интересный момент относительно системы слуха - параметр того, как хорошо слышит сущность - динамичен! Например, чёткость слуха Заражённых снижается пока они не подозревают что игрок находится рядом, но когда вы их побеспокоили и они ищут вас - мощность выходит на 100%. Такая механика позволяет нам играть стелсом.
Но ладно динамичность на уровне сущности, она есть и на уровне локации! Подобно реальным звукам (и звукам которые мы слышим в наушниках) - логические звуки частично глушатся и закрываются стенами и препятствиями. Это позволяет внести баланс того что персонажи не слышат через стены и провоцирует игрока всегда держать препятствие между собой и заражёнными.
Ещё одна динамичность, которая очень хорошо заметна для игроков играющих на геймпадах, "громкость" логического звука ходьбы зависит от скорости передвижения персонажа, именно по этому когда вы крадётесь далеко от щелкуна, мы можете сдвинуть стик в положение взлёт, но когда вы крадётесь вплотную, вам нужно сдвигать его на пару миллиметров, чтобы не оказаться на экране смерти через 0.1 секунды.
И отсюда идёт интересный момент о котором догадываются далеко не все. Мы знаем легендарный звук щелкуна который они издают для эхолокации, но на самом деле - он не работает :D Этот звук является лишь частью декоративным пережитком геймдизайна. Изначально Naughty Dog планировали чтобы во время щелчков, щелкун на секунду прозревал и делал "снимок" местности в памяти, но это сбивало игроков и в итоге от этой идеи отказались, в пользу общей системе слуха.
Сколько раз я сказал "слух" и "звук" за пост?
Мы поговорили о том, как с логической стороны работает ИИ, как он различается между людьми и разными типами заражённых, так давайте теперь поговорим над его технической реализацией!
Система ИИ разделена две части, высокоуровневая логика принятия решений (навыки aka скиллы) и низкоуровневая логика решений (поведение aka бехейверы). Говоря определениями, система скиллов определяет, что должен делать персонаж, а система поведения продумывает, как и реализует эти решения.
Самый простой пример: для передвижения персонажей используется бехейвер
В это время тот самый бехейвер
Интересный момент, что аналогичная система реализована и используется у нас в сторителлинге. К примеру, вспомним Брендона. В определённые моменты дня у него в скрипте (наш аналог системы скиллов) происходит выбор, куда пойти, в этот момент не решается как пойти или на какую точку, нет, он думает пойти качаться или перекусить. Когда на основе его характеристик и мышления выбирается что именно он хочет делать, реализация этой задачи падает на
Система ИИ разделена две части, высокоуровневая логика принятия решений (навыки aka скиллы) и низкоуровневая логика решений (поведение aka бехейверы). Говоря определениями, система скиллов определяет, что должен делать персонаж, а система поведения продумывает, как и реализует эти решения.
Самый простой пример: для передвижения персонажей используется бехейвер
move-to
, который используется в большом количестве разных навыков. Навыки решают, что делать, основываясь на мотивах и возможностях персонажа, а также на его окружении, буквально отвечая на вопросы «Хочу ли я напасть, спрятаться или убежать?» или «В каком месте мне тактически лучше находиться?». Как только решение принято, то вызывается бехейвер который реализовывает это «желание». Например, навык может вызвать бехейвер move-to
, а затем ждать завершения его работы.В это время тот самый бехейвер
move-to
пытается добраться до места назначения используя любые доступные возможности (напоминает работу баритона в майне :D), решая какой маршрут выбрать и какие анимации проигрывать в этот момент.Интересный момент, что аналогичная система реализована и используется у нас в сторителлинге. К примеру, вспомним Брендона. В определённые моменты дня у него в скрипте (наш аналог системы скиллов) происходит выбор, куда пойти, в этот момент не решается как пойти или на какую точку, нет, он думает пойти качаться или перекусить. Когда на основе его характеристик и мышления выбирается что именно он хочет делать, реализация этой задачи падает на
BehaviorManager
, который уже низкоуровнево пристраивает маршрут до выбранного места обходя дырки и открывая двери и контролирует его вплоть до точки назначения.В этот раз мы уйдём ещё глубже, так что этот пост может быть сложнее для ребят далёких от мира программирования, так что не стесняйтесь задавать вопросы в комментариях!
Ещё одна вещь, которая заинтересовала меня в том, как устроен ИИ в The Last of Us – дизайн кода. В нём никогда не упоминались типы персонажей, а вместо этого указывались наборы характеристик, определяющих каждый из типов. Лучшее описание этому – все типы заражённых имеют всего один класс C++ и различаются только набором навыков и значениями переменных в файлах данных.
К примеру, код ссылается на тип зрения персонажа вместо того, чтобы проверить, является ли он бегуном или щелкуном. Это может казаться незначительным отличием, но хорошо показывает усилия разработчиков по сохранению общего характера кода. Вместо того чтобы разносить определения персонажей в виде куч проверок по всему коду, они сосредоточили их на настраиваемых данных.
Из плюсов которое это даёт: игровые дизайнеры, которые далеки от программирования, могли не трогая команду ИИ самостоятельно редактировать параметры персонажей. А ещё это невероятно упрощает добавление новых типов таковых, вместо создания новых классов и поиска в коде всех мест, где идёт ссылка на персонажей достаточно просто добавить или удалить нужные навыки!
Но почему все не делают так? Такой подход требует невероятной и постоянной бдительности. У разработчиков было много случаев, когда они испытывали искушение упросить немного жизнь и добавить проверку на определённый тип для реализации одной фичи. Но эта одна вещь имеет тенденцию разрастаться по мере расширения и повторного использования кода. Тут урок заключается в том, чтобы оставаться верным своим принципам проектирования и разработки, ведь сложность при проектировании потом окупится стабильностью и простотой реализации новых возможностей.
Ещё одним преимуществом стало – упрощение реализации системы уровней сложности. Вместо десятков и сотен проверок на текущий уровень таковой, достаточно поменять параметры в скиллах персонажей и готово!
В целом, такой подход в разработке называется Data-driven, вы кстати могли видеть его, ведь последние пару лет Mojang активно вносят его в Minecraft, позволяя датапаками не только редактировать характеристики и поведение игры, но и создавать свои собственные предметы и энтитей! И это без навыков программирования.
Кстати, даже среди моих разработок есть применения data-driven подхода, это система настроек чатов в Имперском Стражнике! Вместо задачи всех десятков параметров кучами проверок и условий, они заданы лишь определениями типов и ссылками на языковые строки и дефолтными настройками, пример вы можете увидеть на скриншоте, который я подкрепил к посту. Вот как-то так :3
Ещё одна вещь, которая заинтересовала меня в том, как устроен ИИ в The Last of Us – дизайн кода. В нём никогда не упоминались типы персонажей, а вместо этого указывались наборы характеристик, определяющих каждый из типов. Лучшее описание этому – все типы заражённых имеют всего один класс C++ и различаются только набором навыков и значениями переменных в файлах данных.
К примеру, код ссылается на тип зрения персонажа вместо того, чтобы проверить, является ли он бегуном или щелкуном. Это может казаться незначительным отличием, но хорошо показывает усилия разработчиков по сохранению общего характера кода. Вместо того чтобы разносить определения персонажей в виде куч проверок по всему коду, они сосредоточили их на настраиваемых данных.
Из плюсов которое это даёт: игровые дизайнеры, которые далеки от программирования, могли не трогая команду ИИ самостоятельно редактировать параметры персонажей. А ещё это невероятно упрощает добавление новых типов таковых, вместо создания новых классов и поиска в коде всех мест, где идёт ссылка на персонажей достаточно просто добавить или удалить нужные навыки!
Но почему все не делают так? Такой подход требует невероятной и постоянной бдительности. У разработчиков было много случаев, когда они испытывали искушение упросить немного жизнь и добавить проверку на определённый тип для реализации одной фичи. Но эта одна вещь имеет тенденцию разрастаться по мере расширения и повторного использования кода. Тут урок заключается в том, чтобы оставаться верным своим принципам проектирования и разработки, ведь сложность при проектировании потом окупится стабильностью и простотой реализации новых возможностей.
Ещё одним преимуществом стало – упрощение реализации системы уровней сложности. Вместо десятков и сотен проверок на текущий уровень таковой, достаточно поменять параметры в скиллах персонажей и готово!
В целом, такой подход в разработке называется Data-driven, вы кстати могли видеть его, ведь последние пару лет Mojang активно вносят его в Minecraft, позволяя датапаками не только редактировать характеристики и поведение игры, но и создавать свои собственные предметы и энтитей! И это без навыков программирования.
Кстати, даже среди моих разработок есть применения data-driven подхода, это система настроек чатов в Имперском Стражнике! Вместо задачи всех десятков параметров кучами проверок и условий, они заданы лишь определениями типов и ссылками на языковые строки и дефолтными настройками, пример вы можете увидеть на скриншоте, который я подкрепил к посту. Вот как-то так :3
Рассматривая систему навыков персонажей, можно находить и другие схожести с нашими любимыми играми. Мы знаем как работает взаимодействие навыков и поведения, но как работает выбор навыков, которые будут действовать на персонажа в тот или иной момент?
Тут мы и встречаемся с ещё одной схожей системой. У каждого персонажа выстроен список приоритетов навыков, от высшего к низшему. Во время определения код идёт по каждому навыку сверху вниз и ищет первый который будет допустим в текущих условиях. Затем этот навык будет исполняться до тех пор, пока текущий не закончится или не активизируется более приоритетный.
С меня лайк, если вы уже догадались, где ещё есть такая система, конечно же это Minecraft! А если быть точным, система Goal-ов у сущностей в игре. Они работают полностью аналогично. Специально для вас, прикрепил скришнотик декомпилированной логики Панды.
Давайте вместе разберём все гоалы (далее задачи) у Панды:
Самая приоритетная задача у Панды – плавать если она находится в жидкости.
Далее идёт задача паниковать если она получила урон, стандартная логика спасения своей жизни.
Следующая по приоритету задача у панды – размножение.
И уже только затем идёт задача на атаку, причём учитывая как выстроен targetSelector – панда атакует только тех, кто её саму атаковал первым. Отсюда лайвхак, если на вас напала панда, размножайте их :D
Далее идёт TemptGoal – панда следует за игроком который держит еду которую любят панды.
Затем идёт две задачи с одинаковым приоритетом PandaAvoidGoal на игрока с расстоянием 8 блоков и на монстров с расстоянием 4 блока, панда защищается и избегает нас.
А дальше начинается кайф…
Задача на посидеть, задача на полежать на спинке, задача чихнуть :D
Когда уже всё это было сделано мы доходим до уровня приоритета 9 – Посмотреть на игрока.
Игроков нет? – случайно осматриваться вокруг
Смотреть вокруг скучно? – хреначим кувырок!
Ну и конечно после всего веселья надо следовать за родителем, если ты маленькая пандочка.
А если большая – то просто случайно блуждаем, избегая воды.
Вот так, посмотрели систему гоалов панды и узнали её планы на дни :3
Тут мы и встречаемся с ещё одной схожей системой. У каждого персонажа выстроен список приоритетов навыков, от высшего к низшему. Во время определения код идёт по каждому навыку сверху вниз и ищет первый который будет допустим в текущих условиях. Затем этот навык будет исполняться до тех пор, пока текущий не закончится или не активизируется более приоритетный.
С меня лайк, если вы уже догадались, где ещё есть такая система, конечно же это Minecraft! А если быть точным, система Goal-ов у сущностей в игре. Они работают полностью аналогично. Специально для вас, прикрепил скришнотик декомпилированной логики Панды.
Давайте вместе разберём все гоалы (далее задачи) у Панды:
Самая приоритетная задача у Панды – плавать если она находится в жидкости.
Далее идёт задача паниковать если она получила урон, стандартная логика спасения своей жизни.
Следующая по приоритету задача у панды – размножение.
И уже только затем идёт задача на атаку, причём учитывая как выстроен targetSelector – панда атакует только тех, кто её саму атаковал первым. Отсюда лайвхак, если на вас напала панда, размножайте их :D
Далее идёт TemptGoal – панда следует за игроком который держит еду которую любят панды.
Затем идёт две задачи с одинаковым приоритетом PandaAvoidGoal на игрока с расстоянием 8 блоков и на монстров с расстоянием 4 блока, панда защищается и избегает нас.
А дальше начинается кайф…
Задача на посидеть, задача на полежать на спинке, задача чихнуть :D
Когда уже всё это было сделано мы доходим до уровня приоритета 9 – Посмотреть на игрока.
Игроков нет? – случайно осматриваться вокруг
Смотреть вокруг скучно? – хреначим кувырок!
Ну и конечно после всего веселья надо следовать за родителем, если ты маленькая пандочка.
А если большая – то просто случайно блуждаем, избегая воды.
Вот так, посмотрели систему гоалов панды и узнали её планы на дни :3
Помните те прекрасные (нет) дни, когда нам отключали мобильный интернет? Я в те дни был на учёбе, а там периодически мне приходится пользоваться нейронками — для помощи с экспериментами или коррекции постов.
И вот представьте: мобильного интернета нет, через 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
Мы разобрали один день панды, так что давайте вернёмся в тлоу и изучим дни заражённых, но в этот раз дав чуть больше внимания каждому из гоалов.
И так, для начала предлагаю вам изучить таблицу распределения гоалов у сущностей, я прикрепил её к посту. Почти все заражённые имеют свои различия... Почти...
Давайте начнём с навыка "Погоня за игроком". У большинства заражённых тактика боя максимально проста - обнаружив врага, они бегут на свою цель и убивают её. Но давайте изучим работу подробнее.
Когда на заражённого действует раздражитель (урон или звук), включается наш навык и первое что он делает - крик в сторону раздражителя чтобы предупредить игрока о том, что его обнаружили.
Затем навык вызывает бехейвер move-to, который отслеживает позицию игрока и ведёт заражённого к нему.
Во время погони персонаж время от времени приостанавливаться, чтобы дать игроку возможность спрятаться или подготовить атаку, но вместо остановки бехейвера движения, в этот момент вызывается бехейвер поиска "infected-canvass", о котором мы поговорим в следующем посте. В этот момент заражённый обновляет своё понимание мира и позицию игрока, просчитывая возможность того, что тот спрятался или убежал.
И так, для начала предлагаю вам изучить таблицу распределения гоалов у сущностей, я прикрепил её к посту. Почти все заражённые имеют свои различия... Почти...
Давайте начнём с навыка "Погоня за игроком". У большинства заражённых тактика боя максимально проста - обнаружив врага, они бегут на свою цель и убивают её. Но давайте изучим работу подробнее.
Когда на заражённого действует раздражитель (урон или звук), включается наш навык и первое что он делает - крик в сторону раздражителя чтобы предупредить игрока о том, что его обнаружили.
Затем навык вызывает бехейвер move-to, который отслеживает позицию игрока и ведёт заражённого к нему.
Во время погони персонаж время от времени приостанавливаться, чтобы дать игроку возможность спрятаться или подготовить атаку, но вместо остановки бехейвера движения, в этот момент вызывается бехейвер поиска "infected-canvass", о котором мы поговорим в следующем посте. В этот момент заражённый обновляет своё понимание мира и позицию игрока, просчитывая возможность того, что тот спрятался или убежал.
Давайте отвлечёмся от рубрики и немного вспомним старые рубрики :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…