
Всем доброго времени суток. Наконец то состоялся релиз моей мобильной игры 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.
beeruser
«уменьшить количество трисов»
Это какой-то локальный сленг? Никогда не слышал чтобы русскоязычные разработчики так сокращали слово «треугольников». Сокращают, к примеру, Quad — «квад(ов)», но никак не Quads — «квадсов» (по аналогии с вашими «трисами»).
fusioneer
Вероятно это калька с английского сокращения «tris», которое достаточно широко используется в англоязычной среде.
beeruser
Именно что в англоязычной, но не в русскоязычной.
А ещё «широко используется» хtors. Предлагаете называть транзисторы ксторами или ещё хуже — ксторсами?
fusioneer
К сожалению, слово «три» в русском уже занято, а «треугольник» слишком длинно. Если множественное число образовывать жёстко по аналогии с «квады» — получится «триы»? Или какую-то другую согласную вставить перед окончанием? В целом-то в язык попадают слова, которые работают. Иногда видоизменяются для адаптации.
ufna
Это очень распространенный термин. Что трисы, что квады.
beeruser
tris это множественное число, а quad единственное.
Когда вы говорите «трисов», вы делаете множественное число из слова уже обозначающего множество треугольников. Это звучит на редкость коряво.
В единственном числе будет «tri».
Я поискал «количество трисов» и нашёл целых 256 упоминаний в гугле, включая эту статью. Появляется это слово лишь в любительских форумах и ресурсах типа pikabu.
BenjaminMoore
в чатах по геймдеву, личном общении, на работе «трисы, квады, полики» используется часто.
в статьях такие разговорные англицизмы моветон, потому их встретить можно редко.
beeruser
В каких? Квады и полики — образованы согласно правилам русского языка. Трисы — неправильно. Я 20 лет в геймдеве, если что. Не слышал чтобы так кто-то говорит.
Kai-Realden Автор
20 лет, но явно не на Unity. Данный пост все же технически предназначен для пользователей Unity.


Юнитисты постоянно используют данный термин в качестве сокращенного от triangles. Но если говорить глобально, то да это моветон. Но повторюсь. Статья по технической части предназначена сугубо для движка Unity.
beeruser
Спасибо, Кэп. Я прекрасно знаю что означает слово tris. Разве это не видно прямо из моего первого сообщения? Я его сам использую (в английском варианте).
Какое отношение эти скрины имеют отношение к теме разговора?
Где тут надписи на русском языке?
Моветон это скорее писать «полики» в статьях. «Трисы» же вообще не нужно использовать.
Кажется, я уже несколько раз написал, почему это слово кривое и не буду повторяться.
Меня заботит то, что популяризация такого «термина» через популярные ресурсы типа Хабра это «медвежья услуга».
Kai-Realden Автор
Медвежья услуга кому? Мы здесь на статье «филология и культура»? Обсуждаем склонения кальки с английского на котором написан датско-американский движок Unity? Если да, то даже не знаю как так сказать, но я не вижу этот диалог по существу. Если обсудить, то обсудите уж лучше какие то детали, которые могут помочь в геймдеве, а не в размышлениях над подобием Эсперанто.
MiXei4
Сторисы, нюдсы…
beeruser
Вот уж не знаю как у вас, а в моём окружении говорят либо «сторис» либо «историю/и».