Автоматический поиск ошибок в открытом мире Assassin's Creed Origins
Подробный рассказ технического директора игры.
Бывший технический директор Ubisoft Montreal Николас Рутье на GDC 2018 выступил с докладом о подходах, которые применяются для проверки работоспособности элементов открытого мира и поиска ошибок в Assassin's Creed Origins. Мы выбрали из видео главное.
В Assassin's Creed Origins представлен большой игровой мир с разными зонами и огромным количеством контента. Чтобы создать всё это, сотни разработчиков трудились над проработкой отдельных игровых элементов. Это означает, что во время разработки ежедневно использовалось огромное количество данных. Кроме того, команда использовала процедурную генерацию, чтобы создать большую часть игрового мира.
Такие объёмы данных обязательно приводят к появлению багов и ошибок. И разработчикам важно вовремя их заметить и исправить. Допустим, левелдизайнер расставляет здания и все необходимые элементы, например, зиплайны, коллекционные предметы и так далее. Затем он намечает границу, в пределах которой генератор не может расставлять деревья, а также дорогу, которая проходит через деревню.
Далее за дело берётся художник по окружению, который расставляет кусты, деревья и другие декоративные элементы. Кроме того, разработчики добавляют все данные, которые важны для функционирования ИИ. Всё это приводит к тому, что система на уровне становится крайне сложной.
Неудивительно, что в таких условиях появляются ошибки. Например, какой-либо разработчик или генератор могут случайно поставить дерево прямо посреди зиплайна.
Другая ошибка может возникнуть, если левелдизайнер решит поднять выше точку, с которой игрок должен спускаться. В таком случае анимация персонажа просто не будет работать как надо.
Другой пример потенциальной проблемы связан с ИИ персонажей. У всех NPC есть свой распорядок дня, по которому они могут «жить» даже без участия игрока. У каждого персонажа есть специальные точки, на которых он занимается конкретным делом. Чтобы перемещаться от позиции к позиции, используется навигационная сетка.
В ходе работы может произойти такая ситуация, когда разработчик случайно ставит, например, декорацию на одну из точек, из-за чего она оказывается вне навигационной сетки, и NPC не может до неё добраться.
Третий пример связан с ошибками генератора. Как упоминалось ранее, дизайнер может простым сплайном наметить дорогу на карте, а генератор сам построит дорогу и сделает так, чтобы вся растительность была на обочине. Тем не менее иногда появляется ошибка, и деревья оказываются на дороге. Если их убрать, то в навигационной сетке всё равно останутся дыры, а NPC не смогут адекватно пользоваться дорогой.
По словам Рутье, баги и ошибки в открытом мире Origins появлялись по вине почти всех участников разработки, поэтому команде было важно создать систему для отслеживания багов.
Обычно процесс поиска багов происходит следующим образом: у тестеров есть список, по которому они должны пройтись и проверить каждый пункт. Но главная проблема в том, что в Assassin's Creed Origins огромный мир, поэтому разработчики не могли справиться с поиском багов вручную.
Чтобы решить эту проблему, разработчики создали автоматическую систему, которая ежедневно тестировала игру.
Во входные данные включено несколько типов информации: данные о мире — все интерактивные объекты, размещённые в игровом мире, процедурный контент, созданный генератором, и навигационная сетка; код — геймплейный код, движок; цели геймдизайна, которые обычно прописаны в документе Excel — в нём упорядочены все локации, их тип, возможность быстрого перемещения, тип лута, который там можно найти и так далее (этот документ прописывает левелдизайн-директор, который даёт указания остальным дизайнерам уровней).
Этап с анализом данных заключается в проведении автоматических тестов. Для этого разработчики использовали Anvilscript, который представляет собой C #-скрипт, работающий внутри игрового редактора. С помощью скрипта команда может обращаться к любым данным в игре. К тому же он даёт доступ ко всем фичам редактора и движка.
Есть три типа тестов: тесты метрик размещения, тесты системы ИИ, тесты локации. У каждого объекта есть список тестов, каждый из которых можно либо пройти, либо провалить.
Тесты метрик размещения предметов проще всего показать на знакомом элементе — зиплайне.
Это же касается и угла, под которым размещается зиплайн.
И подобные тесты проводятся с 22 типами игровых объектов: лестницами, сундуками, местами спауна персонажей и так далее. Может показаться, что в этом нет ничего удивительного, но достаточно посчитать экономию времени, чтобы оценить пользу такого подхода.
Тесты системы ИИ также значительно проще проводить в автоматизированном формате, потому что у NPC слишком много точек, в которые можно встать. И для каждой нужно провести тест, чтобы удостовериться, что навигационная сетка дотягивается до всех ключевых элементов.
Тесты локаций нужны для «инвентаризации» объектов внутри каждой зоны. Например, если за лагерем бандитов закреплён один сундук с лутом, то во время теста проверяется, так ли это на самом деле.
После анализа данных система выдаёт результаты проверки в таблице Excel.
В этом примере всё достаточно просто, но для тестов локаций создаются таблицы, в которых около 50 столбцов.
После получения результатов создаётся краткое изложение проблем и рассылается по электронной почте всей команде, ответственной за создание мира.
Чтобы сделать систему ещё лучше, разработчики постарались найти способ визуализировать место с ошибкой, чтобы сразу знать, в чём её причина. Для этого команда Ubisoft Montreal создала систему Atlas — фактически, Google Maps для игрового мира. Все ошибки, соответственно можно увидеть через Atlas.
Именно такие тесты и проводились ежедневно.
Автоматическая система поиска багов позитивно повлияла на множество рабочих процессов. Она позволила находить ошибки не только на этапе полировки, но и во время всего процесса разработки. Также они значительно снизила трудозатраты тестеров и всех членов команды. По словам Рутье, лучше вводить такую систему как можно раньше, потому что она показала высокую эффективность.
Может со мной что то не то, но Ориджинс прошел с огромным удовольствием, люблю тематику Древнего Египта, а вот Одиссею вообще не тянет допройти
Потому что Одисея во всём хуже и пресней, сломаные анимации, глупые активные прожимаемые способности, которые никак не подходят игре, история пустая, квесты побочные тоже
Та-же фигня. Ориджинс прошел не без удовольствия, но Одиссея ощущается какой-то совсем сухой и искусственной и долго играть в нее не выходит. Особенно после БотВы и rdr2 где ручного контента прямо тонны.
Хотя говорят основной сюжет неплох, но чет как-то все равно никак.
А сколько ты в Одиссею наиграл? Финал Ориджинса равен половине ( если ты манчкин) прохождения Одиссеи (по времени). И я бы не сказал, что Одиссея сильно выросла в проработке мира, побочек и прочих активностей. Скорее забуксовала, если не просела в море однообразия.
Мне тоже Ориджинс очень понравился, иногда в восторге просто был от пейзажей и музыка в некоторых местах запомнилась, полностью всё прошел. В Одиссею правда еще не играл, никак руки не доходят, пока Xcom 2 затянул. )
Ты не один такой)
Совершенно разные игры.
А я чёт наоборот.