- BrainTools - https://www.braintools.ru -

Assassin’s Creed: Shadows — проливая свет. Художественный обзор и внутреннее устройство игры. Guest Post

Не так давно у нас с уважаемой@Kotyara99 [1]зашёл разговор о том, какими должны или могут быть обзоры компьютерных игр на Хабре. Зачастую хочется поделиться впечатлениями [2] от любимой игры, но не ударяться в субъективные воспоминания, чрезмерную по меркам Хабра рекламу или бесконечный разбор багов и фич продукта. Чтобы обосновать, как она видит статьи такого жанра, моя собеседница подготовила подробный обзор очередной серии своей любимой “Assassin’s Creed [3]“, к которому подошла столь ответственно, что даже попыталась проанализировать код шейдеров, аналогичных тем, что используются в игре. В статье шейдеры на языке GSL синтетические, сгенерированные при помощи большой языковой модели, но в иллюстративных целях они здесь вполне уместны. Выскажитесь пожалуйста, нравится ли вам такой контент, и хотели бы вы почитать аналогичные статьи по другим играм. Далее – от автора.

О франшизе Assasin’s Creed

Серия 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]).

Графика

Игра впечатляет масштабом визуальных эффектов. Ключевая особенность — динамическая система смены времён года.

Assassin’s Creed: Shadows — проливая свет. Художественный обзор и внутреннее устройство игры. Guest Post - 1

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

Assassin’s Creed: Shadows — проливая свет. Художественный обзор и внутреннее устройство игры. Guest Post - 2
Assassin’s Creed: Shadows — проливая свет. Художественный обзор и внутреннее устройство игры. Guest Post - 3

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

Assassin’s Creed: Shadows — проливая свет. Художественный обзор и внутреннее устройство игры. Guest Post - 4

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

Assassin’s Creed: Shadows — проливая свет. Художественный обзор и внутреннее устройство игры. Guest Post - 5

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

Assassin’s Creed: Shadows — проливая свет. Художественный обзор и внутреннее устройство игры. Guest Post - 6
Assassin’s Creed: Shadows — проливая свет. Художественный обзор и внутреннее устройство игры. Guest Post - 7

Искусственный интеллект врагов

Искусственный интеллект [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 — проливая свет. Художественный обзор и внутреннее устройство игры. Guest Post - 8

Система стелс позволяет вам почувствовать себя настоящим синоби

Система стелс в 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 .

Пример шейдера из AnvilNext (Assassin’s Creed 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 — проливая свет. Художественный обзор и внутреннее устройство игры. Guest Post - 9 [43]

Этот шейдер — не реальный исходный код из 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.

https://advances.realtimerendering.com/s2025/content/Advances%202025%20-%20Raytracing%20the%20world%20of%20Assassin’s%20Creed%20Shadows.pdf [44]

(там есть слайды про 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.

https://www.eurogamer.net/digitalfoundry-2025-assassins-creed-shadows-tech-qa-rtgi-shader-compilation-taa-and-more [46]

(статья и видео с breakdown от Ubisoft rendering engineers)

3.Ubisoft Tech Q&A (официальный сайт, февраль 2025): подтверждают сезоны влияют на материалы, GI, weather transitions, snow cover vs lush vegetation.

https://www.ubisoft.com/en-us/game/assassins-creed/news/4XbPPtFyQEtIMWrA9xVDmZ/assassins-creed-shadows-tech-qa [47]

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();
}
Assassin’s Creed: Shadows — проливая свет. Художественный обзор и внутреннее устройство игры. Guest Post - 10 [43]

Этот шейдер отвечает за прорубание через траву и кусты — отдельный стебель (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 + видео)

https://advances.realtimerendering.com/s2025/content/Advances%202025%20-%20Raytracing%20the%20world%20of%20Assassin’s%20Creed%20Shadows.pdf [44]

→ Здесь подробно разбирают 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

www.BrainTools.ru

Rambler's Top100