Всем доброго времени суток. Наконец то состоялся релиз моей мобильной игры Synthety. Хабр часто спасал советами и помощью и я решил поделиться своим опытом разработки с нуля, подытожив проделанный путь.
Немного коротко обо всем.
Игра Synthety в жанре квест — приключение. Цель игры найти выход с текущей локации на следующую. Для этого необходимо общаться с персонажами, взаимодействовать с окружающими предметами, решать головоломки и прочее. От начала разработки и до релиза игры пролетели около полугода. Игра разрабатывалась на движке Unity на языке C#. В данном посте хотелось бы поделиться советами и подсказками в разработке и релизе игры.
Содержание
- Разработка и оптимизация.
- Релиз и получение дохода Google.
- Дальнейшие действия.
1. Разработка и оптимизация
Я разделяю мобильные игры на 4 категории. Игры тайм-киллеры, социалки, мморпг(ну во всяком случае они себя так называют) и атмосферные игры. Я выбрал жанр атмосферных игр, который ближе всех к искусству, а игры я считаю именно частью искусства. Можно делать игры данного жанра по разному, я лично для себя выбрал следующие основные условия создания игры: ощущение живого мира, персонажей и сюжета. Для этого необходима атмосферная графика, проработанный левел дизайн и интерактив с обьектами мира, а это все сказывается на оптимизации игры.
1.1 Оптимизация игры
В отличие от гиперказуалок с простым визуалом и небольшим количеством обьектов на сцене, но огромным количеством уровней(порядком 200-400), в моей игре акцент сделан не на количестве уровней, а на качестве. Но качество требует оптимизации. Основные инструменты оптимизации, которые я использовал в Unity:
- Lightmapping;
- Occlusion Culling;
- Mesh Baker;
- Прочее по оптимизации.
1.1.1 Lightmapping
Про запекание освещения в интернете много постов, но я не встречал конкретных значений параметров запечки, которые хотя бы были бы отправной точкой настройки. Поэтому прикрепляю скрин моих параметров, которые были проверены на трех машинах(MacBook pro, Dell G17, и стационарный компьютер).
Результат запечки везде приблизительно одинаков. Как пример запечки по данным настройкам:
По сути от сюда вы можете настроить запечку вашей сцены, меняя лишь три параметра для достижения ваших целей:
- 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.(запекать вместе с освещением).
2. Релиз
Как опубликовать приложение в Google Play уже много где написано, в частности
habr.com/ru/company/livetyping/blog/326874
Ничего страшного и сложного в этом нет и каждый шаг контролируется и, если что-то сделано не верно, то выдается ошибка с пояснением, что сделано не так(и более того на каждом пункте есть ссылка на справку).
Я разработчик из Беларуси города Минск. В Беларуси единственный способ получать выплаты от Google Play это банковский перевод. Необходимо съездить в местный горисполком с заявлением на регистрацию ИП(найти бланк можно на сайте горисполкома, так как они не обязаны выдавать их у себя, заполните их сами перед поездкой ). Там же в тот же день Вам выдадут свидетельство c УНП. Этот учетный номер плательщика вам необходим для открытия счета в банке на ИП(в течение 20 дней советую приехать в налоговую и подать заявление на упрощенную систему налогообложения). Соответственно затем необходимо позвонить в банк(самые дешевые в обслуживании это БПС Сбербанк и Белгазпромбанк), заявить, что хотите открыть расчетный счет в валюте и нац валюте на ИП. Менеджер скажет Вам дату, когда необходимо приехать и расписаться, и в тот же день Вам выдадут реквизиты счета. Эти реквизиты и заполняются в Google в аккаунте разработчика в разделе «Настройки»/Настройки оплаты/ Способ получения дохода.
3. Дальнейшие действия
После релиза ваша игра или приложение окажется в огромном списке таких же приложений на Google. А также в таком же большом списке на AppStore(куда в ближайшее время я собираюсь релизнуть Synthety). Необходима раскрутка и реклама. Для этого лично я использую и планирую в частности для этой игры использовать Facebook трафик. Но это уже совсем другая история, если будут люди, которым это интересно, сделаю отдельный пост.
Буду рад помочь в личке и комментариях, если у кого то будут вопросы, так как в данном посте процентов 10 из всего того, с чем приходится сталкиваться разработчику. Рад буду помочь хотя бы даже одному человеку.
Спасибо за внимание. Поиграть в игру, если интересно можно уже сейчас в Google Play по запросу Synthety.