Assassin’s Creed: Shadows — проливая свет. Художественный обзор и внутреннее устройство игры. Guest Post. assasins creed.. assasins creed. геймплей.. assasins creed. геймплей. дизайн игр.. assasins creed. геймплей. дизайн игр. дизайн уровней.. assasins creed. геймплей. дизайн игр. дизайн уровней. игры.. assasins creed. геймплей. дизайн игр. дизайн уровней. игры. компьютерная графика.. assasins creed. геймплей. дизайн игр. дизайн уровней. игры. компьютерная графика. Программирование.. assasins creed. геймплей. дизайн игр. дизайн уровней. игры. компьютерная графика. Программирование. Разработка игр.

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

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

Серия Assassin’s Creed — это культовая франшиза action-adventure игр от Ubisoft, сочетающая стелс, паркур, исторические события и фантастический лор о древней цивилизации Предтеч. С момента выхода первой части в 2007 году выпущено более 14 основных игр, множество спин-оффов, мобильных тайтлов и VR-проектов. Общий тираж превысил 200 миллионов копий, сделав AC одной из самых успешных серий в истории.

Франшиза доступна на широком спектре платформ и операционных систем:

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+). 

На Хабре серия освещалась многократно: от обзоров и ретро («Почему все любят Assassin’s Creed», видеообзор AC 2) до анализа разработки (как создавался AC 3, уроки дизайна миссий в AC III) и новостей (выход в онлайн как Infinity, отмены проектов Ubisoft, проблемы с DRM и серверами, критика контента). Статьи подчеркивают эволюцию от инновационного паркура к масштабным открытым мирам, но отмечают проблемы с оптимизацией и монетизацией.https://habr.com/ru/articles/928108)

Исторические ассасины — прототип игрового ордена. Ассасины (хашашины) — военизированное крыло низаритов-исмаилитов, шиитской секты, возникшей в XI веке. Основатель Хасан ибн Саббах захватил крепость Аламут (Иран) в 1090 г., создав государство в горах Ирана и Сирии (Масиаф). Они славились тайными убийствами политических и религиозных лидеров с помощью фидаинов — фанатично преданных убийц, прошедших суровую подготовку. Известные удачные покушения: визирь Низам аль-Мульк (1092, Бу Тахир Аррани), Раймунд II Тулузский, Конрад Монферратский (1192), десятки других правителей, визирей и халифов. Секта пала в 1260 г. Под натиском монголов.

Assassin’s Creed Shadows (2025) — масштабный проект компании Ubisoft, переносящий серию в феодальную Японию XVI века. С технической точки зрения новая игра демонстрирует как эволюцию устоявшихся механик, так и свежие программные решения.

В этой статье я разберу ключевые аспекты: графику, игровую физику, ИИ-составляющую, оптимизацию и сравню движок AnvilNext, лежащий в основе этой игры, с Unreal Engine 5 и Decima Engine. Для начала разберём основные характеристики моего «китайца»:

Процессор: Intel Core i7-13700H;

Количество ядер: 14 (6P+8E) ядер, 20 потоков;

Объем оперативной памяти: 16 ГБ;

Тип оперативной памяти: DDR4;

Частота оперативной памяти: 3200 МГц;

Тактовая частота: До 5 ГГц (TDP 45 Вт);

Общий объём накопителя SSD: 512 ГБ;

Тип накопителя: SSD M.2 2280 SSD SATA/PCIe;

Видеокарта: NVIDIA RTX 4060;

Объем видеопамяти: 8 ГБ;

Тип видеопамяти: GDDR6.

Оптимальными оказались средние настройки графики.

Немного о сюжете

Сюжетно Shadows отличается от предыдущих частей серии, прежде всего, дуэтом протагонистов — Наоэ и Ясукэ, чьи личные истории мести и внутренние конфликты формируют основу нарратива.

Однако, несмотря на интригующее начало, теряется динамика после 40 часов прохождения (согласно отзывам) HowLongToBeat. Лично мне сюжет хоть и видится стандартным для Assassin’s Creed, но атмосфера игры затягивает своей близостью с историческими деталями. К сожалению, взаимодействие между героями остаётся слабо раскрытым. В отличие от Valhalla или Odyssey, где активно развивался глобальный лор о цивилизации Ису, в Shadows фокус смещён на локальный конфликт того времени (эпоха Сэнгоку).

Графика

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

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

Физика и разрушение окружения реализованы в 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

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

Искусственный интеллект врагов в Assassin’s Creed Shadows заслуживает отдельного внимания, поскольку именно он в значительной степени определяет ощущение напряжения в стелсе и боях. ИИ врагов имеет три основных уровня сложности (с возможностью дальнейшей настройки), но на практике Ubisoft разделила систему на отдельные слайдеры для стелса и боя, с градацией от Forgiving (прощающий) до Expert (эксперт) и даже Nightmare (кошмар) в поздних обновлениях.

На базовом уровне (Story/Forgiving) враги довольно пассивны: медленная реакция, узкий конус зрения, слабая координация при поиске, почти нет совместных действий. Это идеально для тех, кто хочет сосредоточиться на истории и атмосфере без стресса.

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

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

В обновлениях (после 1.0.6) добавили уровень Nightmare ультра-сложный режим, где ИИ ещё жёстче: идеальные парирования требуют безупречного тайминга, враги максимально агрессивны, координируются для дезориентации игрока, оставляют минимум пространства для контратаки, а обнаружение происходит мгновенно при малейшей ошибке.

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

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

Система стелс в Assassin’s Creed Shadows — это эволюционировавший набор механик скрытности, ориентированный в первую очередь на протагонистку Наоэ (shinobi), которая идеально вписывается в роль ассасина. Ключевой элемент — механика Observe (Наблюдение): игрок может активировать замедление времени, чтобы сканировать окружение, отмечать врагов, их патрули, слабые точки и интерактивные объекты (например, фонари для создания тьмы или отвлекающие предметы). Это позволяет планировать подходы, подобно Eagle Vision из предыдущих частей, но с большим акцентом на тактику. Другие фичи включают: социальный стелс (переодевания в стражников или крестьян для blending in), инструменты синоби (кунаи для дальних убийств, дымовые бомбы, крюк-кошка для вертикального паркура, яды и ловушки), скрытые убийства (air assassinations с крыш или из кустов), снижение шума/видимости (приседание, ползание, использование погоды/сезонов — дождь маскирует звуки, снег оставляет следы). ИИ врагов адаптируется: на высоких сложностях они патрулируют парами, реагируют на подозрительное поведение и координируют поиск. В отличие от боевого Ясукэ, стелс Наоэ подчёркивает «невидимость» — цель: устранить цель, не спровоцировав тревогу. .

Синоби (яп. 忍び, shinobi, «скрывающийсяся тень») — это историческое самоназвание японских ниндзя (忍者, ninja — термин, популяризированный позже в эпоху Эдо и западной поп-культуре). В лоре Assassin’s Creed синоби — японский аналог Братства Ассасинов: феодальной Японии (эпоха Сэнгоку), специализирующиеся на шпионаже, диверсиях, инфильтрации и точечных убийствах. Они использовали маскировку, яды, метательное оружие, паркур и психологический террор. В Shadows главная героиня Наоэ Фудзибаяси — куноити (женщина-синоби) из клана Ига, обученная мастером Фудзибаяси Нагато; она воплощает идеал синоби как «невидимого убийцы», контрастируя с самурайским Ясукэ. В франшизе синоби интегрированы в глобальный конфликт Ассасинов и Тамплиеров, с акцентом на стелс-систему и честь (вдохновлено реальными кланами Ига/Кога).

Самураи (яп. 侍, bushi — «воины») — элитная военная каста феодальной Японии с XII века до Мэйдзи (1868), возникшая из наёмников при дворе. Они служили даймё (феодалам), следовали кодексу бушидо (путь воина: честь, лояльность, мужество, мастерство меча/лука), правили в эпоху сёгунов (Камакура — Эдо). Известны катаной, юми, доспехами; женщины-самураи (онна-бугэйся) редки.

В Assassin’s Creed Shadows (эпоха Сэнгоку) самураи — воины кланов (Ода, Такеда и др.), часть конфликта ассасинов и тамплиеров. Главный протагонист Ясукэ — реальный африканец (~1555–?), первый чёрный самурай: раб португальских тамплиеров, спасён иезуитами, стал ретейнером/самураем Ода Нобунага (участвовал в Тэнсё Ига войнах). После смерти Нобунага — ронин (бродяга-самурай), мастер kenjutsu/naginatajutsu, союзник ассасинки Наоэ (из Ига икки); борется с тамплиерами (Shinbakufu — «новый бакufu» Асикага Ёсиаки). Ясукэ воплощает силу/адаптивность, фокусируется на открытом бою (тяжёлое оружие), в отличие от стелс-Наоэ.

Игровая система боя

Боевая система в Assassin’s Creed Shadows строится на комбинировании атак, уклонений и идеального времени парирования, с акцентом на реактивный стиль боя, где игрок должен читать атаки врагов и контратаковать в ритме. Базовые механики едины для обоих протагонистов — Ясукэ (самурай с тяжёлым оружием: катана, нагината, тецубо — фокус на мощных ударах, разрывах брони и атаках с площадным уроном для толпы) и Наоэ (синоби с лёгким арсеналом: катана, кунай, нунчаки — акцент на быстрые комбо, уклоны и скрытые убийства), но стили сильно различаются: Ясукэ ломает стойку тяжёлыми заряженными ударами и доминирует в открытом бою, Наоэ полагается на скорость, кувырки и цепочки атак для оглушения. Здоровье врагов разделено на две полосы: броня/стойкость (полоса брони/оглушения — заполняется от блоков и уклонов, при переполнении враг оглушается и открывается для добивания) и основное здоровье (снижается только успешными контратаками); это добавляет желания сконцентрироваться, заставляя сначала «разблокировать» цель. Активные навыки из двух веток прокачки (Бой и Стелс) усиливают стиль: для Ясукэ — заряженные развороты, захваты и режим ярости для атак с площадным уроном; для Наоэ —  рикошетные кунаи и призрачный шаг (невидимость); прокачка через древо навыков с очками от миссий и квестов, но многие отмечают её монотонность — сбор свитков, молитвы в храмах, сбор ресурсов. Опция «Скрытые атаки всегда убивают» (убийства с одного удара) доступна в настройках сложности (Прощающий/История), упрощая стелс для новичков — убийства с воздуха, захваты с уступов и удары из кустов мгновенно устраняют цель, без зависимости от уровня. На высоких сложностях (Эксперт/Кошмар) бой становится беспощадным: идеальное парирование требует пиксельного тайминга (pixel-perfect timing, или frame-perfect — это геймерский термин для чрезвычайно точного ввода команды, где «окно» для успеха составляет 1–2 кадра (при 60 FPS — ~16–33 мс), требуя идеальной реакции), уклоны имеют кадры неуязвимости, но группы врагов координируются, используя захваты и прерывания атак. Минусы — повторяемость: базовые комбо быстро приедаются без разнообразия врагов, побочные квесты (убийства, сбор) монотонны, а прокачка фокусируется на фарме, снижая вовлечённость после 20–30 часов. В целом, система эволюционировала на основе Valhalla, но страдает от шаблонности элитных боёв.

Подробнее о видеодвижке

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

Современный игровой движок — не просто «коробка с инструментами», а стратегическое решение, определяющее облик проекта, его технические границы и даже темпы разработки. Сравним, пожалуй, три знаковых из них: 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 (полный контроль, многолетний опыт команды)

Огромное сообщество, регулярные обновления

Кастомизация / настраиваемость

Средняя (заточена под 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 IIIBlack Flag, 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

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

(там есть слайды про vegetation material baking, season LUT, snow on foliage по нормали)

2.Digital 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

(статья и видео с 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

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

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 (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. (по словам Пьера Фортена ).

Однако, многие игроки (и я в том числе) наблюдали просадки 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

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

→ Здесь подробно разбирают procedural foliage, damage buffers, per-instance damage maps, blade path matching, persistent destruction через compute shaders и RTGI-адаптацию после разрушения.

2.Digital 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

→ Обсуждают 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

→ Упоминают 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 (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

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

7.Общий подход per-instance damage buffers: https://www.gdcvault.com/play/1022186/Real-Time-Destructible-Environment-Techniques

Если бы существовал реальный публичный исходник шейдера именно из Shadows — он бы уже всплыл в сообществе (например, на GitHub в репозиториях типа «game-shader-dumps» или в Discord-серверах reverse engineering). На данный момент такого нет.

Автор: Sivchenko_translate

Источник

Rambler's Top100