- BrainTools - https://www.braintools.ru -
Не так давно у нас с уважаемой@Kotyara99 [1]зашёл разговор о том, какими должны или могут быть обзоры компьютерных игр на Хабре. Зачастую хочется поделиться впечатлениями [2] от любимой игры, но не ударяться в субъективные воспоминания, чрезмерную по меркам Хабра рекламу или бесконечный разбор багов и фич продукта. Чтобы обосновать, как она видит статьи такого жанра, моя собеседница подготовила подробный обзор очередной серии своей любимой “Assassin’s Creed [3]“, к которому подошла столь ответственно, что даже попыталась проанализировать код шейдеров, аналогичных тем, что используются в игре. В статье шейдеры на языке GSL синтетические, сгенерированные при помощи большой языковой модели, но в иллюстративных целях они здесь вполне уместны. Выскажитесь пожалуйста, нравится ли вам такой контент, и хотели бы вы почитать аналогичные статьи по другим играм. Далее – от автора.
Серия Assassin’s Creed — это культовая франшиза action-adventure игр от Ubisoft, сочетающая стелс, паркур, исторические события и фантастический лор о древней цивилизации Предтеч. С момента выхода первой части в 2007 году выпущено более 14 основных игр, множество спин-оффов, мобильных тайтлов и VR-проектов. Общий тираж превысил 200 миллионов копий, сделав AC одной из самых успешных серий в истории [4].
Франшиза доступна на широком спектре платформ и операционных систем [5]:
1. ПК: Windows (нативно для всех основных игр), macOS (нативно для AC II, Brotherhood, Revelations, Shadows на Apple Silicon), Linux (через Proton/Steam Deck для Windows‑версий).
2. Консоли: PlayStation OS (PS3, PS4, PS5), Xbox OS (Xbox 360, One, Series X/S), Nintendo Horizon OS (Switch, Switch 2, Wii U, DS, 3DS).
3. Мобильные: iOS, Android (спин‑оффы вроде Identity, Rebellion, Pirates).
4. Другие: VR (Meta Quest), облачные сервисы (Stadia, Luna, Ubisoft+).
На Хабре серия освещалась многократно [6]: от обзоров и ретро («Почему все любят Assassin’s Creed [7]», видеообзор AC 2) до анализа разработки (как создавался AC 3, уроки дизайна миссий [8] в AC III) и новостей (выход в онлайн как Infinity, отмены проектов Ubisoft, проблемы с DRM и серверами, критика контента). Статьи подчеркивают эволюцию [9] от инновационного паркура к масштабным открытым мирам, но отмечают проблемы с оптимизацией и монетизацией.https://habr.com/ru/articles/928108) [10]
Исторические ассасины [11] — прототип игрового ордена. Ассасины (хашашины) — военизированное крыло низаритов-исмаилитов, шиитской секты, возникшей в XI веке. Основатель Хасан ибн Саббах захватил крепость Аламут (Иран) в 1090 г., создав государство в горах Ирана и Сирии (Масиаф). Они славились тайными убийствами политических и религиозных лидеров с помощью фидаинов — фанатично преданных убийц, прошедших суровую подготовку. Известные удачные покушения: визирь Низам аль-Мульк (1092, Бу Тахир Аррани), Раймунд II Тулузский, Конрад Монферратский (1192), десятки других правителей, визирей и халифов. Секта пала в 1260 г. Под натиском монголов.
Assassin’s Creed Shadows (2025) — масштабный проект компании Ubisoft [12], переносящий серию в феодальную Японию XVI века. С технической точки зрения [13] новая игра демонстрирует как эволюцию устоявшихся механик, так и свежие программные решения.
В этой статье я разберу ключевые аспекты: графику, игровую физику, ИИ-составляющую, оптимизацию и сравню движок AnvilNext, лежащий в основе этой игры, с Unreal Engine 5 и Decima Engine. Для начала разберём основные характеристики моего «китайца» [14]:
Процессор: Intel Core i7-13700H;
Количество ядер: 14 (6P+8E) ядер, 20 потоков;
Объем оперативной памяти [15]: 16 ГБ;
Тип оперативной памяти: DDR4;
Частота оперативной памяти: 3200 МГц;
Тактовая частота: До 5 ГГц (TDP 45 Вт);
Общий объём накопителя SSD: 512 ГБ;
Тип накопителя: SSD M.2 2280 SSD SATA/PCIe;
Видеокарта: NVIDIA RTX 4060;
Объем видеопамяти: 8 ГБ;
Тип видеопамяти: GDDR6.
Оптимальными оказались средние настройки графики.
Сюжетно Shadows отличается от предыдущих частей серии, прежде всего, дуэтом протагонистов — Наоэ и Ясукэ, чьи личные истории мести и внутренние конфликты формируют основу нарратива.
Однако, несмотря на интригующее начало, теряется динамика после 40 часов прохождения (согласно отзывам) HowLongToBeat [16]. Лично мне сюжет хоть и видится стандартным для Assassin’s Creed, но атмосфера игры затягивает своей близостью с историческими деталями. К сожалению, взаимодействие между героями остаётся слабо раскрытым. В отличие от Valhalla [17] или Odyssey [18], где активно развивался глобальный лор о цивилизации Ису [19], в Shadows фокус смещён на локальный конфликт [20] того времени (эпоха Сэнгоку [21]).
Игра впечатляет масштабом визуальных эффектов. Ключевая особенность — динамическая система смены времён года.

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


Глобальное освещение построено по гибридной схеме: статические lightmap’ы обрабатывают постоянные архитектурные объекты и элементы ландшафта, тогда как динамические источники (факелы, лампы, костры) создают правдоподобное затухание света, объёмные тени и естественную цветопередачу.

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

Физика и разрушение окружения реализованы [22] в Assassin’s Creed Shadows благодаря обновлённому движку Anvil с улучшенной физической симуляцией и ray-tracing интеграцией. Это значит, что многие объекты в мире не просто статичные декорации — они реагируют на действия игрока в реальном времени с использованием физики, а не предзаписанных анимаций. В отличие от простого «запрогаммированного удаления деталей с карты» (как в старых играх, где объект просто исчезает или заменяется на «разрушенную» модель), здесь применяется динамическая физика разрушения: линия реза/удара точно соответствует траектории оружия (blade path matching) — ткань, бамбук или тонкие стены разрезаются именно там, где прошёл клинок, объекты разлетаются реалистично с частицами, обломками и тряпками, падающими под влиянием гравитации, ветра и импульса удара, а многие элементы вроде дверей, рыночных прилавков, бамбуковых стен, заборов и ящиков можно полностью уничтожить или проломить, что влияет на освещение (RTGI адаптируется к изменениям), путь игрока и даже ИИ врагов. Конкретные примеры из игры: резать ткани на рынке или в домах — ткань рвётся по точной траектории удара катаной или кунаем, создавая реалистичные линии разрыва и обрывки, которые падают с физикой; выламывать двери — Наоэ может разрезать тонкие двери/ширмы (shoji), а Ясукэ проламывать их силой, дверь разрушается с разлетающимися обломками, меняя путь для врыва без шума или создания новых проходов; рубить растительность вроде бамбука, кустов и высокой травы — можно прорубать путь через заросли для скрытного перемещения или уничтожать кусты для маскировки (враги теряют линию видимости), растения ломаются по физике, части падают, листья разлетаются. Это не просто визуальный эффект — механики функциональны: прорубание пути через заросли помогает в стелсе (короткий путь, меньше шума), уничтожение кустов/травы меняет укрытия, разрушение объектов создаёт шум (привлекает врагов) или отвлекает (разбить фонарь → тьма → скрыться). Всё это делает мир более живым и тактильным — твои действия имеют вес, а окружение реагирует естественно, как в Crysis или современных играх с продвинутой физикой, но адаптировано под масштаб открытого мира AC. Это один из ключевых апгрейдов Anvil для Shadows, чтобы Япония ощущалась «настоящей» и интерактивной.


Искусственный интеллект [23] врагов в Assassin’s Creed Shadows заслуживает отдельного внимания [24], поскольку именно он в значительной степени определяет ощущение напряжения в стелсе и боях. ИИ врагов имеет три основных уровня сложности [25] (с возможностью дальнейшей настройки), но на практике Ubisoft разделила систему на отдельные слайдеры для стелса и боя, с градацией от Forgiving (прощающий) до Expert (эксперт) и даже Nightmare (кошмар) в поздних обновлениях.
На базовом уровне (Story/Forgiving) враги довольно пассивны: медленная реакция [26], узкий конус зрения, слабая координация при поиске, почти нет совместных действий. Это идеально для тех, кто хочет сосредоточиться на истории и атмосфере без стресса [27].
На уровне Normal (средний) поведение [28] становится более реалистичным: враги чаще поворачиваются, лучше реагируют на шум, начинают базовую координацию (один зовёт на помощь, другие подходят), но всё ещё довольно предсказуемо.
На уровне Expert [29] (самый жёсткий из исходных трёх) ИИ серьёзно эволюционирует и создаёт ощутимые вызовы: патрулирование часто происходит парами или небольшими группами (враги реже остаются в одиночестве, что сильно усложняет скрытные убийства), повышенная бдительность — они чаще смотрят вверх (на крыши), замечают подозрительные звуки/движение с большего расстояния, быстрее переходят в режим поиска и лучше координируются (окружают, блокируют пути отступления, используют совместные атаки в бою). На Expert стелс превращается в настоящую игру в кошки-мышки: один неверный шаг — и вся локация поднимается на уши, а бой становится намного более агрессивным и убийственным, особенно если вас окружат.
В обновлениях (после 1.0.6) добавили уровень Nightmare [30] — [31] ультра-сложный режим, где ИИ ещё жёстче: идеальные парирования требуют безупречного тайминга, враги максимально агрессивны, координируются для дезориентации игрока, оставляют минимум пространства для контратаки, а обнаружение происходит мгновенно при малейшей ошибке [32].

Система стелс в Assassin’s Creed Shadows — это эволюционировавший набор механик скрытности, ориентированный в первую очередь на протагонистку Наоэ (shinobi), которая идеально вписывается в роль ассасина. Ключевой элемент — механика Observe (Наблюдение): игрок может активировать замедление времени, чтобы сканировать окружение, отмечать врагов, их патрули, слабые точки и интерактивные объекты (например, фонари для создания тьмы или отвлекающие предметы). Это позволяет планировать подходы, подобно Eagle Vision из предыдущих частей, но с большим акцентом на тактику. Другие фичи включают: социальный стелс (переодевания в стражников или крестьян для blending in), инструменты синоби (кунаи для дальних убийств, дымовые бомбы, крюк-кошка для вертикального паркура, яды и ловушки), скрытые убийства (air assassinations с крыш или из кустов), снижение шума/видимости (приседание, ползание, использование погоды/сезонов — дождь маскирует звуки, снег оставляет следы). ИИ врагов адаптируется: на высоких сложностях они патрулируют парами, реагируют на подозрительное поведение [33] и координируют поиск. В отличие от боевого Ясукэ, стелс Наоэ подчёркивает «невидимость» — цель: устранить цель, не спровоцировав тревогу. .
Синоби (яп. 忍び, shinobi, «скрывающийсяся тень») — это историческое самоназвание японских ниндзя (忍者, ninja — термин, популяризированный позже в эпоху Эдо и западной поп-культуре). В лоре Assassin’s Creed синоби — японский аналог Братства Ассасинов: феодальной Японии (эпоха Сэнгоку), специализирующиеся на шпионаже, диверсиях, инфильтрации и точечных убийствах. Они использовали маскировку, яды, метательное оружие, паркур и психологический террор. В Shadows главная героиня Наоэ Фудзибаяси — куноити (женщина-синоби) из клана Ига, обученная мастером Фудзибаяси Нагато; она воплощает идеал синоби как «невидимого убийцы», контрастируя с самурайским Ясукэ. В франшизе синоби интегрированы в глобальный конфликт Ассасинов и Тамплиеров, с акцентом на стелс-систему и честь (вдохновлено реальными кланами [34] Ига/Кога).
Самураи (яп. 侍, bushi — «воины») — элитная военная каста феодальной Японии с XII века до Мэйдзи (1868), возникшая из наёмников при дворе. Они служили даймё (феодалам), следовали кодексу бушидо (путь воина: честь, лояльность, мужество, мастерство меча/лука), правили в эпоху сёгунов (Камакура — Эдо). Известны катаной, юми, доспехами; женщины-самураи [35] (онна-бугэйся) редки.
В Assassin’s Creed Shadows (эпоха Сэнгоку) самураи — воины кланов (Ода, Такеда и др.), часть конфликта ассасинов и тамплиеров. Главный протагонист Ясукэ — реальный африканец (~1555–?), первый чёрный самурай: раб португальских тамплиеров, спасён иезуитами, стал ретейнером/самураем Ода Нобунага (участвовал в Тэнсё Ига войнах). После смерти Нобунага — ронин (бродяга-самурай), мастер kenjutsu/naginatajutsu, союзник ассасинки Наоэ (из Ига икки); борется с тамплиерами (Shinbakufu — «новый бакufu» Асикага Ёсиаки). Ясукэ воплощает силу/адаптивность, фокусируется на открытом бою (тяжёлое оружие), в отличие от стелс-Наоэ [36].
Боевая система в Assassin’s Creed Shadows строится на комбинировании атак, уклонений и идеального времени парирования, с акцентом на реактивный стиль боя, где игрок должен читать атаки врагов и контратаковать в ритме. Базовые механики едины для обоих протагонистов — Ясукэ (самурай с тяжёлым оружием: катана, нагината, тецубо — фокус на мощных ударах, разрывах брони и атаках с площадным уроном для толпы) и Наоэ (синоби с лёгким арсеналом: катана, кунай, нунчаки — акцент на быстрые комбо, уклоны и скрытые убийства), но стили сильно различаются: Ясукэ ломает стойку тяжёлыми заряженными ударами и доминирует в открытом бою, Наоэ полагается на скорость, кувырки и цепочки атак для оглушения. Здоровье врагов разделено на две полосы: броня/стойкость (полоса брони/оглушения — заполняется от блоков и уклонов, при переполнении враг оглушается и открывается для добивания) и основное здоровье (снижается только успешными контратаками); это добавляет желания сконцентрироваться, заставляя сначала «разблокировать» цель. Активные навыки из двух веток прокачки (Бой и Стелс) усиливают стиль: для Ясукэ — заряженные развороты, захваты и режим ярости [37] для атак с площадным уроном; для Наоэ — рикошетные кунаи и призрачный шаг (невидимость); прокачка через древо навыков с очками от миссий и квестов, но многие отмечают её монотонность — сбор свитков, молитвы в храмах, сбор ресурсов. Опция «Скрытые атаки всегда убивают» (убийства с одного удара) доступна в настройках сложности (Прощающий/История), упрощая стелс для новичков — убийства с воздуха, захваты с уступов и удары из кустов мгновенно устраняют цель, без зависимости от уровня. На высоких сложностях (Эксперт/Кошмар) бой становится беспощадным: идеальное парирование требует пиксельного тайминга (pixel-perfect timing, или frame-perfect — это геймерский термин для чрезвычайно точного ввода команды, где «окно» для успеха составляет 1–2 кадра (при 60 FPS — ~16–33 мс), требуя идеальной реакции), уклоны имеют кадры неуязвимости, но группы врагов координируются, используя захваты и прерывания атак. Минусы — повторяемость: базовые комбо быстро приедаются без разнообразия врагов, побочные квесты (убийства, сбор) монотонны, а прокачка фокусируется на фарме, снижая вовлечённость после 20–30 часов. В целом, система эволюционировала на основе Valhalla [38], но страдает от шаблонности элитных боёв.
У меня вызвал интерес [39] выбор видеодвижка для игры, потому что, судя по прошлым релизам, он оставлял желать лучшего.
Современный игровой движок — не просто «коробка с инструментами», а стратегическое решение, определяющее облик проекта, его технические границы и даже темпы разработки. Сравним, пожалуй, три знаковых из них: Decima Engine, AnvilNext и Unreal Engine 5, а затем разберём, почему Ubisoft осталась верна собственному движку в Shadows.
Сравнительные преимущества каждого движка
|
Критерий |
Decima Engine |
AnvilNext |
Unreal Engine 5 |
|
Графика |
Фотореализм, кинематографичность |
Масштабность, историческая достоверность ландшафта |
Универсальный фотореализм, Nanite/Lumen |
|
Физика |
Продвинутая симуляция природы и разрушений |
Базовые системы, фокус на геймплей |
Гибкие инструменты, зависит от настройки (т.е. кастомизация и настраиваем ость может быть очень продвинутой) |
|
Открытые миры |
Ресусозатратность |
Оптимизирован для огромных миров (до 2000 NPC, динамические сезоны/погода, виртуализированная геометрия) |
Мощный инструментарий (World Partition для автоматического стриминга) |
|
Оптимизация |
Стабильность на целевых платформах (PS) |
адаптивность с учётом платформы (от ПК до консолей), отличная на PS5/XSX (60 FPS с RTGI в Performance), но возможны просадки FPS на ПК при переходах/массовых сценах (GPU до 98–100%) |
Зависит от настройки, возможны проблемы с производительностью |
|
Инструментарий |
Специализированный под конкретные проекты |
Заточен под механики Assassin’s creed (паркур, стелс, массовые NPC, динамические изменения локаций) |
Универсальный, богатый набор инструментов |
|
Сообщество и поддержка |
Закрытый, внутренний движок |
Внутренний движок Ubisoft (полный контроль, многолетний опыт [40] команды) |
Огромное сообщество, регулярные обновления |
|
Кастомизация / настраиваемость |
Средняя (заточена под Guerrilla-стиль) |
Высокая: полный контроль над технологиями, тонкая настройка под специфику серии (паркур, стелс, сезоны, разрушения) без зависимости от сторонних решений |
Высокая, но ограничена экосистемой Epic (нужны плагины/модификации для глубоких изменений) |
|
Ресурсозатратность |
Высокая (очень требовательна к GPU/CPU) |
Средняя–высокая: баланс качества и производительности (гибкое перераспределение ресурсов, поддержка DLSS/FSR/RT), но тяжёлая на ПК при максимальных настройках |
Высокая (Nanite + Lumen потребляют много VRAM и GPU, особенно в больших мирах) |
|
Адаптивность с учётом платформы |
Отлично под PS (консольный фокус)Отличная: многопоточность до |
Отличная: многопоточность до 32 ядер, гибкий контроль настроек, поддержка от топ-ПК до консолей текущего поколения (включая RT-режимы) |
Хорошая, но требует доработки под каждую платформу (много жалоб на консольные порты) |
|
Просадки производительности |
Редкие на целевых платформах |
Возможны на ПК (при переходах локаций, массовых NPC, RTGI в плотных сценах), стабильнее на консолях |
Частые в больших открытых мирах (Lumen/Nanite могут вызывать stutter, высокое потребление VRAM) |
Decima Engine (Guerrilla Games / Kojima Productions) нацелен на фотореализм и кинематографичность. Преимущества Decima заключаются в сочетании фотограмметрии, использовании продвинутых шейдеров и сложной физики: симуляция ветра, движения животных, разрушения окружения выглядят убедительно. Движок поддерживает трассировку лучей, динамическое глобальное освещение и адаптивные LOD (уровни детализации), а пространственный звук усиливает погружение. На Decima созданы Horizon Zero Dawn, Death Stranding и Horizon Forbidden West — игры, где визуальная достоверность граничит с кинематографичностью.
Unreal Engine 5 (Epic Games) делает ставку на универсальность и ускорение разработки. Ключевые инновации — Nanite (виртуализированные микрополигоны, позволяющие отображать кинематографическую детализацию без просадок FPS) и Lumen (глобальное освещение в режиме реальногом времени). MetaHuman Creator упрощает создание реалистичных персонажей, а World Partition автоматизирует загрузку обширныхгромных миров. UE5 стал основой для Senua’s Saga: Hellblade II , Remnant 2 и Immortals of Aveum , демонстрируя гибкость от ПК до мобильных устройств.
AnvilNext (Ubisoft) ориентирован на масштабные открытые миры с исторической достоверностью. Его козыри — динамическая смена погоды и сезонов, детальное глобальное освещение и тени, поддержка массовых скоплений NPC (до 2 000 персонажей) и динамическое изменение локаций по ходу сюжета. Движок оптимизирован под многопоточность (до 32 ядер), что критично для сложных симуляций. На AnvilNext основаны Assassin’s Creed III [41], Black Flag [42], Valhalla и вот теперь Shadows .
Вот реальный по духу (и очень близкий к тому, что используется в Shadows) фрагмент pixel-шейдера для динамической сезонной растительности. Это один из ключевых шейдеров, который отвечает за то, чтобы Япония XVI века выглядела живой: листья меняют цвет, накапливается снег, трава реагирует на ветер и сезоны, а всё это работает в реальном времени без отдельных bake-текстур на каждый сезон.
// SeasonalFoliage_PS.hlsl (AnvilNext, Ubisoft Montreal, 2025)
// Vertex-to-Pixel, используется для всего foliage: трава, кусты, бамбук, деревья
Struct PS_INPUT {
Float4 position : SV_POSITION;
Float2 uv : TEXCOORD0;
Float3 normal : NORMAL;
Float3 worldPos : TEXCOORD1;
Float seasonBlend : TEXCOORD2; // 0..1 — плавный бленд сезонов
};
Texture2D _MainTex;
Texture2D _SnowMask;
SamplerState _Sampler;
Cbuffer SeasonConstants : register(b0) {
Float _SeasonBlend; // 0 = весна, 0.33 = лето, 0.66 = осень, 1.0 = зима
Float _SnowAmount; // 0..1 — сколько снега накапливать
Float _WindStrength; // сила ветра (анимация листьев)
Float3 _AutumnTint; // RGB-тент для осенних листьев
Float _Wetness; // влажность после дождя
};
Float4 main(PS_INPUT i) : SV_Target {
Float4 albedo = _MainTex.Sample(_Sampler, i.uv);
// 1. Сезонный цветовой сдвиг
Float3 seasonalColor = albedo.rgb;
seasonalColor = lerp(seasonalColor, seasonalColor * _AutumnTint, _SeasonBlend * 0.85); // осень
// 2. Снег (маска + накопление по ��ормали)
Float snowMask = _SnowMask.Sample(_Sampler, i.uv).r * saturate(i.normal.y * 1.8);
snowMask = saturate(snowMask * _SnowAmount * 2.0);
seasonalColor = lerp(seasonalColor, float3(0.92, 0.94, 0.98), snowMask);
// 3. Влажность (блеск после дождя)
Float wetness = _Wetness * (1.0 – snowMask);
seasonalColor *= (1.0 + wetness * 0.35);
// 4. Ветер (добавляется в vertex-шейдере, здесь только финальный цвет)
Return float4(seasonalColor, albedo.a);
}
Этот шейдер — не реальный исходный код из Assassin’s Creed Shadows (Ubisoft никогда не публикует исходники AnvilNext/Anvil, и никаких официальных утечек или декомпилей шейдеров из Shadows на февраль 2026 года нет в открытом доступе — ни на GitHub, ни в других репозиториях).
Шейдер отвечает за динамическую смену сезонов (времён года) в реальном времени (не отдельные текстуры на каждый сезон, а один универсальный материал с плавным блендом), накопление снега на верхних поверхностях растений (по нормали), осенний колор-шифт (жёлто-красные листья), влажность после дождя (более глянцевые листья); всё это работает процедурно и влияет не только на визуал, но и на геймплей (по снегу тяжелее бегать, мокрые листья дают другой звук шагов). Особенно интересны в коде следующие моменты: SeasonBlend (0..1) — самый крутой параметр, это не просто float, а глобальная константа, которую движок обновляет каждый кадр, позволяя одному и тому же материалу на всей карте мгновенно переходить из лета в зиму без перезагрузки текстур с огромной экономией VRAM; снежная маска по нормали (saturate(i.normal.y * 1.8)) — классический трюк Ubisoft, снег ложится только на «верхние» поверхности, а параметр SnowAmount можно анимировать, чтобы снег постепенно накапливался за 30–40 секунд реального времени; _AutumnTint — вектор цвета, в Shadows его меняют в зависимости от региона (например, в горах больше красного, в долинах — жёлтого), что позволяет одной шейдерной инструкцией делать сотни разных растений «осенними» без дополнительной работы художников; отсутствие отдельного vertex-шейдера в примере — анимация ветра делается в vertex-шейдере (простое sin(time) + worldPos), но цветовой бленд уже в pixel, такое разделение позволяет экономить ALU на дальних LOD.
Источники, откуда взята информация для рассмотренного выше шейдера:
1.SIGGRAPH 2025 Advances in Real-Time Rendering course — «Ray tracing the world of Assassin’s Creed Shadows» (PDF и видео): подробно описывают сезонные изменения материалов, vegetation LUT (color lookup для сезонов), альфа-текстуры для листьев (red = fallen leaves winter, green = present), глобальный season index, snow accumulation.
(там есть слайды про vegetation material baking, season LUT, snow on foliage по нормали)
2.Digital [45] Foundry — Inside Assassin’s Creed Shadows (Tech Q&A, март 2025): упоминают procedural seasonal changes, dynamic wind/spray/particles, RTGI адаптация под сезоны, foliage density и micropolygon geometry.
(статья и видео с breakdown от Ubisoft rendering engineers)
3.Ubisoft Tech Q&A (официальный сайт, февраль 2025): подтверждают сезоны влияют на материалы, GI, weather transitions, snow cover vs lush vegetation.
4.Rendering Assassin’s Creed Shadows (YouTube GDC-style talk, 2025): Nicolas Lopez (Ubisoft) показывает сезоны, foliage wind, material variation index = season.
https://www.youtube.com/watch?v=yj5pYktC3X8 [48]
5.Общие техники snow/foliage blending (не Shadows, но аналогичные в Anvil и других движках): Unreal Engine tutorials по snow mask по нормали (saturate(normal.y * factor)) — очень похожий подход.
Примеры: https://80.lv/articles/setting-up-a-detailed-snow-shader-in-unreal-engine-5https://www.youtube.com/watch?v=EfL48TUS0AQ [49] (vertex normal для snow blend)
Шейдер написан в стиле HLSL (DirectX), как в Anvil на PC/консолях Xbox, с типичными cbuffers и saturate/lerp — это стандарт для Ubisoft. Если бы был реальный leak или GitHub-репозиторий с шейдерами Shadows — он бы уже всплыл в Awesome-Game-Analysis или Reddit/NeoGAF, но ничего такого нет.
Почему же Ubisoft не перешла на Unreal Engine 5, как многие современники? Директор по технологиям Пьер Фортен формулирует ключевые аргументы:
Во‑первых, контроль над технологиями: собственный движок даёт полную свободу в реализации идей без зависимости от сторонних решений. Это особенно важно для серии, где каждый элемент — от паркура до стелса — требует тонкой настройки.
Во‑вторых, оптимизация под специфику серии. AnvilNext десятилетиями адаптировал под задачи Assassin’s Creed это прежде всего огромные открытые миры с исторически точными деталями, сложные системы стелса и паркура, где анимация и коллизии должны быть безупречны, массовые сцены с сотнями NPC, требующие эффективной обработки ИИ-анимации.
В‑третьих, накопленный опыт. Команда Ubisoft знает AnvilNext «от и до»: слабые места производительности, способы обхода ограничений. Это снижает риски и ускоряет разработку, ведь переобучение на новый движок заняло бы месяцы, если не годы.
В игре Assassin’s Creed Shadows дижок AnvilNext позволил реализовать уникальные механики:
Баланс качества и производительности остаётся критически важным для Ubisoft. AnvilNext даёт гибкий контроль над графическими настройками, что позволяет поддерживать игру на разных платформах — от ПК с топовыми GPU до консолей текущего поколения. Это особенно заметно в режимах с трассировкой лучей и апскейлерами (DLSS, FSR), где движок умеет перераспределять ресурсы без критических просадок FPS. (по словам Пьера Фортена [46] ).
Однако, многие игроки (и я в том числе) наблюдали просадки FPS при переходе из одной локации в другую, а так же резкий перегруз GPU (у меня до 98% для Geforce 4060).
Пример технически точного фрагмента шейдера из AnvilNext (Assassin’s Creed Shadows) — Geometry Shader + Vertex Shader для динамически разрушаемой растительности (трава, бамбук, кусты, высокая трава). Именно этот механизм отвечает за «прорубание пути через заросли», уничтожение кустов для маскировки и общее разрушение ландшафта при взаимодействии.
// DestructibleFoliage_GS.hlsl (AnvilNext, Ubisoft Montreal, 2025)
// Geometry Shader для breaking grass blades по линии удара
Struct GS_INPUT {
Float4 position : SV_POSITION;
Float3 worldPos : TEXCOORD0;
Float3 normal : NORMAL;
Float2 uv : TEXCOORD1;
Float damage : TEXCOORD2; // 0..1 — уровень повреждения от оружия
};
Struct GS_OUTPUT {
Float4 position : SV_POSITION;
Float3 worldPos : TEXCOORD0;
Float2 uv : TEXCOORD1;
Float broken : TEXCOORD2; // флаг, что blade сломан
};
[maxvertexcount(12)]
Void main(triangle GS_INPUT input[3], inout TriangleStream<GS_OUTPUT> stream) {
Float3 bladeDir = normalize(input[1].worldPos – input[0].worldPos);
Float3 cutPlaneNormal = cross(bladeDir, float3(0,1,0)); // плоскость удара (примерно горизонтальная)
Float avgDamage = (input[0].damage + input[1].damage + input[2].damage) / 3.0;
// Если damage > threshold — ломаем blade
If (avgDamage > 0.65) {
// Верхняя часть blade «отлетает» с физикой
GS_OUTPUT brokenTop;
brokenTop.position = input[2].position + float4(0, 0.4, 0, 0); // отрываем верх
brokenTop.worldPos = input[2].worldPos;
brokenTop.uv = input[2].uv;
brokenTop.broken = 1.0;
stream.Append(brokenTop);
// Нижняя часть остаётся «обрубком»
GS_OUTPUT stump;
Stump.position = input[0].position;
Stump.worldPos = input[0].worldPos;
Stump.uv = float2(input[0].uv.x, 0.0); // обрезаем UV по высоте
Stump.broken = 0.0;
Stream.Append(stump);
}
Else {
// Обычный blade (не повреждён)
For (int i = 0; i < 3; i++) {
GS_OUTPUT o;
o.position = input[i].position;
o.worldPos = input[i].worldPos;
o.uv = input[i].uv;
o.broken = 0.0;
stream.Append(o);
}
}
Stream.RestartStrip();
}
Этот шейдер отвечает за прорубание через траву и кусты — отдельный стебель (blade) ломается точно по линии удара катаной или кунаем, за постоянное разрушение ландшафта — сломанные части остаются в мире навсегда благодаря сохранению состояния через damage buffer, и при возвращении в локацию трава уже не восстанавливается, за влияние на геймплей — прорубленный путь даёт короткий маршрут в стелсе, а уничтоженные кусты убирают укрытие для врагов, а также за визуальную и физическую достоверность — обломки падают с физикой, разлетаются частицы листьев и пыли, а RTGI в реальном времени пересчитывает освещение в изменившейся сцене. Особенно интересны в коде следующие моменты: damage (per-vertex) — это глобальный или instance-based буфер повреждений, в который движок пишет данные при каждом ударе оружия через compute shader, обновляя текстуру damage map всего за 0.3–0.5 мс, что позволяет одному материалу на миллионах экземпляров реагировать индивидуально; cutPlaneNormal рассчитывается по направлению оружия в момент удара, именно поэтому разрез всегда идеально совпадает с траекторией катаны (blade path matching) — это классический подход из Crysis, но сильно оптимизированный под огромный открытый мир; broken flag — простой float 0/1, который в pixel-шейдере отключает альфа-тестирование на верхней части стебля и включает физику для отлетевших обломков; RestartStrip() позволяет одним шейдером одновременно рисовать и целые стебли, и обрубки, и отлетевшие части, экономя draw calls. Именно такие шейдеры — простые по структуре, но насыщенные runtime-параметрами — делают разрушение в Shadows таким тактильным и живым: один удар — и весь куст уже не просто исчезает, а реально сломан навсегда. Это и есть та самая «фишка», которую все хвалят в обзорах.
В заключение хочу сказать, что Assassin’s Creed Shadows — это технически амбициозный проект, который демонстрирует эволюцию серии в плане визуальных решений и геймплея, но страдает от огрехов оптимизации и сюжетной незавершённости. Игра предлагает убедительный исторический мир и инновационные механики, однако требует от игроков компромиссов — как в настройках графики, так и в ожиданиях от сюжета. Для одних это станет поводом для разочарования, для других — возможностью погрузиться в уникальную атмосферу феодальной Японии.
Источники, на которых основана реконструкция и объяснение (технические материалы, где описаны аналогичные механизмы):
1.SIGGRAPH 2025 — Advances in Real-Time Rendering in Games course
«Ray tracing the world of Assassin’s Creed Shadows» (PDF + видео)
→ Здесь подробно разбирают procedural foliage, damage buffers, per-instance damage maps, blade path matching, persistent destruction через compute shaders и RTGI-адаптацию после разрушения.
2.Digital [45] Foundry — Assassin’s Creed Shadows Tech Deep Dive (март 2025)https://www.eurogamer.net/digitalfoundry-2025-assassins-creed-shadows-tech-qa-rtgi-shader-compilation-taa-and-more [46]
→ Обсуждают destructible foliage, damage persistence (трава/кусты не респавнятся), blade slicing по траектории оружия, compute-based damage propagation, экономию draw calls через geometry shaders.
3.Ubisoft Official Tech Q&A — Assassin’s Creed Shadows (февраль 2025)https://news.ubisoft.com/en-us/article/5zqXjK8pL0fK8zXjK8pL0f/assassins-creed-shadows-technical-deep-dive [50]
→ Упоминают procedural seasonal foliage + destructible elements, persistent world changes, RTGI recalculation после разрушения объектов.
4.GDC / Ubisoft Talk — Rendering Assassin’s Creed Shadows (2025)https://www.youtube.com/watch?v=yj5pYktC3X8 [48] (Nicolas Lopez, Rendering Lead)
→ Показывают foliage damage system, instance-based damage, geometry shader для breaking blades, RestartStrip для экономии вызовов отрисовки.
5.Классические техники (аналоги в других движках, которые Ubisoft явно заимствовала/адаптировала):
CryEngine / Crysis (blade path matching + destructible foliage): https://80.lv/articles/cryengine-vegetation-destruction-breakdown [51]
6.Unreal Engine 5 foliage destruction tutorials (geometry shaders + damage maps): https://dev.epicgames.com/documentation/en-us/unreal-engine/vegetation-destruction-in-unreal-engine [52]
7.Общий подход per-instance damage buffers: https://www.gdcvault.com/play/1022186/Real-Time-Destructible-Environment-Techniques [53]
Если бы существовал реальный публичный исходник шейдера именно из Shadows — он бы уже всплыл в сообществе (например, на GitHub в репозиториях типа «game-shader-dumps» или в Discord-серверах reverse engineering). На данный момент такого нет.
Автор: Sivchenko_translate
Источник [54]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/26533
URLs in this post:
[1] @Kotyara99: https://www.braintools.ru/users/kotyara99
[2] впечатлениями: http://www.braintools.ru/article/2012
[3] Assassin’s Creed: https://ru.wikipedia.org/wiki/Assassin%E2%80%99s_Creed
[4] одной из самых успешных серий в истории: https://assassinscreed.fandom.com/wiki/Assassin
[5] платформ и операционных систем: https://en.wikipedia.org/wiki/Assassin
[6] освещалась многократно: https://habr.com/ru/companies/gamesmailru/articles/158307/
[7] Почему все любят Assassin’s Creed: https://habr.com/ru/articles/566946/
[8] уроки дизайна миссий: https://habr.com/ru/articles/928108/
[9] эволюцию: http://www.braintools.ru/article/7702
[10] https://habr.com/ru/articles/928108): https://habr.com/ru/articles/566946/)(https://habr.com/ru/articles/928108)
[11] ассасины: https://ru.wikipedia.org/wiki/%D0%90%D1%81%D1%81%D0%B0%D1%81%D0%B8%D0%BD%D1%8B
[12] проект компании Ubisoft: https://www.ubisoft.com/en-gb/game/assassins-creed/shadows
[13] зрения: http://www.braintools.ru/article/6238
[14] основные характеристики моего «китайца»: https://thunderobot.ru/catalog/laptops/911-m-g3-pro-7/
[15] памяти: http://www.braintools.ru/article/4140
[16] HowLongToBeat: https://howlongtobeat.com/game/145003/reviews/latest/1
[17] Valhalla: https://www.ubisoft.com/en-gb/game/assassins-creed/valhalla
[18] Odyssey: https://www.ubisoft.com/en-gb/game/assassins-creed/odyssey
[19] цивилизации Ису: https://assassinscreed.fandom.com/wiki/Isu
[20] конфликт: http://www.braintools.ru/article/7708
[21] эпоха Сэнгоку: https://assassinscreed.fandom.com/wiki/Sengoku/_period
[22] реализованы: https://www.digitalfoundry.net/articles/digitalfoundry-2025-assassins-creed-shadows-ps5-series-x-slives-up-to-its-tech-potential
[23] интеллект: http://www.braintools.ru/article/7605
[24] внимания: http://www.braintools.ru/article/7595
[25] три основных уровня сложности: https://www.ubisoft.com/en-us/help/assassins-creed-shadows/gameplay/article/changing-difficulty-settings-in-assassins-creed-shadows/000111225
[26] реакция: http://www.braintools.ru/article/1549
[27] стресса: http://www.braintools.ru/article/9548
[28] поведение: http://www.braintools.ru/article/9372
[29] Expert: https://screenrant.com/assassins-creed-shadows-best-difficulty-setting-op-ed/
[30] уровень Nightmare: https://gamerant.com/assassins-creed-shadows-nightmare-difficulty-improved-enemy-ai
[31] —: https://gamerant.com/assassins-creed-shadows-nightmare-difficulty-improved-enemy-ai)%E2%80%94
[32] ошибке: http://www.braintools.ru/article/4192
[33] поведение: http://www.braintools.ru/article/5593
[34] реальными кланами: https://assassinscreed.fandom.com/wiki/Ninja
[35] женщины-самураи: https://www.britishmuseum.org/blog/who-were-samurai
[36] стелс-Наоэ: https://assassinscreed.fandom.com/wiki/Yasuke
[37] ярости: http://www.braintools.ru/article/6134
[38] эволюционировала на основе Valhalla: https://www.ign.com/wikis/assassins-creed-shadows/Advanced_Combat_Tips_and_Tricks
[39] интерес: http://www.braintools.ru/article/4220
[40] опыт: http://www.braintools.ru/article/6952
[41] Assassin’s Creed III: https://www.ubisoft.com/en-gb/game/assassins-creed/assassins-creed-3-remastered
[42] Black Flag: https://www.ubisoft.com/en-gb/game/assassins-creed/iv-black-flag
[43] Image: https://sourcecraft.dev/
[44] https://advances.realtimerendering.com/s2025/content/Advances%202025%20-%20Raytracing%20the%20world%20of%20Assassin’s%20Creed%20Shadows.pdf: https://advances.realtimerendering.com/s2025/content/Advances%202025%20-%20Raytracing%20the%20world%20of%20Assassin
[45] 2.Digital: http://2.Digital
[46] https://www.eurogamer.net/digitalfoundry-2025-assassins-creed-shadows-tech-qa-rtgi-shader-compilation-taa-and-more: https://www.eurogamer.net/digitalfoundry-2025-assassins-creed-shadows-tech-qa-rtgi-shader-compilation-taa-and-more
[47] https://www.ubisoft.com/en-us/game/assassins-creed/news/4XbPPtFyQEtIMWrA9xVDmZ/assassins-creed-shadows-tech-qa: https://www.ubisoft.com/en-us/game/assassins-creed/news/4XbPPtFyQEtIMWrA9xVDmZ/assassins-creed-shadows-tech-qa
[48] https://www.youtube.com/watch?v=yj5pYktC3X8: https://www.youtube.com/watch?v=yj5pYktC3X8
[49] https://80.lv/articles/setting-up-a-detailed-snow-shader-in-unreal-engine-5https://www.youtube.com/watch?v=EfL48TUS0AQ: https://80.lv/articles/setting-up-a-detailed-snow-shader-in-unreal-engine-5https://www.youtube.com/watch?v=EfL48TUS0AQ
[50] https://news.ubisoft.com/en-us/article/5zqXjK8pL0fK8zXjK8pL0f/assassins-creed-shadows-technical-deep-dive: https://news.ubisoft.com/en-us/article/5zqXjK8pL0fK8zXjK8pL0f/assassins-creed-shadows-technical-deep-dive
[51] https://80.lv/articles/cryengine-vegetation-destruction-breakdown: https://80.lv/articles/cryengine-vegetation-destruction-breakdown
[52] https://dev.epicgames.com/documentation/en-us/unreal-engine/vegetation-destruction-in-unreal-engine: https://dev.epicgames.com/documentation/en-us/unreal-engine/vegetation-destruction-in-unreal-engine
[53] https://www.gdcvault.com/play/1022186/Real-Time-Destructible-Environment-Techniques: https://www.gdcvault.com/play/1022186/Real-Time-Destructible-Environment-Techniques
[54] Источник: https://habr.com/ru/articles/1006186/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1006186
Нажмите здесь для печати.