Главная » Фильм игра » Питер «Durante» Томан о портировании The Legend of Heroes: Trails of Cold Steel на ПК

Питер «Durante» Томан о портировании The Legend of Heroes: Trails of Cold Steel на ПК

Питeр «Durante» Тoмaн o пoртирoвaнии The Legend of Heroes: Trails of Cold Steel нa ПК

Кoгдa XSEED связaлись сo мнoй и прeдлoжили пoучaствoвaть в пoртирoвaнии The Legend of Heroes: Trails of Cold Steel нa ПК, я oкaзaлся в вoстoргe oт пeрспeктив. Сeрия The Trails in the Sky былa oднoй из мoиx любимыx JRPG нa ПК, пoэтoму я точно решил сделать одну из последних игрушек франшизы наилучшей, насколько это может быть, на ПК.

Естественно, на тот момент я и представить не мог как очень я буду вовлечён в это дело. Я ждал сделать несколько оптимизаций здесь и там, может быть издержать неделю-другую полную работы. В действительности оказалось вообще все совсем по другому.

Эта статья поделенана три части:

  • 1-ая часть скажет о производительности, делая ударение на FPS и времени загрузки.
  • Во 2-ой части будут графические опции и улучшения, изготовленные специально для ПК версии.
  • И, в конце концов, третья часть покажет характерности ПК версии, кои напрямую не попадают под пункт “графические улучшения”.

Часть 1: Производительность

Начало Рассказы

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

Естественно же, это было неприемлимо. После длительного анализа я сообразил, что основная причина для подгрузок и долгого времени загрузки была в Nvidia Cg (на данный момент конечно уже устаревший и не обновляющийся язык высочайшего уровня для написания шейдеров), коий использовал игровой движок для компилирования и загрузки шейдеров в среде выполнения. Используя кэширование и повторное внедрение результатов компиляции, мне удалось уменьшить определенное время загрузки (после начальной загрузки) до ~2-3 секунд, и, также, убрать последующие подгрузки. Довольный прогрессом, я сказал о своих находках и передал код.

Эталоны

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

Так как игра была вначале выпущена на PS3 и даже PS Vita (правда ПК определенная версия использует ассеты уровня PS3 либо лучше), ты ждешь, что на резвой системе игрушка будет летать. Но, к этому моменту я конечно уже нашёл определенные сцены и положения камеры при коих производительность падала до 45 кадров в секунду (FPS), абсолютно ограниченная микропроцессором. Используя различные инструменты профилирования я нашел что неувязка напрямую связана с тем, как рендеринг OpenGL/Cg работает с состоянием шейдеров: делалось до 10-ов вызовов состояний на единичный вызов отрисовки. Проделав несколько тривиальных настроек и оптимизаций я сумел поднять производительность на моём тестовом щите до 55 FPS. На этом шаге я прикинул, что абсолютно оптимизированный рендеринг Cg-версии игрушки в этой сцене сумеет дать игрушке на моём ПК около 80 FPS в наилучшем случае.

Этого станет недостаточно.

Я никогда бы не сумел поставить своё имя рядом с портом игрушки, которая работала на PS3 в 30 FPS, и которая получила всего лишь 80 FPS на моём ПК 2015 года. На самом деле, лично я желал бы запустить игру на чём-то слабеньком и портативном, вроде GPD Win. А с таким уровнем производительности это было бы нереально.

Меняем жеребцов на переправе

Единственное правильное решение заморочек с производительностью — это абсолютно заменить бэкенд рендеринга. У базового движка конечно уже был бэкенд DX11, но в отличие от OpenGL/Cg он, разумеется, не употреблялся Falcom во определенное время разработки Trails of Cold Steel. И игрушка, и её ассеты использовали немаленькой набор функций, коий был недоступен либо работал не так в бэкенде DX11. Таким образом, переключение на другой рендерер было большущим изменением, по сопоставлению со всеми операциями по портированию на ПК, кои были изготовлены до этого момента.

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

Питер «Durante» Томан о портировании The Legend of Heroes: Trails of Cold Steel на ПК

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

Питер «Durante» Томан о портировании The Legend of Heroes: Trails of Cold Steel на ПК

Итог

Несмотря на трудности и усилия, вложенные в портирование совсем другого бэкенда рендеринга, вообще все в итоге окупилось. График ниже даёт представление о производительности (CPU) игрушки на моём ПК во определенное время разных стадий разработки:

Питер «Durante» Томан о портировании The Legend of Heroes: Trails of Cold Steel на ПК

Текущее состояние игрушки, помеченное как “Оптимизированная DX11 определенная версия” («Optimized DX11 version»), в большей степени соответствует тому, что разрешено ожидать от портирования игрушки с PS3 на ПК.

Я желал бы отметить единственный важный момент про данный график: пожалуйста, не вырывайте цитату из контекста, и не гласите о том, какой резвый DX11 по отношению к OpenGL. Таковой результат — это конкретные следствие того, как эти API употребляются в своих соответственных бэкендах рендерига в базовом движке. Я думаю, что GL/Cg определенная версия разработана в первую очередь для поболее близкого соответствия консолям, а не для наилучшей производительности на ПК.

Добиться почти 300 FPS на высокопроизводительном ПК это хорошо, но в целом нецелесообразно для пошаговой JRPG. Что больше впечатляет, и что является истинной изюминкой всех стараний, так это производительность на вправду слабых системах, к примеру GPD Win. В видео ниже игрушка запущена конкретно на нём. Как вы сможете заметить, игрушка идёт плавненько в родном разрешении 1280×720. В плане опций, в этом Video используются “портативные” опции.

Часть 2: Опции

Загрузчик

Давайте начнём с общего вида на загрузчик игрушки:

Питер «Durante» Томан о портировании The Legend of Heroes: Trails of Cold Steel на ПК

Здесь конечно есть несколько моментов, на коих я хотел бы тормознуть

  • У каждой опции есть текст с описанием, и нередко также конечно есть визуальное сопоставление настроек (справа).
  • Навигация по всем настройкам загрузчика вероятна при помощи контроллера (на самом деле я написал маленькую програмку с естественной 2D-навигацией и конфигурацией параметров в случайных диалоговых окнах C# WinForms используя Xinput, и XSEED разлюбезно разрешили мне выложить её в открытый доступ, что я и сделаю, когда станет время).
  • Отыскали опечатку на снимке экрана? Она конечно уже исправлена.

Отображение

Здесь представлены первостепенные режимы монитора (оконный либо полноэкранный) с либо без v-sync. Относительно фреймрейта, показаны 3 настройки: ограничение в 30 FPS, ограничение в 60 FPS и без ограничения FPS. На консолях игрушка шла с ограничением в 30 FPS, но на ПК и 30 и 60 абсолютно поддерживаются. Настройка без ограничения FPS тоже очень неплохо работала на моём ПК, но здесь не было достаточного QA, потому используйте на “свой ужас и риск”.

В конце концов, я также добавил настройку Field of View (FoV). Естественно, тут она не так принципиальна, как в играх от первого лица, но играя вблизи к большому монитору нередко хочется созидать более широкий FoV. На снимке экрана ниже представлено сопоставление между стандартным FoV (слева) и весьма высоким FoV (лично мне нравится просто напросто высокая настройка, эта представлена для сопоставления)

Питер «Durante» Томан о портировании The Legend of Heroes: Trails of Cold Steel на ПК

Качество изображения

Данный раздел посвящен разрешению монитора, сглаживанию (AA) и фильтрации текстур. Разрешение работает конкретно так, как вы для себя представляете. По части сглаживания, поддерживаются MSAA 2x, 4x и 8x, а прозрачный суперсэмплинг (TrSSAA) представлен здесь как качественный вариант для улучшения поверхностей с альфа-каналом. Было странноватым обнаружить, что TrSSAA на самом деле еще более сложен в реализации на DX11 чем на Direct3D 9 либо OpenGL, но, по последней мере, это разъясняет, почему так не достаточно игр предлагают его. На изображении ниже представлено сопоставление всех вариантов сглаживания. Само собою, разница еще лучше видна в движении:

Питер «Durante» Томан о портировании The Legend of Heroes: Trails of Cold Steel на ПК

Перед тем, как перейти в шейдингу, конечно есть один камень, коий я хочу снять со собственного сердца. Понимаете, что меня вправду раздражает? Когда игрушка предлагает для тебя выбрать AA, но не применяет его ко всему в игрушке (например, к моделям героев в меню). Мне пришлось расширить базовый движок для таких целей, но зато будьте убеждены, если вы выбираете AA в Trails of Cold Steel на ПК, то оно применяется ко всему:

  • Основная игрушка будет с AA, само собою.
  • Отрендеренные портреты героев будут с AA.
  • Модели героев в окне инструментария? С AA.
  • Модели героев во определенное время спец-событий? С AA.
  • Да, даже рендеринг мини-карты получил MSAA. И TrSSA, поэтому что, а почему бы и нет?!

Ах да, конечно еще есть анизотропная фильтрация. Это обычный чекбокс, поэтому что, честно говоря, нет никакой предпосылки использовать что-то наименьшее, чем 16xAF для данной игры. Даже GPD Win совладевает с этим!

Шейдинг

Здесь всё конечно еще интереснее. Представлено 4 вариации, относящихся к качеству динамических теней.

  • Разрешение теней (Shadow Resolution), как разрешено догадаться, регулирует разрешение теневых карт от “низкого” (“low) до “абсурдного” (“absurd”).

Питер «Durante» Томан о портировании The Legend of Heroes: Trails of Cold Steel на ПК

  • Источники теней (Shadow Casters), выбирают, какие объекты будут отбрасывать тень. Тени нередко показываются только лишь для определенных объектов по причинам производительности. Они “включены” только лишь для тех объектов, кои действительно нужны для сцены. Эта настройка перезаписывает значение по умолчанию и указывает тени для всех объектов.
  • Теневое расстояние (Shadow Расстояние), позволяет прирастить расстояние, на которое распространяются тени. Когда-либо раздражало возникновение и исчезновение теней буквально через пару метров от вас? Понимаю, меня тоже. Ну что же, не в мою смену!

Питер «Durante» Томан о портировании The Legend of Heroes: Trails of Cold Steel на ПК

  • В конце концов, Фильтрация теней (Shadow Filtering) обеспечивает поболее мягкие и эстетичные теневые переходы.

Даже с этими улучшениями теней игровое окружение вообще все равно смотрится мало плоско. Раз окружение, в отличие от сэл-шейдинга героев, рендерится в поболее реалистичном стиле, то я поразмыслил, что поболее реалистичная современная техника Ambient Occlusion (AO) может смотреться тут хорошо. С небольшой доработкой движка я сумел встроить HBAO+, одно из качественных и высокопроизводительных решений AO. Вот как это смотрится:

Питер «Durante» Томан о портировании The Legend of Heroes: Trails of Cold Steel на ПК

Питер «Durante» Томан о портировании The Legend of Heroes: Trails of Cold Steel на ПК

Питер «Durante» Томан о портировании The Legend of Heroes: Trails of Cold Steel на ПК

Питер «Durante» Томан о портировании The Legend of Heroes: Trails of Cold Steel на ПК

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

Видеографика

Последнее, но не по значению, это опции графики. Эти опции выглядят недостаточно впечатляющими, тут всего два чекбокса: и, честно говоря, качественная глубина резкости (High Quality Depth of Field) делает конкретно то, что и написано. И невзирая на то, что это приятное улучшение, писать здесь особо не о чем.

Но с другой стороны, неограниченная дальность прорисовки (Unlimited Draw Расстояние), извините меня, за то что говорю это сам, вправду очень принципиальное изменение. На самом деле, сделать что-нибудь с дальностью прорисовки — это фактически первое, о чём меня попросили как только лишь появилась 1-ая часть данной статьи. Я абсолютно устранил вообще все виды заморочек с внезапным возникновением объектов, заставив их прорисовываться на любом расстоянии. На неких картах это существенно увеличило нагрузку на CPU, в особенности вместе с включением всех теней, но здесь нет ничего, с чем бы не совладал современный настольный ПК.

Так как эту делему достаточно трудно передать на снимках экрана, я сделал Video, которое очень неплохо указывает эффект в действии:

Другие улучшения и результат

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

Часть 3: Различное

Турбо мод

1-ая дополнительная особенность — Турбо мод. Если эта настройка включена в загрузчике, то при зажатии R2 (либо эквивалента на клавиатуре/мыши) скорость битв, катсцен и даже передвижение по карте возрастает в 4 раза. Это разрешает очень вмиг завершить “не принципиальные” битвы либо пересечь необъятные территории. Когда турбо мод включён, на экране возникает соответствующая иконка:

Питер «Durante» Томан о портировании The Legend of Heroes: Trails of Cold Steel на ПК

Это не новенькая фишка, несколько портов на ПК за последний год имеют такую вероятность, но тут она абсолютно интегрирована и имеет одну маленькую возможность, которую я именовал “Умное Турбо”. В Trails of Cold Steel, когда ты “выводишь из равновесия” неприятеля, на экране на небольшое время возникает возможность совершить спец-атаку. В данный момент, даже невзирая на включенный турбо мод, игрушка возвращается к уникальной скорости, чтоб игрок успел избрать эту спец-атаку.

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

Питер «Durante» Томан о портировании The Legend of Heroes: Trails of Cold Steel на ПК

Поддержка ультрашироких экранов

Поддержка дополнительных соотношений сторон монитора в JRPG с наибольшим количеством UI-частей, и особенно в той, которая вначале была сотворена под 16:9 — это не самая очевидная задача. Среднее определенное время на решение этого вопроса я оценил в несколько полных рабочих дней. Так как время (во полностью прямом смысле) — денежные средства, я даже и представить не мог, что XSEED отважится на внедрение таковой настройки. По последним данным опросов Steam этим пользуются меньше 2% возможных игроков.

Питер «Durante» Томан о портировании The Legend of Heroes: Trails of Cold Steel на ПК

Что же, они пошли на это, и после работы над 32-мя отдельными неувязками, игра в настоящее время поддерживает хоть какое соотношение сторон выше 16:9 из коробки! Естественно, с некоторыми ограничениями: в основном связанными с тем, что меню остаётся в 16:9, и, также, часть UI для битв не весьма удачно перебегают границу кадра 16:9. Но для большинства ситуаций я разработал уникальные решения, кои, на мой взор, выглядят достаточно красиво.

Питер «Durante» Томан о портировании The Legend of Heroes: Trails of Cold Steel на ПК

Естественно же, если уж я делаю поддержку экранов с широким соотношением сторон, то я не ограничусь только лишь 21:9. Вообще все соотношения сторон выше 16:9 должны работать, по последней мере, в теории. Потому если, скажем, у вас установка с 3-мя мониторами и соотношением сторон 48:9, то игрушка у вас станет выглядеть так:

Питер «Durante» Томан о портировании The Legend of Heroes: Trails of Cold Steel на ПК

Должен признать, что поддержка ультрашироких экранов не тестировалась так же усиленно, как 16:9, потому есть возможность, что где-то будут мелкие графические трудности. Если вы отыскали такие, напишите мне!

Заключение

Фух. Длинный путь подходит к концу, и я весьма надеюсь, что игрушка будет работать так же отлично на вашем ПК, как и на нашем тестовом щите. Это 1-ая игра, где я был несет ответственность за основную часть кода под ПК, потому я немного нервничаю, но я уверен, что игрушка в гораздо наилучшем состоянии, чем огромное количество релизов, кои я смотрел за последнее определенное время.

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

* * *

ПК-определенная версия The Legend of Heroes: Trails of Cold Steel вышла 3 августа 2017 года в Steam, GOG и Humble Store.

Уникальные статьи в блоге XSEED: часть 1, часть 2, часть 3.

#перевод, #лонгрид, #gamedev, #pc

Понравилась статья, совет - лайкни и оцени поставив звездочку ниже:

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Оставить комментарий

Ваш email нигде не будет показан