На самом деле, год разработки - это условно. Уделялось только свободное от основной работы время - вечера и выходные.
Движок
Unity был для меня очевидным решением для создания мобильной игры. Думаю, здесь не нужны аргументы. Правда пришлось использовать версию 2018 года, так как у меня довольно слабый ноутбук, и последние версии были тяжеловаты для него.
3D
Выбор пал на внутренний редактор ProBuilder. Во-первых, по той же причине слабого ноута, сторонние 3D-редакторы он бы потянул с трудом. Во-вторых, это действительно удобно - все делать "в одном месте", не покидая Unity. В-третьих, все статичные объекты одним кликом превращаются в один mesh, сокращая количество вызовов отрисовки (плюс для оптимизации) и время запекания освещения.
В общем, отличный инструмент для создания несложных моделей, но надеюсь, что со временем разработчики сделают его более гибким.
Код (C#)
По образованию я - программист, но опыта программирования, как такового, было совсем немного. В помощь пошли многочисленные туториалы с Youtube и, конечно, документация Unity.
Качество кода у меня объективно ужасное. Никакого ООП, все построено на условных операторах "Если... - То...". Огромное множество неоправданного копипаста. Думаю, если я выложу свои скрипты на общее обозрение, программисты закидают меня камнями.
Надеюсь, в дальнейшем буду обучаться и смогу повысить свой уровень программирования. А пока, как говорится, - "работает же и ладно)".
Текстуры и материалы
Здесь все просто. Текстуры скачивал с портала [textures.com]. Часть из них модифицировал и изменял цветокоррекцию в Photoshop. UV-развертка понадобилась буквально для нескольких объектов. В остальном, материал просто накидывал на объект и корректировал Tiling.
Шейдер (для непрозрачных объектов) использовал самый примитивный, но зато самый "выгодный" с точки зрения производительности - Mobile Diffuse.
UI
Все нарисовано в Photoshop. Здесь ничего особенного.
Анимации
Все анимации (лифт, двери и тп) также делались внутри Unity. Исключение - анимации монстра. Их я, не без угрызения совести, стащил из Mixamo.
Музыка/Звуки
Тут пригодился опыт работы на звукозаписывающей студии.
Музыку, которая играет в главном меню, писал в FL Studio. Там же сделал Ambient, который стоит на повторе во время игры и фоном как бы задает атмосферу.
Звуки (такие как "открывание дверей", "звук движущегося лифта" и тд.) вырезал из реальных видео из Youtube и Tik Tok. После чего видоизменял их в том же FL Studio - подкручивал Pitch, менял эквализацию - чтобы у звуков была уникальность и, за одно, чтобы не нарваться на какие-нибудь авторские права, мало ли.
Честно говоря, качество звуков/музыки тоже оставляет желать лучшего. Но, хочется верить, что это не из-за моей низкой в этом компетентности, а потому что я очень мало уделил этому времени. Хотелось поскорее уже закончить первую версию и опубликовать.
Локализация
Текста в игре немного, поэтому сразу сделал "Русскую" и "Английскую" версии. Причем, язык в игре устанавливается автоматически при запуске, в зависимости от того, какой язык стоит в настройках телефона. Возможности изменить язык вручную внутри игры - пока нет.
Монетизация
Для показа рекламы, использовал медиацию от Appodeal. И, вроде бы, тут не должно возникать сложностей (SDK вполне понятный), но помучился я изрядно.
Во-первых, Appodeal SDK оказалось сложно подружить со старыми версиями Unity, и даже их стандартная демо-сцена при сборке APK плевалась ошибками. И по совету поддержки Appodeal (она, кстати, у них просто отличная), пришлось все-таки обновлять Unity до версии 2020.3.34f1. Попутно решать проблемы несовместимости версий, связанные, например, с NGUI и TextMeshPro.
После обновления все сразу сбилдилось без проблем.
В общем, очевидный совет: используйте, по возможности, последние версии движка и SDK.
Следующей болью стало существование таких законов, как GDPR и CCPA. Если вкратце, у пользователей на территориях Калифорнии и Европейских стран, я обязан спросить разрешение на использование персональных данных. В данном случае - это рекламный ID, который нужен для показа таргетированной рекламы. Для этого используется Consent Manager, который автоматически определяет, попадает ли пользователь под эти законы.
Ну и моей финальной ошибкой было то, что при сборке приложения для Google Play, я в последний момент изменил Bundle ID. И теперь вместо показа рекламы в игре появляется сообщение от Appodeal о том, что этот самый Bundle ID не совпадает. Но это я исправлю в ближайшее время и перезалью билд.
Заключение
Конечно, нельзя сказать, что я создал что-то очень крутое или необычное. Напротив, игра получилась довольно посредственная, с кучей багов, и не самым лучшим геймплеем. Монстр получился топорный, возможно, удастся его доработать к следующим обновлениям.
Но это всего лишь первая версия моей первой игры. К тому же, я получил бесценный опыт.
Страница игры в Google Play:
https://play.google.com/store/apps/details?id=com.RaycasterG...
Telegram-канал
https://t.me/raycastergames