Портирование игр не всегда проходит беспроблемно — одни проекты можно легко портировать, другие — нет. Все зависит от типа игры, платформ и других факторов.

После успешного переноса Warface на Switch мы в студии Allods Team решили портировать нашу MMO Skyforge. Что-то далось очень легко, а что-то — сложнее. Ниже мы перечислим пять вещей, с которыми все прошло как надо, и пять вещей, с которыми возникли трудности, а также рассказываем, как команда преодолела эти препятствия.

Рассказывает Дмитрий Лисичкин, ведущий продюсер Skyforge. Этот текст — подробный пересказ материала, опубликованного изданием Game Developer

Пять вещей, с которыми не возникло трудностей

Удаленная разработка. Для Allods Team портирование Skyforge на Switch стало одной из первых крупных задач, над решением которой мы трудились полностью удаленно. Мы многому научились в плане распределенной работы, причем это касается не только работы друг с другом, но и взаимодействия с техникой и программами для разработки.

Было много технических трудностей: начиная с обеспечения доступа к репозиторию, инфраструктурным серверам и сервисам, заканчивая тем, что у нас не было возможности выдавать девкиты на дом каждому разработчику. Нам приходилось оставлять девкиты в офисе, подключаться и работать с ними удаленно. В начале локдауна у нас были проблемы с взаимодействием внутри команды. Например, если возникали какие-то сложности с билдом, девкитом, SDK и так далее, то решение проблемы и распространение информации происходило намного медленнее по сравнению с тем, к чему мы привыкли, находясь вместе в офисе.

FPS. При портировании Skyforge на Switch мы хотели добиться частоты кадров в 30 FPS при разрешении 720p, сохранив при этом достойное качество графики и звука. Поэтому производительность ранних версий на Switch стала для нас приятным сюрпризом! На самом первом билде мы ожидали не более 15 FPS — но получили почти вдвое больше. У нас еще не был реализован рендер, но уже был добавлен ввод от игрока, звук и игровая логика. Эта первая версия порта работала нормально при 25-30 FPS. 

Этот этап был очень важен для того, чтобы оценить риски проекта. Нет смысла тратить много месяцев на перенос рендера, если производительность процессора в портативном режиме будет не выше 10 FPS. Поскольку играть и тестировать без рендера достаточно сложно, мы использовали клиент с ПК, который был подключен к тому же серверу, чтобы «его глазами» увидеть действия игрока на Switch. Это позволило нам убедиться, что все работает правильно.

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

Преодоление чрезвычайных ситуаций. «Нет подключения к интернету», «проблемы с учетной записью пользователя», «нет доступа к сервисам Nintendo» — это трудности, с которыми мы столкнулись. К счастью, в Nintendo SDK есть система диагностики, поэтому нам зачастую даже не нужно было выяснять причину проблемы. 

Например, если у пользователя включен режим полета, то вместо абстрактного сообщения «Не удалось подключиться к серверу, повторите попытку позже» мы можем «спросить» консоль о сетевом подключении, и она «расскажет», что режим полета включен, и предложит пользователю перейти в соответствующий раздел настроек, чтобы отключить его. Очень удобно!

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

Пять проблем, с которыми мы столкнулись

Ограничения CPU. Самой большой проблемой, безусловно, были ограничения ресурсов платформы. Например, процессор Switch имеет только три ядра, и на ранних этапах разработки одно ядро было полностью занято обработкой звука. Это не было оптимальным способом использования ресурсов, поэтому мы решили изменить алгоритм сжатия звука для этой платформы. Но это привело к значительному увеличению размера клиента игры, до 9 ГБ только для звука, что нас тоже не устраивало. 

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

Ограничения оперативной памяти. Также возникли сложности с оперативной памятью — в Switch ее всего чуть больше 3 ГБ, включая видеопамять. Конечно, этого слишком мало для современных игр. Даже на 32-битных системах можно добиться большей производительности при использовании отдельной видеопамяти. Нам пришлось проделать большую работу по оптимизации потребления памяти, чтобы каждый уровень в игре помещался в памяти с запасом. 

Оптимизация. Сложнее всего было оптимизировать то, что уже ранее было трижды оптимизировано для PC, PS4 и Xbox One. В какой-то момент просто заканчиваются креативные идеи. Чтобы добиться желаемых результатов, нам пришлось уменьшить размер текстур и деталей, а также убрать некоторые эффекты, которые делали картинку более привлекательной и глубокой.

Онлайн стабильность. Skyforge изначально была исключительно онлайновой. Чтобы добиться стабильности, пришлось оптимизировать как контент, так и игровой клиент. Нам пришлось снизить качество графики и отказаться от некоторых более затратных для процессора функций движка. Пришлось значительно упростить небо и 3D-облака, сумеречные лучи (GOD Rays), глубину резкости (Depth of Field).

Ограничения платформы. Хотя портирование на Switch может быть сложным, особенно для таких масштабных проектов, как MMO, его нельзя назвать невозможным. Если вы определите области, в которых можете столкнуться с трудностями, особенно в плане ресурсов, вы сможете уберечь себя от неприятных сюрпризов в дальнейшем. Но вы должны убедиться, что используете и сильные стороны платформы. Например, хороший портативный режим поможет вашей игре выделиться среди других портов.

Комментарии (8)


  1. Anterenoire
    11.07.2022 19:54
    -1

    О, это же легендарная игра, на которую делал обзор видеоблогер Орк Подкастер :D


  1. pechorin
    11.07.2022 19:56
    +5

    Как буд-то маркетолог постмортем писал, а не разработчик. Все по верхам верхов и какие-то вещи уже очевидны из заголовков (кто не рассказывал про ограничения свитчта?). Не торт!


    1. pechorin
      11.07.2022 19:57
      +4

      Еще хочется так поязвить: техническая статья по мейлуршному!


    1. RiSilver
      13.07.2022 05:38

      Оригинал статьи несколько на иную публику рассчитан, но видимо чтоб два раза не вставать...

      Соглашусь, могли бы все же больше технических деталей добавить, хотя бы об изменениях в интерфейсе. Лично мне интересна их реализация: классическая мобильная, или что-то своё?


  1. irishmann
    12.07.2022 10:15
    -1

    Когда за игру берутся Allods Team - игра умирает.


  1. alexzeed
    13.07.2022 09:46

    Про звук: я помню, в конце 90-х мощности P1-166 хватало для раскодирования МП3 (вроде даже битрейта 320). Я понимаю, когда CPU сжирается кастомной логикой всякой, но на раскодирование звука целое ядро 1020 МГц??? Под это же должна быть библиотека, оптимизированная по самое нехочу. И возможности оффлоада (аппаратного декодирования) для звука у этой платформы нет?


  1. Lelou
    13.07.2022 10:08

    Когда-то играл на ПК. Даже на старте покупал пэта ездового по какому-то минимальному набору на ПК. Зайдя в версию для Switch я обнаружил (на ПК тоже самое?) - что игра больше стала похожа на мобильную в плане карты мира и миссий. Мне кажется или раньше было подобие открытого мира? Не помню точно. но это ерунда, видимо память подводит.

    По факту уже в первой миссии я обнаружил приемлемый ФПС, но при этом ужаснейшее качество текстур и разрешение. Просто набор пикселей вместо Мобов, атаки заклинания тоже вызывали не лучшее впечатление.

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

    Следующее - скорость загрузки, и это отдельный ад. Но самое важное - это сама концепция ММО - она рушит всё к чему приучает свич - когда ты можешь заблокировать консоль и продолжить с того же места игру через час/день/неделю. И тут по моему спустя какое-то время ввели все же функцию «восстановления соединения», которой не было на старте - но долгие загрузки все равно слишком долгие.

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

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

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


  1. fireSparrow
    13.07.2022 11:14

    Что-то я из статьи вообще не понял — в итоге игру портировали или нет?
    Просто термин «постмортем» предполагает разбор некоторой неудачи или инцидента, чтобы понять, что пошло не так и какие факторы привели к негативному результату.
    Вы же описываете проблемы, с которыми столкнулись, но подано так, как будто вы их успешно решили.
    Тогда в чём же собственно «постмортем»? Или вы просто взяли модное слово, не понимая его значения?