Разработка, оптимизация и релиз на Unity игры Synthety

image

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

Немного коротко обо всем.

Игра Synthety в жанре квест — приключение. Цель игры найти выход с текущей локации на следующую. Для этого необходимо общаться с персонажами, взаимодействовать с окружающими предметами, решать головоломки и прочее. От начала разработки и до релиза игры пролетели около полугода. Игра разрабатывалась на движке Unity на языке C#. В данном посте хотелось бы поделиться советами и подсказками в разработке и релизе игры.

Содержание


  1. Разработка и оптимизация.
  2. Релиз и получение дохода Google.
  3. Дальнейшие действия.

1. Разработка и оптимизация


Я разделяю мобильные игры на 4 категории. Игры тайм-киллеры, социалки, мморпг(ну во всяком случае они себя так называют) и атмосферные игры. Я выбрал жанр атмосферных игр, который ближе всех к искусству, а игры я считаю именно частью искусства. Можно делать игры данного жанра по разному, я лично для себя выбрал следующие основные условия создания игры: ощущение живого мира, персонажей и сюжета. Для этого необходима атмосферная графика, проработанный левел дизайн и интерактив с обьектами мира, а это все сказывается на оптимизации игры.

1.1 Оптимизация игры


В отличие от гиперказуалок с простым визуалом и небольшим количеством обьектов на сцене, но огромным количеством уровней(порядком 200-400), в моей игре акцент сделан не на количестве уровней, а на качестве. Но качество требует оптимизации. Основные инструменты оптимизации, которые я использовал в Unity:

  • Lightmapping;
  • Occlusion Culling;
  • Mesh Baker;
  • Прочее по оптимизации.

1.1.1 Lightmapping

Про запекание освещения в интернете много постов, но я не встречал конкретных значений параметров запечки, которые хотя бы были бы отправной точкой настройки. Поэтому прикрепляю скрин моих параметров, которые были проверены на трех машинах(MacBook pro, Dell G17, и стационарный компьютер).

image

Результат запечки везде приблизительно одинаков. Как пример запечки по данным настройкам:

image

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

  • Lightmap Resolution(лучше качество- но больше размер текстур запечки);
  • Direct и Indirect contribution(от каких источников освещений будет больше влияния от Directional или всех не прямых источников освещения таких как PointLight или SpotLight);
  • Indirect intensity (интенсивность Environment Light в частности даже если у вас стоит Gradient, то все равно берет в расчет только Sky Color он же Ambient color, если выставлен параметр Color)

1.1.2 Occlusion Culling

Тут достаточно все просто. Основное назначение данного инструмента- уменьшить количество трисов в экране, достаточно и стандартных параметров Unity. Уменьшение Smallest Ocluder и Smallest Hole приведет к увеличению размера данных, но существенных сокращений трисов не наблюдалось. Совет: если используете ортографическую камеру, то настройте Clipping Planes так, чтобы в камеру попадали те обьекты, которые должны быть отображены, а не те которые даже не видны.

1.1.3 MeshBaker

Запекает модели пачками в одну, отлично сокращая Drawcalls. Есть хороший бесплатный инструмент. .

Можно запекать модели пачками по 64к трисов(статический батчинг ломается свыше 64к трисов ) Однако лично я сторонник использовать сугубо нативные инструменты Unity, чтобы уменьшить риск поломки приложения на определенных моделях телефона.

1.1.4 Прочее по оптимизации

Не рекомендую использовать для мобильных устройств Standard шейдер. В частности рекомендую использовать на объектах вторичной видимости материал именно с дифуз шейдером. В целом считаю довольно дешевым, но приемлимым по визуалу шейдер ToonyShader.

Не используйте вертикальную синхронизацию(Vsync), вместо этого используйте

Application.targetFrameRate=300;

Запекание работает только на статические объекты(Static), а все динамические объекты рекомендую освещать Directional источником освещения(или несколькими, но разделяя Culling Mask на каждую группу объектов так, чтобы на каждый объект был свой один источник освещения). А также использовать фэйковые тени Projector. Не использовать Spot и Point light в реалтайме. Для изменения освещения на динамическом объекте в области запеченных объектов использовать Light Probes.(запекать вместе с освещением).

image

image

2. Релиз


Как опубликовать приложение в Google Play уже много где написано, в частности
habr.com/ru/company/livetyping/blog/326874

Ничего страшного и сложного в этом нет и каждый шаг контролируется и, если что-то сделано не верно, то выдается ошибка с пояснением, что сделано не так(и более того на каждом пункте есть ссылка на справку).

Я разработчик из Беларуси города Минск. В Беларуси единственный способ получать выплаты от Google Play это банковский перевод. Необходимо съездить в местный горисполком с заявлением на регистрацию ИП(найти бланк можно на сайте горисполкома, так как они не обязаны выдавать их у себя, заполните их сами перед поездкой ). Там же в тот же день Вам выдадут свидетельство c УНП. Этот учетный номер плательщика вам необходим для открытия счета в банке на ИП(в течение 20 дней советую приехать в налоговую и подать заявление на упрощенную систему налогообложения). Соответственно затем необходимо позвонить в банк(самые дешевые в обслуживании это БПС Сбербанк и Белгазпромбанк), заявить, что хотите открыть расчетный счет в валюте и нац валюте на ИП. Менеджер скажет Вам дату, когда необходимо приехать и расписаться, и в тот же день Вам выдадут реквизиты счета. Эти реквизиты и заполняются в Google в аккаунте разработчика в разделе «Настройки»/Настройки оплаты/ Способ получения дохода.

3. Дальнейшие действия


После релиза ваша игра или приложение окажется в огромном списке таких же приложений на Google. А также в таком же большом списке на AppStore(куда в ближайшее время я собираюсь релизнуть Synthety). Необходима раскрутка и реклама. Для этого лично я использую и планирую в частности для этой игры использовать Facebook трафик. Но это уже совсем другая история, если будут люди, которым это интересно, сделаю отдельный пост.

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

Спасибо за внимание. Поиграть в игру, если интересно можно уже сейчас в Google Play по запросу Synthety.
Источник: habr.ru