Еженедельный Рапорт #19 — Обновление движка и оптимизация — World War 3 — Official Website

Еженедельный Рапорт #19 — Обновление движка и оптимизация

08/07/2019

Привет, бойцы!

Мы хотим дать вам детальное техническое представление о том, к чему приведет обновление Unreal Engine до новой версии, а также, что представляет из себя оптимизация, и как её проводят. Вопрос, конечно, больше технический, но мы постараемся изъясняться простыми словами. 

Но начнем с новостей за прошлую неделю. Мы классно отпраздновали 4 июля с нашими американскими друзьями из сообщества Military & Veterans Gamers, оказав им помощь в их 24-часовом стриме. Мы также добавили в игру их нашивку и эмблему на оружие в знак поддержки. Всё это вместе с новыми скинами, приуроченными к 4-му июля, уже доступно в игре. Мы всегда стараемся работать с различными благотворительными организациями и ранее также поддерживали ветеранов и их семьи.

Обновление движка

В данный момент мы используем версию Unreal Engine 4.19, которой уже больше года. Прежде мы уже несколько раз обновляли движок, но чем мы ближе к полноценному релизу, тем опаснее внедрять такие серьезные изменения. Игровые движки безумно сложные и требуют годы просто для освоения, не говоря уже о разработке, поэтому переходить на новую версию не так уж и легко. Это не просто нажать одну кнопку и готово. Изменениям подвергаются даже базовые системы, что вынуждает переделывать некоторые готовые части игры. Конечно, в итоге все может работать именно так как было задумано изначально и вдобавок с новыми технологиями, но это много дополнительной работы.

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

Вам может показаться, что всё звучит очень расплывчато, но такой слог используется намеренно, чтобы не увязать в деталях, однако, для полноты картины, мы рассмотрим одно из самых серьезных изменений, с которыми мы столкнемся при переходе на версию 4.21 — Replication Graph [сетевая репликация]. 

Репликация — это термин, который используется для описания того, как игра и сервер взаимодействуют друг с другом — расположение игроков, их движения, состояние и другие переменные, которые сравниваются между клиентом и сервером в каждом матче. В версии 4.20, Epic Games добавила плагин Replication Graph, который определяет наиболее важную информацию в каждой механике и выделяет на нее больше ресурсов. Напоминаем: серверу необходимо вычислять позиции и вращение десятков игроков, их передвижения, здоровье, боезапас, попадания, просчитывать движение техники и пуль, вычислять их проникновение и рикошеты. Мы пользуемся некоторыми хитростями, чтобы уменьшить объем данных, которые передаются между игроками, но Replication Graph возьмет на себя часть работы и разгрузит процессорное время как на сервере, так и на клиенте.

Звучит здорово, не так ли? Но из этого вытекает одна серьезная задачка, дело в том, что всё в игре взаимосвязано на передаче данных между игроками, и большинство ошибок в многопользовательских играх связаны с потерей или повреждением этих данных.

Если вы просто обновите движок и ничего не будете делать, то Replication Graph вам не поможет. Нам придется внести ряд изменений в наш сетевой код, чтобы новый плагин работал максимально эффективно. Нам придется залезть под капот и провести множество тестов, чтобы убедиться, что все работает лучше и быстрее, чем было. Более того, вся команда должна будет учитывать изменения в своих областях — анимация, работа механик оружия, техника — все данные между игроками должны передаваться как положено и синхронизироваться.

Что в итоге: пусть само обновление движка не такое уж и сложное, и может быть проведено парой человек за денек-другой, основная задача заключается в том, чтобы убедиться в стабильной работе сотен тысяч строчек кода, которые были написаны за долгие годы нами и Epic Games.

Оптимизация

Еще одна важная часть в подготовке обновления 0.7 — очередной взгляд на оптимизацию игры. В версии 0.6 мы добились значительных успехов, существенно ускорив работу игры и сделав ее лучше, чем было, но результат еще далек от того, к чему мы стремимся.

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

В настоящее время мы очень вовлечены в работу трех основных областей: оптимизация уровня (объектов), использование оперативной памяти, и «подвисания», которые связаны с производительностью сервер

 

а. Работа всех этих областей взаимосвязана. Оптимизация уровней повысит средний FPS, но устранение подвисаний и фризов скажется на FPS еще лучше. А большое количество свободной оперативной памяти для подгрузки текстур и объектов также сократит количество тормозов на загрузку в целом.

И тут хорошие новости — мы знаем, что нужно делать, чтобы игра работала так, как мы хотим. Мы постоянно проводим внутренние тесты, а иногда и вместе с сообществом (как на прошлой неделе на PTE), ищем способы повысить производительность, из которых и вытекают планы по созданию потрясающей игры.

По нашей оценке, начиная с выхода игры в ранний доступ в октябре прошлого года и по настоящее время, мы увеличили средний FPS на 200-300% для большинства игроков, а подвисания сократили более чем на 75%. Еще очень много вещей, которые мы можем сделать лучше, и нам ничего не мешает это делать — просто это занимает время, но будьте уверены, мы как никогда сосредоточены на оптимизации.

Если вам понравился этот технический рапорт, и вы хотите еще, — сообщите нам об этом! Заходите к нам на форум, в дискорд и официальную группу ВКонтакте, и вы никогда не пропустите важные и интересные новости!