реклама
разместить

Как уместить Египет в телефоне?

Или опыт оптимизации компьютерной игры для мобильных устройств на примере Egypt: Old Kingdom.

Скриншот мобильной версии Egypt: Old Kingdom. Результат, которого мы достигли спустя более 30 билдов.
Скриншот мобильной версии Egypt: Old Kingdom. Результат, которого мы достигли спустя более 30 билдов.

Всем привет! С вами Clarus Victoria. Мы - российская инди-студия, которая занимается созданием исторически достоверных игр. Все наши игры выходили как на ПК, так и на мобильных устройствах, и мы рады поделиться своим опытом и рассказать о проблемах, с которыми мы столкнулись.

Релиз Egypt: Old Kingdom на ПК состоялся 24 мая 2018 года. В минимальных системных требованиях значилось: 2GB памяти на жёстком диске и 4GB оперативки. Почти сразу после релиза мы занялись портированием игры на мобильные устройства. Результатом адаптацииигры мы оказались довольны только спустя более 30 билдов.

Проблема портирования мобильных игр заключается не в "весе" клиента игры как таковом, а в том, какой объём оперативной памяти игра занимает, когда в неё играют. У современных смартфонов довольно много оперативной памяти, но также есть куча фоновых приложений, постоянно её занимающих. Поэтому при портировании игр надо уменьшать именно те части, которые занимают больше всего оперативной памяти.

Была поставлена задача - добиться такого уровня оптимизации, чтобы игра занимала максимально 2GB, а в идеале 1GB оперативной памяти. Мы очень хотели сделать мобильную версию Egypt: Old Kingdom доступной для максимального количества мобильных устройств.

Ответ на вопрос "Что ужимать?" зависит от особенностей каждой конкретной игры. Оперативная память в играх расходуется на обработку графики, запоминание текущих состояний, поддержку интерфейса и др. Графика обычно первый кандидат "под нож", но если ПК-версия игры имеет большой и сложный мир, то его поддержка и обработка занимает больше памяти. Тогда разработчикам придётся задуматься о сокращении игрового контента. Так, например, пришлось поступить разработчикам Майнкрафт - уменьшить миры и урезать количество видов блоков. В таких ситуациях может пострадать логика игры и игровые механики, если они связаны с теми объектами, которые приходится урезать.

Так сложилось, что вEgypt: Old Kingdom действие происходит на небольшой территории Египта, и этот мир оказался не настолько большим, чтобы пришлось сокращать контент. Поэтому нам удалось полностью сохранить игровой процесс, включая все режимы DLC Master of History.

В случае с нашей игрой больше всего оперативной памяти занимала обработка 3D графики - более 2GB оперативной памяти. Сказалось и то, что это был наш первый опыт работы с 3D. Неоптимизированная версия игры при первом запуске на мобильных устройствах выдавала всего один кадр в 3 секунды на среднем планшете, и как выяснилось, всё это из-за наличия нескольких источников динамического освещения и отрисовки теней.

Карты Egypt: Old Kingdom создавались на более ранней версии Unity 5.5.6f1. Если описывать процесс создания карты упрощённо, то он будет выглядеть так: Unity имеет инструмент terrain (англ. - местность, ландшафт), который создаёт абстрактную ограниченную модель территории. Выглядит это, как простой прямоугольник. Затем в Unity можно загрузить карту высот требуемой местности - в нашем случае, карту высот Мемфиса. Результат всё ещё не похож на карту, ведь там нет никаких текстур. Полученная территория раскрашивается текстурами, настраивается освещение, дорабатываются разные мелочи, чтобы всё выглядело красиво, и после многих других манипуляций получается готовая карта. Чем больше на карте текстур и объектов и сложнее освещение, тем больший объём памяти занимает её рендеринг.

Инструмент Terrain и карта Мемфиса в Unity. Общий вид.
Инструмент Terrain и карта Мемфиса в Unity. Общий вид.

Так как у нас в игре карта Мемфиса менялась только в момент появления новых построек, то постоянно рендерить террейн со всем содержимым не было смысла. Было решенорендерить карту каждый раз после изменения, и потом отображать игрокам. Это существенно легче, чем делать тоже самое 30 раз в секунду. К сожалению, в результате того, что карта получилась плоской, нам пришлось отказаться от вращения камеры.

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

Белые точки на карте - это камеры, с позиции которых происходит рендеринг
Белые точки на карте - это камеры, с позиции которых происходит рендеринг

Несмотря на принятые меры, в нужное количество памяти ужаться так и не получалось. Проблемы возникали при продолжительной игре, когда построек на карте становилось много, и они занимали всё больше памяти. Тогда мы решили - раз уж дома всё равно по сути плоские (при этом некоторые регионы занимали в районе 2Мб), то надо написать скрипт, который будет рендерить дома района, вырезать из рендера по маске фон и сохранять его. В результате самый большой регион стал занимать в районе 100Кб, а учитывая то, что всего у нас более 100 вариаций районов и построек, суммарно получился вполне ощутимый результат. И это позволило нам, наконец, втиснуться в память устройств.

Отрендеренный район города без подложки
Отрендеренный район города без подложки

В итоге мы достигли того, что игра стала занимать где-то 1.5GB, и сочли это достаточно хорошим результатом, пригодным для большинства мобильных устройств. В системных требованиях к Egypt: Old Kingdom мы указали 2GB, так как у устройства есть операционка и фоновые процессы, которые тоже где-то живут и занимают память.

Кроме графики был также оптимизирован интерфейс: мы увеличили отдельные элементы, чтобы на них было удобно нажимать даже на маленьких экранах телефонов. Кроме того, в мобильную версию добавлена возможность делиться результатами игры в соц.сетях - многие считают Egypt: Old Kingdom сложной игрой, так что мы подумали, что людям захочется похвалиться хорошим счётом.

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

Мобильная версия Egypt: Old Kingdom уже доступна в AppStore и Google Play, и мы сделали всё, что в наших силах, чтобы вам приятно было в неё играть!

2020
реклама
разместить
11 комментариев

Комментарий удалён модератором

Комментарий удалён модератором

Зачем. Столько. Болда.

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

2

Все повествование сводится к тому, что вы написали скрипт, который все сделал и все отлично. Куча воды и никакой конкретики, что и для чего. Тем более, зачем оставили несколько источников света с тенями, да ещё и на мобильных устройствах, не проще ли запечь все это дело?
А если у вас карта генерируется, то снова но слова об этом. Короче, куча воды с весьма пресным выводом.

На каждом районе может быть до 10 вариантов построек, запекание всех вариантов теней и освещения на каждый регион увеличил бы размер билда до нескольких гигабайт, что для мобильной игры не желательно. В результате работы скрипта постройкам свет и тени оказались не нужны в принципе.

Запечь все варианты освещения террейна (с полями, болотами и равнинами) тоже не выход, а отказаться от террейна на мобилах было невозможно, пришлось выкручиваться из сложившейся ситуации другими способами

2

Чем она собственно отличается от предыдущей Predynastic Egypt? Разница существенная ?

Более глубокий геймплей, другой контент, другое период времени. В новой игре речь про Древнее царство, когда как в прогшлой было про Додинастчиеский переоди.

Раскрывать всегда
Лонги про Северную Корею, Cyberpunk 2077 и Civ VII победили в конкурсе статей на DTF — их авторы получают по 5000 рублей

Собрали множество отличных материалов, написанных пользователями сайта.

111111
6060
2222
1313
55
44
33
11
11
11
11
11
Лонг про Северную Корею заработал 5к, а автор лонга - шедоубан.
реклама
разместить
Сборы «Капитана Америки 4» в США рухнули на 68% по сравнению с первым уикендом — это одно из самых больших падений для фильмов MCU

Хоррор «Обезьяна» от автора «Собирателя душ» тем временем получил 14 миллионов долларов, окупив свой производственный бюджет.

Сборы «Капитана Америки 4» в США рухнули на 68% по сравнению с первым уикендом — это одно из самых больших падений для фильмов MCU
9999
88
66
33
22
11
Фух. Этот мир еще имеет шанс на жизнь
Что за больной человек придумал это
Что за больной человек придумал это

Локация красивая конечно. Но эти скакания... Я шо, человек паук?

66
11
11
Продюсеру The Elder Scrolls V: Skyrim пришлось самому скорректировать баланс игры за несколько недель до её релиза

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

Продюсеру The Elder Scrolls V: Skyrim пришлось самому скорректировать баланс игры за несколько недель до её релиза
126126
2828
2121
55
44
11
Скорее бы уже TESVI чтобы понять можно ли окончательно хоронить Тодда на свалке истории или всё-таки он способен воспринимать адекватную критику и делать правильные выводы.
Задал вопрос: где и как взрослому мужчине в этом мире черпать силы, чтобы быть в состоянии поддержать близких и семью в трудную минуту.

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

4545
33
11
**10% от стоимости**: посмотрите пару роликов про андервольт и начните зарабатывать от 12т.руб. Это позволит вам поддержать близких и семью в трудную минуту.
Ну хоть в одной игре это обыграли🤣
Ну хоть в одной игре это обыграли🤣

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

7272
1414
77
11
Даже в простейших играх BioWare обыгрывается каждый значимый разговор по душам. Банально первый Котор - первое же объяснение с Картом Онаси, где он выказывает Ревану недоверие и слегка колется насчет своего прошлого и предательства от адмирала-ментора. Там он весьма реалистично бесится и рассказывает, что не может никому доверять, что он не верит гг итп. Я уж не говорю о первом Dragon Age, первом NWN и Инквизиции - там тьма веселья с диалогами. Например Коул этот блаженный. Мы узнаем всю сложность его контрактов с демонами, но сам парень вообще не парится по этому поводу. И лором это обосновано еще в первой части Dragon Age, когда мы встречаем такого же блаженного вендора в лагере на моменте инициации в Серые Стражи. И короче вот кто бы что ни говорил про Инквизицию - но с сопартийцами там проделана гигантская работа. Как раз после этой игры ушли Зещук и Музика. То есть это последняя игра от BioWare под их руководством. Потому вышло годно. Короче я хз что тут необычного на скриншоте. Таких ситуаций когда обыгрывается тема с проблемами сопартийцев - ТЬМА. В куче рпг/жрпг. И самый кайф - в частности и индивидуальности каждого случая. Например сложный характер Лелианы в первой части ДА, или специфическая натура Серы в Инквизиции, ну или постоянные проблемы Лиары Т’Сони. То как на данном скриншоте это обыграно - это уровень китайской гачи. Такой юморок-шутейка за 500 (не за 300, но за 500) часто юзается в Геншине, например.
[]