Ускоряемся

Сегодня Забир, один из разработчиков Astroneer, решил поведать нам о проблемах производительности игры и о различных путях их решения. Также он рассказал, как именно они оптимизировали игру в патче 125.

Получилось достаточно интересно и познавательно. Рекомендую всем почитать, чтобы быть в курсе одного из ключевых направлений в улучшении игры.

Всем привет! Это Забир из команды разработчиков Astroneer. В последний раз в блоге я рассказывал о важности оптимизации, и о том, как именно мы работаем над ней в Astroneer. После этого, в основном, я занимался увеличением производительности и стабильности игры, первым шагом к которым являлся недавний патч 125. Увеличивать производительность игры не так-то просто, особенно в ранней стадии разработки. Сейчас я хотел бы немного поговорить о производительности Astroneer и осветить наш ближайший план работы по ее увеличению. Есть три основных пути наступления на плохую производительность игры: потоковая система, оптимизация алгоритмов и взаимодействие OS и железа.

Потоковая система

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

До патча 125 ситуация была следующей: объект, который заспавнился на планете, никуда не исчезал из памяти… Вообще никуда. Это означает, что после 3-4 часов игры в памяти содержалось более 10 000 объектов! Патч 125 — наш первый шаг по внедрению потоковой системы в Astroneer. Пока что эта система удаляет из памяти только траву и некоторую другую растительность. Но это только первый шаг. Далее в перечень добавятся самые различные объекты: материалы, модули базы, транспорт и т.д. Чем больше объектов будут динамически удаляться/загружаться в игру, тем меньше на FPS будет влиять общее время игры. Короче говоря, потоковая система создает иллюзию огромного мира вокруг вас, но реально симулирует лишь небольшой участок планеты в небольшом радиусе от вас.

Оптимизация алгоритмов

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

Взаимодействие OS и железа

Такой успешный старт продаж Astroneer быстро обратил на себя внимание таких гигантов, как Microsoft, Intel, AMD и Nvidia, к которым мы теперь можем обращаться за советами по улучшению производительности игры на различном железе и операционных системах. Мы проделали очень много работы для обеспечения работоспособности игры на специфических конфигурациях, которых даже не было у нас в офисе! Работая с такими партнерами мы научились и до сих пор учимся избегать различных специфических ловушек и оптимально распределять доступные ресурсы. Со временем, мы достигнем большого мастерства в этом.

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


Вот такая получилась статья от Забира! Делитесь своим мнением по поводу нее в комментариях. Как вы думаете, какое название лучше подходит вместо «потоковой системы»? Что-то оно не очень вяжется здесь…