avatarcommunity
Игры1 неделю назад
Лонг

«Невозможный порт»: как Bluepoint Games портировала Titanfall на Xbox 360

Это история одного «невозможного порта» великолепного шутера Titanfall с Xbox One на Xbox 360, который Respawn поручили делать ныне уже не существующей студии Bluepoint Games. Чтобы вы могли себе представить, какие техномаги работали в этой замечательной студии.

Сегодня Bluepoint Games известна в основном как создательница ремастеров и ремейков игр с платформы Playstation, таких как Shadow of the Colossus и Demon's Souls. В конечном счёте Sony даже приобрела её (и благополучно закрыла).

Но в 2012 году их пригласили делать порт первого Titanfall на Xbox 360, о чём они в 2014 году рассказывали в интервью Ричарду Лидбиттеру из Digital Foundry.

В чём необычность этого порта? На первых же встречах обсуждалась ключевая проблема: Respawn использовали свою сильно модифицированную версию движка Source от Valve. Но в Respawn принципиально не использовали стриминг ассетов, предпочитая держать все текстуры прямо в памяти. Первый же вопрос, вставший перед Bluepoint Games, звучал так: как втиснуть 5 Гб ассетов в 512 Мб доступной на Xbox 360 памяти? Позиция инженеров из Respawn была такой: «Вряд ли это вообще возможно на Xbox 360, но, в общем, удачи вам, ребята!»

40 сотрудников Bluepoint Games создали порт Titanfall на Xbox 360 за 15 месяцев. И он оказался в некоторых отношениях даже лучше оригинала.

Версия для Xbox 360, конечно, оставала по производительности от оригинала, но вот в этом конкретном случае во время стресс-теста Battle of Demeter она даже опережает версию для Xbox One. 

Модифицированная версия Source, использованная в Respawn, в принципе содержала код для Xbox 360, но он был весь отключён. В сущности, это была сильно модифицированная версия Portal 2.

Проблемы начались сразу: когда им наконец удалось скомпилировать и запустить проект, оказалось, что уже при запуске, без текстур, моделек и карт, игра съедает половину всей доступной памяти.

Если добавить только одного игрока, игра начинала работать в 5fps, и это всё ещё без текстур.

В общем, Bluepoint пришлось полностью заменить:

  • рендерер мира;
  • систему коллизий;
  • систему видимости;
  • систему анимации;
  • систему ассетов;
  • пайплайн ассетов;
  • аудио-систему;
  • создать с нуля систему стриминга ассетов;
  • сжать все ассеты так, чтобы они влезли на DVD.

И при этом Bluepoint настойчиво хотели, чтобы игра претерпела минимум заметных изменений и почти не пострадала в качестве.

Для этого пришлось взяться за исходники Source и начать их урезать (в частности, на свалку отправился локальный сервер). После тщательного рефакторинга игру удалось запустить с минимальными текстурами и без звука на девките с 1Гб ОЗУ.

Борьба продолжилась. Инженеры бились за каждый мегабайт, и это не преувеличение. Они боролись с древней системой анимаций (Source на те времена уже был немолодым движком), пересматривали зависимости, QA составляли бесконечные таблицы с отчётами, и процесс перезапускался снова и снова.

На скриншоте сравнение трёх версий Titanfall. Версия для Xbox 360 работает в разрешении 1040x600 с 2xMSAA против версии для Xbox One (1408x792) и нативной 1080p на ПК.

Энди О’Нил, глава Bluepoint, говорил, что Respawn довели Source почти до предела возможностей, и конечно, втиснуть все эти возможности обратно в Xbox 360 было очень и очень сложно, учитывая 8 Гб ОЗУ на Xbox One против 512 Мб на Xbox 360, а также совершенно разные процессоры — архитектура PowerPC с тремя ядрами на Xbox 360 и 8-ядерный AMD на Xbox One (базовой версии). И при этом Source писали в те времена, когда двухядерные процессоры только начинали входить в моду. Как бы ловко они ни жонглировали многопоточностью, закон Амдаля обойти не удастся, и один неудачный рейкаст через всю карту отбрасывал всю игру до 20 fps.

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

Как и оригинальная версия, порт вовсю использовал возможности Microsoft Azure для симуляции действий NPC, чтобы снизить нагрузку на процессор. Все солдатики на картах под управлением ИИ просчитывались на серверах Microsoft, и поэтому, кстати, игра в принципе не могла работать через P2P-соединения.

Стриминг текстур стал огромной проблемой, потому что в оригинале его не было вообще, и все текстуры были доступны игре в любой момент времени. На Xbox 360 такой роскоши, как 8 Гб ОЗУ, не было.

Например, на карте Fracture было около 600 материалов и 2000 текстур. Техномагам из Bluepoint прошлось разработать систему, чтобы втискивать, скажем, 1 Гб текстур в 80 Мб кэша в ОЗУ.

В отличие от одиночной игры, куда можно было добавить сколько нужно боттл-неков, в Titanfall игроки сразу оказывались на громадной карте, на которой было множество сложных интерьеров, плюс игроки носятся по ней как угорелые, да есть ещё и огромные титаны, из которых игроку приходится эвакуироваться, улетая в небеса, так что вся карта мгновенно оказывается под ним — представляете, каково настроить для этого стриминг, если изначально его вообще не должно было быть?

Иными словами, игра стримила текстуры и материалы, как бешеная, причём был применён хитрый трюк: стриминг шёл одновременно с DVD и HDD. Часть текстур стримилась с HDD, потому что жёсткий диск быстрее находил нужное место на диске, другие текстуры грузились с DVD, да ещё и с дополнительной компрессией, потому что это позволяло несколько разгрузить кэш-раздёл жёсткого диска. Без DVD играть в Titanfall на Xbox 360 было нельзя.

Получается, что Bluepoint пошла против привычной технологии: для них была важна не только скорость загрузки с HDD, но и надёжная предсказуемая скорость чтения с DVD, разгружающего дисковый кэш-раздел.

Тест фреймрейта в версии для Xbox 360. Благодаря разблокированному фреймрейту fps держится выше 30 в районе 46,5. В принципе иногда он мог доползать и до 60.

Динамическим теням из версии для Xbox One пришлось уйти. На картах было слишком много геометрии — на одной только Fracture 22 миллиона треугольников статичной геометрии! Все тени пришлось запечь.

Решение разблокировать фреймрейт приняли инженеры из Respawn. Bluepoint предоставили им версию, в которой можно было отключать лок на 30 fps, и Respawn отключённый лок понравился куда больше из-за низкого инпут-лага.

В движке Source была своя система PVS для определения видимости пикселей (самые быстрые пиксели — это те, которые не приходится рисовать вообще!) Но для Titanfall она не подходила, так что Respawn написали свою, для очень сложной геометрии карт. Однако, она сильно опиралась на возможности CPU, которых на Xbox 360 не было.

Поэтому Bluepoint собрали огромную ферму из Xbox 360, и эти машины часами работали, создавая заранее просчитанную структуру видимости пикселей, так что менять геометрию уровней практически не пришлось.

Сравнение версий для Xbox 360 и Xbox One от Digital Foundry

Вот через что пришлось пройти Bluepoint Games, чтобы фактически сделать демейк крайне технологичной на 2014 год игры и запустить её на железе 2005 года так, чтобы остались довольны и критики, и игроки. Версия для Xbox 360 получила 83 балла на Metacritic.

В 2021 году Sony купила и теперь закрыла эту студию из бизнес-соображений, потому что осталась недовольна проектами, которые студия ей предлагала. Конечно, профессионалы такого уровня никогда не останутся без работы. Но студия — это не просто человек, это люди, это уникальное слияние компетенций, производственных практик, ноу-хау и синергия индивидуальностей.

Всё это теперь разрушено.

6
1
Chesheer

Steam: https://steamcommunity.com/id/prisoner7/

6комментариев