Однажды я долго искал интересные 3D игры в Play Market и к своему сожалению не нашел почти ничего интересного.
Графика этих игр была слишком простая, освещение ужасное, текстуры слишком мыльные. Некоторые игры даже не дотягивали по качеству до игр для компьютеров и консолей 2000-ых годов.
Мне показалось странным, сейчас в мобильные телефоны устанавливают мощные графические процессоры, а качество графики сомнительное.
![Игра Soviet Project Игра Soviet Project](https://habrastorage.org/getpro/habr/upload_files/06e/e49/75e/06ee4975eaa87d5932741acd42591a29.jpg)
Позже оказалось не все так просто, запустив Unity, настроив проект на URP, добавив пост обработку, несколько моделей и пару источников света с тенями я получил примерно 5 кадров в секунду на своем телефоне.
Я решил добиться более высокой производительности и графики. Один из моих друзей занимался моделированием и смог собрать небольшую, но проработанную карту.
Про игру
Мы вместе решили сделать свою игру в духе Silent Hill, но в советском сеттинге.
![Квартира из игры Soviet Project Квартира из игры Soviet Project](https://habrastorage.org/getpro/habr/upload_files/ccc/6e2/e78/ccc6e2e78f6bee4acc009091b92e4990.jpg)
В игре вам предстоит исследовать город, решать головоломки и найти выход из сложившейся ситуации.
Будут присутствовать монстры — куклы. (разумеется, это же хоррор, куда же без них). Но не всё так просто, им можно будет дать отпор.
![Что тут происходит? Что тут происходит?](https://habrastorage.org/webt/0g/gg/gw/0ggggwyyl3upuuukton4vnamhiu.jpeg)
Либо убить, либо убежать — решать вам. Спустя некоторые время игрок сможет сделать оружие против них. Оружие будет достаточно необычное для хоррора. Будет два типа, одно для защиты — другое для активных действий.
Всего в игре будет два варианта прохождения совершенно независимых.
Карта представляет собой полуоткрытый мир. Можно будет зайти во многие здания находящиеся в городе, все места по своему уникальные.
![В кресле и с гитарой. В кресле и с гитарой.](https://habrastorage.org/getpro/habr/upload_files/bdf/ca1/6f9/bdfca16f910c0e5b4da996ea0e88a934.jpg)
Игрок не ограничен в действиях. Можно изучить некоторую часть сразу, затем приступить к прохождению основной сюжетной линии, которая позволит открывать новые места.
Разработка
Для начала я провел тот же тест, но среди разных версий Unity и наиболее быстрой оказалась 2018 версия движка.
Чтобы добиться максимальной производительности, мы объединили все текстуры в атласы, максимально оптимизировали все модели, чтобы избежать наложений и лишних треугольников.
Мы подобрали оптимальные настройки для запекания света и доработали модели чтобы свет запекался максимально правильно.
![КПП и шейдер тумана. КПП и шейдер тумана.](https://habrastorage.org/getpro/habr/upload_files/7bb/46a/76f/7bb46a76f2b8b7e7e910a747fb74f1a7.jpg)
От стандартных шейдеров пришлось отказаться, я написал с нуля все основные шейдеры, для статических, динамических объектов, деталей, частиц и травы.
Далее пришлось решать проблему с земной поверхностью, стандартный terrain в Unity никуда не годится и даже для компьютерных игр потребляет очень много ресурсов.
Огромный меш с шейдером, который микширует текстуры по маске был идеальным решением, но операция микширования в шейдерах тоже отнимает немало ресурсов. В итоге был сделан такой же меш, но без смешивания текстур.
Еще одной большой проблемой была пост обработка, с ней картинка в игре смотрелась намного красочнее и живее. Но мобильный телефон при включении эффектов вообще уходил в слад-шоу.
В движке Unity есть доступ к низкоуровневым функциям отрисовки графики через класс GL. Написав свой шейдер обработки изображений и отрисовав его на низком уровне удалось получить быстрые эффекты.
К сожалению на слабых устройствах они все равно потребляют слишком много ресурсов, поэтому я сделал возможность отключения всех эффектов через меню игры.
![Настройки графики. Настройки графики.](https://habrastorage.org/getpro/habr/upload_files/5ab/042/b5b/5ab042b5b8f1eb9736240dbbb4d21b26.jpg)
Игра получилась уникальной и полностью сделанной своими силами. Шрифт тоже нужен был оригинальный, на него ушло много времени, но получилось неплохо.
Для отрисовки шрифта больше всего приглянулась программа Fontographer. В будущем мы решили перевести игру на несколько языков и помимо русских и латинских букв я отрисовал все буквы юникода.
Большинство звуков для игры также записывались вручную в 5 утра в полной тишине, обрабатывались и микшировались.
![Часть улицы и шейдер огня. Часть улицы и шейдер огня.](https://habrastorage.org/getpro/habr/upload_files/d7d/8f8/0c8/d7d8f80c8d079a2dd635edfb3a7f7264.jpg)
![Шрифт Шрифт](https://habrastorage.org/getpro/habr/upload_files/256/527/6ab/2565276ab5c34fd7653933b972a23de1.jpg)
Все скрипты для игровой логики оптимизировались классическими способами — использовалось пуллы для предметов, сжатый формат сохранений, быстрый рандом и прочие техники.
Самый тяжелый скрипт используется на куклах, но и он показал себя отлично даже на самых слабых телефонах.
## Итог
На данный момент игра готова на 80% и в скором времени она выйдет под платформы Android и IOS.
Игра в итоге представляет собой увлекательный мобильный хоррор с открытым миром и множеством головоломок с необычным сюжетом.
![Игровой процесс Игровой процесс](https://habrastorage.org/webt/gg/je/ix/ggjeix45pfhvc7vnogfhbsoxhqc.jpeg)
После увольнения из засекреченной лаборатории молодой ученый переезжает в небольшой провинциальный городок. Успев прихватить с собой некоторые разработки, он продолжает уже свои эксперименты над синтетическими материалами взяв в качестве образца пластиковых кукол с ближайшего завода детских игрушек. После неудавшегося эксперимента все население было поражено пси-вирусом, кроме игрока, которому предстоит разгадать тайну ученого, его экспериментов, а также выбраться из заброшенного города.
Все последние новости по игре мы с другом публикуем в нашей группе ВК.