Однажды я долго искал интересные 3D игры в Play Market и к своему сожалению не нашел почти ничего интересного.
Графика этих игр была слишком простая, освещение ужасное, текстуры слишком мыльные. Некоторые игры даже не дотягивали по качеству до игр для компьютеров и консолей 2000-ых годов.
Мне показалось странным, сейчас в мобильные телефоны устанавливают мощные графические процессоры, а качество графики сомнительное.

Позже оказалось не все так просто, запустив Unity, настроив проект на URP, добавив пост обработку, несколько моделей и пару источников света с тенями я получил примерно 5 кадров в секунду на своем телефоне.
Я решил добиться более высокой производительности и графики. Один из моих друзей занимался моделированием и смог собрать небольшую, но проработанную карту.
Про игру
Мы вместе решили сделать свою игру в духе Silent Hill, но в советском сеттинге.

В игре вам предстоит исследовать город, решать головоломки и найти выход из сложившейся ситуации.
Будут присутствовать монстры — куклы. (разумеется, это же хоррор, куда же без них). Но не всё так просто, им можно будет дать отпор.

Либо убить, либо убежать — решать вам. Спустя некоторые время игрок сможет сделать оружие против них. Оружие будет достаточно необычное для хоррора. Будет два типа, одно для защиты — другое для активных действий.
Всего в игре будет два варианта прохождения совершенно независимых.
Карта представляет собой полуоткрытый мир. Можно будет зайти во многие здания находящиеся в городе, все места по своему уникальные.

Игрок не ограничен в действиях. Можно изучить некоторую часть сразу, затем приступить к прохождению основной сюжетной линии, которая позволит открывать новые места.
Разработка
Для начала я провел тот же тест, но среди разных версий Unity и наиболее быстрой оказалась 2018 версия движка.
Чтобы добиться максимальной производительности, мы объединили все текстуры в атласы, максимально оптимизировали все модели, чтобы избежать наложений и лишних треугольников.
Мы подобрали оптимальные настройки для запекания света и доработали модели чтобы свет запекался максимально правильно.

От стандартных шейдеров пришлось отказаться, я написал с нуля все основные шейдеры, для статических, динамических объектов, деталей, частиц и травы.
Далее пришлось решать проблему с земной поверхностью, стандартный terrain в Unity никуда не годится и даже для компьютерных игр потребляет очень много ресурсов.
Огромный меш с шейдером, который микширует текстуры по маске был идеальным решением, но операция микширования в шейдерах тоже отнимает немало ресурсов. В итоге был сделан такой же меш, но без смешивания текстур.
Еще одной большой проблемой была пост обработка, с ней картинка в игре смотрелась намного красочнее и живее. Но мобильный телефон при включении эффектов вообще уходил в слад-шоу.
В движке Unity есть доступ к низкоуровневым функциям отрисовки графики через класс GL. Написав свой шейдер обработки изображений и отрисовав его на низком уровне удалось получить быстрые эффекты.
К сожалению на слабых устройствах они все равно потребляют слишком много ресурсов, поэтому я сделал возможность отключения всех эффектов через меню игры.

Игра получилась уникальной и полностью сделанной своими силами. Шрифт тоже нужен был оригинальный, на него ушло много времени, но получилось неплохо.
Для отрисовки шрифта больше всего приглянулась программа Fontographer. В будущем мы решили перевести игру на несколько языков и помимо русских и латинских букв я отрисовал все буквы юникода.
Большинство звуков для игры также записывались вручную в 5 утра в полной тишине, обрабатывались и микшировались.


Все скрипты для игровой логики оптимизировались классическими способами — использовалось пуллы для предметов, сжатый формат сохранений, быстрый рандом и прочие техники.
Самый тяжелый скрипт используется на куклах, но и он показал себя отлично даже на самых слабых телефонах.
## Итог
На данный момент игра готова на 80% и в скором времени она выйдет под платформы Android и IOS.
Игра в итоге представляет собой увлекательный мобильный хоррор с открытым миром и множеством головоломок с необычным сюжетом.

После увольнения из засекреченной лаборатории молодой ученый переезжает в небольшой провинциальный городок. Успев прихватить с собой некоторые разработки, он продолжает уже свои эксперименты над синтетическими материалами взяв в качестве образца пластиковых кукол с ближайшего завода детских игрушек. После неудавшегося эксперимента все население было поражено пси-вирусом, кроме игрока, которому предстоит разгадать тайну ученого, его экспериментов, а также выбраться из заброшенного города.
Все последние новости по игре мы с другом публикуем в нашей группе ВК.
Автор: Александр Кузнецов