Про линейку игр Assassin's Creed слышали многие — появившись в 2007 году, игра привнесла абсолютно новый геймплей: появилась возможность взаимодействовать практически с любыми препятствиями, лазить по стенам, перепрыгивать с крыши на крышу и т.д. Разумеется, существующие игровые движки для этого подходили слабо, и поэтому студия Ubisoft Montreal разработала свой движок, назвав его Scimitar (ятаган).
Название Scimitar просуществовало недолго — уже в 2008 году, в игре Prince of Persia, разработчики переименовали его в Anvil (наковальня), и в дальнейшем все новые версии движка так же имели в названии слово Anvil.
Движок почти полностью написан на C++, модели объектов окружающего мира выполнены с помощью 3ds Max, персонажи сделаны в ZBrush. Для правильной анимации рук и ног персонажа при его движении используется специальное ПО, разработанное Autodesk — HumanIK (в основе лежит скелетная анимация). Физическим движком является Havok — он обрабатывает механику твердого тела и физику тканей. В отличии от многих движков того времени, Anvil не только умел работать с многоядерными процессорами — он требовал минимум 2 ядра для корректной работы. Это, разумеется, делало системные требования Assassin's Creed достаточно высокими, но графика для 2007 года была очень хорошей:
К выходу в 2009 году Assassin's Creed 2 движок достаточно сильно обновили: улучшили освещение (появилась динамическая смена дня и ночи), увеличили дистанцию прорисовки, ввели точечное освещение и улучшенные отражения. Система растительности была взята из Far Cry 2 (движок Dunia Engine), так же переработали физику тканей (теперь она вела себя реалистично при передвижении персонажа по вертикали).
Кроме графики был улучшен игровой искусственный интеллект, а так же ввели новую систему навигации неигровых персонажей. Движок стал еще лучше поддерживать многоядерность — теперь он умел распараллеливать вычисления между 6 ядрами, а так же научился работать с технологией HyperThreading. Причем распараллеливать можно было все функции движка — рендеринг, физику, игровой ИИ, анимации и т.д., что в итоге сильно повышало производительность на многоядерных системах (особо сильно ощущался прирост производительности при переходе с двухядерного на четырехядерный процессор).
В итоге это был бы один из лучших движков, если бы не одна особенность — он умел работать только с DirectX 9. Разработчики объясняли это тем, что игра должна быть совместима с Windows XP, однако в том же Far Cry 2 на выбор можно было поставить или DX 9, или DX 10, и почему нельзя было так сделать в AC 2 — непонятно. Но в общем и целом уровень графики к Assassin's Creed 2 в итоге соответствовал своему году:
AnvilNext
Игры AC 1 и 2 понравились игрокам, и Ubisoft стали разрабатывать третью часть. В 2012 году выпускать игру только с поддержкой DX 9 было бы странно, поэтому движок обзавелся поддержкой DX 10 и 11. Основной упор в движке был сделан на реалистичность анимации персонажей — теперь реплики героев следовали за движением губ и мимики, а в одной кат-сцене могло присутствовать до 6 персонажей. Бег персонажей теперь снимался с реальных актеров, что позволило убрать некоторую «деревянность» движений. Была переработана система взаимодействий, и теперь не было такого, что ГГ бежит в паре сантиметров от земли. К тому же движок научился отображать до 3000 персонажей в одной сцене, что позволило сделать действительно населенный и живой город, а так же массовые баталии.
Но не графикой единой — в игре серьезно переработали ИИ: NPC теперь умеют взаимодействовать друг с другом и корректно реагировать на поведение главного героя. Изменилось поведение врагов — теперь они могли нападать сразу все, а не по очереди как в AC 2. У каждого NPC теперь есть свое расписание жизни, согласно которому он будет двигаться и выполнять свои цели. Все это в итоге привело к тому, что игра выглядит неплохо даже по современным меркам:
На этом же движке вышли AC 4 и Rogue в 2013 и 2014 годах, однако ничего серьезного они не привнесли — стали масштабнее морские баталии, улучшили графику, а из нововведений появилась разве что возможность исследовать подводные пещеры.
AnvilNext 2
С выходом консолей текущего поколения (PlayStation 4 и Xbox One) Ubisoft решили полностью переделать движок, потому что к 2014 году Anvil уже было 8 лет, да и принципы написания игр под предыдущее и текущее поколение приставок сильно различались.
Первой игрой, вышедшей на новом движке, стала Assassin's Creed: Unity в 2014 году. Увы — новый движок был еще плохо отлажен, и многие жаловались на оптимизацию — даже на топовых системах случались просадки ниже 30 fps. К тому же системные требования были очень серьезными — для комфортной игры требовалось 8 Гб озу, топовый 4ядерный i7 и hi-end того времени — Nvidia GTX 680. Такую систему могли себе позволить очень немногие. Однако, если покопаться в движке, становилось понятно, что в сравнении с AnvilNext тут проделана просто гигантская работа и требования к ПК были вполне обоснованы.
Движок теперь умел работать с восьмиядерными процессорами, количество поддерживаемых объектов увеличилось в 10 раз, а их отрисовка идет на 1-2 порядка быстрее.
Для того, чтобы уменьшить нагрузку на GPU, была разработана технология отсечения невидимых объектов и создана асинхронная система отрисовки объектов. Был серьезно переработан LoD (Levels of Details) — теперь можно отсортировывать объекты по глубине кадра и отрисовывать их в нужном порядке. Так же заявлена поддержка DX 12 и APU Vulkan.
Все это в итоге привело к тому, что картинка в игре стала кинематографичного уровня:
Будущее движка
AnvilNext 2 на данный момент является одним из лучших движков — он отлично оптимизирован для работы на многоядерных процессорах, умеет динамично нагружать GPU и поддерживает все современные графические стандарты. Поэтому вряд ли Ubisoft будет его в ближайшее время сильно менять — скорее всего они сосредоточатся на его оптимизации и исправлении ошибок, ну а результат мы уже скоро увидим в новой части Assassin's Creed, теперь уже в Египте.