Однажды я долго искал интересные 3D игры в Play Market и к своему сожалению не нашел почти ничего интересного.
Графика этих игр была слишком простая, освещение ужасное, текстуры слишком мыльные. Некоторые игры даже не дотягивали по качеству до игр для компьютеров и консолей 2000-ых годов.
Мне показалось странным, сейчас в мобильные телефоны устанавливают мощные графические процессоры, а качество графики сомнительное.
Позже оказалось не все так просто, запустив Unity, настроив проект на URP, добавив пост обработку, несколько моделей и пару источников света с тенями я получил примерно 5 кадров в секунду на своем телефоне.
Я решил добиться более высокой производительности и графики. Один из моих друзей занимался моделированием и смог собрать небольшую, но проработанную карту.
Про игру
Мы вместе решили сделать свою игру в духе Silent Hill, но в советском сеттинге.
В игре вам предстоит исследовать город, решать головоломки и найти выход из сложившейся ситуации.
Будут присутствовать монстры — куклы. (разумеется, это же хоррор, куда же без них). Но не всё так просто, им можно будет дать отпор.
Либо убить, либо убежать — решать вам. Спустя некоторые время игрок сможет сделать оружие против них. Оружие будет достаточно необычное для хоррора. Будет два типа, одно для защиты — другое для активных действий.
Всего в игре будет два варианта прохождения совершенно независимых.
Карта представляет собой полуоткрытый мир. Можно будет зайти во многие здания находящиеся в городе, все места по своему уникальные.
Игрок не ограничен в действиях. Можно изучить некоторую часть сразу, затем приступить к прохождению основной сюжетной линии, которая позволит открывать новые места.
Разработка
Для начала я провел тот же тест, но среди разных версий Unity и наиболее быстрой оказалась 2018 версия движка.
Чтобы добиться максимальной производительности, мы объединили все текстуры в атласы, максимально оптимизировали все модели, чтобы избежать наложений и лишних треугольников.
Мы подобрали оптимальные настройки для запекания света и доработали модели чтобы свет запекался максимально правильно.
От стандартных шейдеров пришлось отказаться, я написал с нуля все основные шейдеры, для статических, динамических объектов, деталей, частиц и травы.
Далее пришлось решать проблему с земной поверхностью, стандартный terrain в Unity никуда не годится и даже для компьютерных игр потребляет очень много ресурсов.
Огромный меш с шейдером, который микширует текстуры по маске был идеальным решением, но операция микширования в шейдерах тоже отнимает немало ресурсов. В итоге был сделан такой же меш, но без смешивания текстур.
Еще одной большой проблемой была пост обработка, с ней картинка в игре смотрелась намного красочнее и живее. Но мобильный телефон при включении эффектов вообще уходил в слад-шоу.
В движке Unity есть доступ к низкоуровневым функциям отрисовки графики через класс GL. Написав свой шейдер обработки изображений и отрисовав его на низком уровне удалось получить быстрые эффекты.
К сожалению на слабых устройствах они все равно потребляют слишком много ресурсов, поэтому я сделал возможность отключения всех эффектов через меню игры.
Игра получилась уникальной и полностью сделанной своими силами. Шрифт тоже нужен был оригинальный, на него ушло много времени, но получилось неплохо.
Для отрисовки шрифта больше всего приглянулась программа Fontographer. В будущем мы решили перевести игру на несколько языков и помимо русских и латинских букв я отрисовал все буквы юникода.
Большинство звуков для игры также записывались вручную в 5 утра в полной тишине, обрабатывались и микшировались.
Все скрипты для игровой логики оптимизировались классическими способами — использовалось пуллы для предметов, сжатый формат сохранений, быстрый рандом и прочие техники.
Самый тяжелый скрипт используется на куклах, но и он показал себя отлично даже на самых слабых телефонах.
## Итог
На данный момент игра готова на 80% и в скором времени она выйдет под платформы Android и IOS.
Игра в итоге представляет собой увлекательный мобильный хоррор с открытым миром и множеством головоломок с необычным сюжетом.
После увольнения из засекреченной лаборатории молодой ученый переезжает в небольшой провинциальный городок. Успев прихватить с собой некоторые разработки, он продолжает уже свои эксперименты над синтетическими материалами взяв в качестве образца пластиковых кукол с ближайшего завода детских игрушек. После неудавшегося эксперимента все население было поражено пси-вирусом, кроме игрока, которому предстоит разгадать тайну ученого, его экспериментов, а также выбраться из заброшенного города.
Все последние новости по игре мы с другом публикуем в нашей группе ВК.
Комментарии (29)
shybovycha
01.02.2022 05:54+20Как-то слишком уж поверхностно - никаких деталей, выглядит как что-то между рекламой и пиаром - то ли играть в игру чтобы увидеть как оно работает, то ли исходники смотреть чтобы глянуть как оно реализовано...
Раздел "разработка" разочаровал больше всего. Добавили бы деталей во все самые интересные этапы:
Для начала я провел тот же тест, но среди разных версий Unity и наиболее быстрой оказалась 2018 версия движка.
Как мерили производительность? Что было медленно, а что быстро? Что приоритезировали при измерениях?
Чтобы добиться максимальной производительности, мы объединили все текстуры в атласы, максимально оптимизировали все модели, чтобы избежать наложений и лишних треугольников.
Как модели оптимизировали? О каких наложениях идет речь? Какого прироста производительности добились?
Мы подобрали оптимальные настройки для запекания света и доработали модели чтобы свет запекался максимально правильно.
Что же это за настройки такие? Как свет запекался в ситуациях "правильно" и "неправильно"? Как это выглядело? Какая производительность была / стала?
От стандартных шейдеров пришлось отказаться, я написал с нуля все основные шейдеры, для статических, динамических объектов, деталей, частиц и травы.
Какие шейдеры реализовывали? Какие были ньюансы реализаций?
Далее пришлось решать проблему с земной поверхностью, стандартный terrain в Unity никуда не годиться и даже для компьютерных игр потребляет очень много ресурсов.
Огромный меш с шейдером, который микширует текстуры по маске был идеальным решением, но операция микширования в шейдерах тоже отнимает немало ресурсов. В итоге был сделан такой же меш, но без смешивания текстур.
Какую проблемму решали? Как решили? Неужто просто убрали смешивание текстур?
Еще одной большой проблемой была пост обработка, с ней картинка в игре смотрелась намного красочнее и живее. Но мобильный телефон при включении эффектов вообще уходил в слад-шоу.
В движке Unity есть доступ к низкоуровневым функциям отрисовки графики через класс GL. Написав свой шейдер обработки изображений и отрисовав его на низком уровне удалось получить быстрые эффекты.
Какие эффекты в игре присутствуют? Как их реализовывали в конце-концов?
В общем, мне не понравилась статья.
Про саму игру тоже крайне поверхностно написано - непонятно то ли она уже существует, то ли вот это все - только план. Сюжет не раскрыт от слова совсем, геймплей описан никак (про возможность получить оружие и убивать кукол - и это все?). Не уверен как (чем) вы планируете привлекать публику в игру.
Пока что я бы поиграл только чтобы понять что это такое и поглядеть на картинку (как кто-то выше написал, напоминает ламповый "сталкер").
MrGh0st Автор
01.02.2022 10:43+7Как мерили производительность? Что было медленно, а что быстро? Что приоритезировали при измерениях?
Тест производился на 6 разных мобильных устройствах, основным параметром было отсутствие фризов, подтормаживаний, плавность работы и стабильные 60 кадров в секунду.
Как модели оптимизировали? О каких наложениях идет речь? Какого прироста производительности добились?
Это скорее тема для отдельной статьи. Наложения это когда два две плоскости или треугольника находяться в одной зоне видимости и накладываються друг на друга при отрисовки графическим процессором.
Что же это за настройки такие? Как свет запекался в ситуациях "правильно" и "неправильно"? Как это выглядело? Какая производительность была / стала?
Тут можно писать вторую статью про запеченый свет, он априори работает в разы быстрее реалтайма поэтому замеры производителности особо нет смысла делать. "неправильно" это когда на моделях бывают артефакты в виде пятен или неправильных теней.
Какие шейдеры реализовывали? Какие были ньюансы реализаций?
Все. В игре не осталось стандартных шейдеров от юнити, кроме UI элементов. Они и так довольно быстро работают. Ньюансов тоже было довольно много, начиная с функции clip которую половина телефонов долго рисуют а половина быстро.
Какую проблемму решали? Как решили? Неужто просто убрали смешивание текстур?
Сделали, как в старых ПК играх, тайлинг текстур без смешивания.
Какие эффекты в игре присутствуют? Как их реализовывали в конце-концов?
Bloom, Шум, туман, коррекция цветов, гаммы, туман, антиалиасинг.
В общем, мне не понравилась статья.
Это моя первая статья на хабре, думаю в будущем будет лучше.
shybovycha
02.02.2022 05:20+1Вот чесно, если бы вы написали все вышеперечисленное в статье, да с кровавыми подробностями (показать, например, код шейдеров тумана) или описали бы процесс разработки (опять же - в кровавых подробностях) - статья вышла бы просто отличная.
OpenMind4423
01.02.2022 09:29+2Интересно, почему выбрали Unity, ещё и 2018 года? Оно на компе тормозит, а на телефоне вообще жуть.
MrGh0st Автор
01.02.2022 10:20+3Откуда такие данные?... Именно на телефоне скомпилированная сцена с моделями быстрее всего работала какраз в 2018 версии.
OpenMind4423
01.02.2022 12:07+2я к тому, что есть движки, которые работают быстрее, особенно на фоне того, что и сцены небольшие, и шейдеры писались с нуля.
MrGh0st Автор
02.02.2022 22:59Какие например? Мобильные игры на 80% наверное написанны на юнити)
OpenMind4423
03.02.2022 09:29мобильные игры на Юнити видны издалека: тормозит на любом телефоне, весит несколько сотен МБ, несмотря на то что это платформер с пиксельной графикой. Если нужно было получить лучшую картинку, то я бы использовал либо Unreal, либо Godot, который плохо покажет себя на больших сценах и отлично на маленьких. Да и шейдеры там писать одно удовольствие для души.
someoneinthebox
01.02.2022 09:40У вас игра - хоррор, а интерфейс и шрифты будто из детской аркады. Надо что-то с этим сделать, мне кажется.
Ra-Jah
01.02.2022 09:46+4Мне кажется основной потребитель выживалок и хоррра как раз дети, они легко от любой трешатины пугаются. Взрослой аудиории нужно что-то позабористее, симулятор офисного работника, например.
Kotman
01.02.2022 10:35+10В 99 году подсел на Railroad Tycoon. А работал я тогда оператором на ПТО РЖД и был рабочий компьютер с w98. Я таскал из дома звуковую карту в рабочий комп и гонял в Магната в ночные смены. Пришли колеги по смене передать данные о неисправных вагонах, а я сижу составы мышкой собираю. Небольшая пауза и слышу за спиной: "Ты что, дебил? Тебе на работе поездов мало?" ????????????
MrGh0st Автор
01.02.2022 10:25+4Один из важных параметров шрифта - хорошо читаться при мелком размере. Можно было бы нарисовать супер-хоррорный шрифт но он подошел бы только для заголовка.
alnite
01.02.2022 10:24+1А вы игру в качестве хобби делаете? Или же, как видится, в качестве работы?
Визуальная составляющая симпатична, хотя и расчитана больше на ностальгическую реакцию заставших тот период. Но будут ли они основной аудиторией?
Впрочем, в любом случае - удачи!
MrGh0st Автор
01.02.2022 13:07+1По началу было как хобби, но со временем переросло почти в работу))) Довольно много времени уходит теперь на разработку.
Основная аудитория как оказалось мужчины до 24 лет. Спасибо :)
Kotman
Выглядит как первый "Сталкер", только на телефоне. Не искушённый игроман, потому впечатляет!
MrGh0st Автор
Да визуально немного похоже получилось, может потому что в прошлом слишком много играли в сталкера :)
Kotman
В этом есть плюс. Какое-то количество подобных мне неигроманов захочет установить и поиграть.
OptimumOption
Ага, тоже сразу про «Сталкера» подумал :)
Rub_paul
Звучит как раз не так плохо, вот если его ждать столько же, сколько и первый сталкер, то это уже проблема.