3D tower defence с мультиплеером. Прототип в открытом тестировании.
Цель поста - узнать мнение об игре, чтобы понять - продолжать ли добавлять и улучшать контент или переключиться на другой проект.
Но по правилам пикабу - расскажу о создании игры)
Есть у меня с другом настольная карточная игра (реальная, с "бумажными картами") и для нее мы хотели сделать AR дополнение со свистелками и прочими атрибутами).
Один из ключевых моментов - в этой AR должен быть мультиплеер.
Поэтому мои силы были направлены на изучение мультиплеера в Unity.
Есть разные ассеты для этого, и после нескольких проб, мой выбор пал на Photon.
Почему он? Другие не запустились как нужно, а у ассета фотона есть демо игра со всеми ключевыми возможностями, которые требовались для изучения.
Чуть покопавшись в скриптах и поняв, как передавать данные между игроками - была собрана простенькая игра на 2-4 человек.
У каждого игрока есть турель (вид от 3 лица) с управлением только по горизонтали (лево-право).
Задача для победы - набрать как можно больше очков за отведенное время.
Игра была сделана и даже работала как надо) Тесты прошли успешно.
Пришло время браться за реализацию идеи AR приложения.
Концепция была такая - игрок сканирует стол - появляется поле.
Дальше сканируются выпадающие карты и на поле появляются предметы, с которыми можно взаимодействовать.
Так как наша карточная игра асинхронная, то и предметы были "на две стороны" - например стена для защиты у одного игрока, а у его противника бомба.
Также у защиты были разного рода турели (которыми можно было бы управлять - для этого тестировалась первая игра), а у нападения - модели персов (которые должны пройти к цели).
Итак суммируем - нужно было сделать прототип игры в которой есть турели, персонажи и это все с мультиплеером.
Мой мозг покумекал некоторое время и решил собрать это в виде tower defenca.
Почему именно товер дефенс? Мой друг-товарищ любитель этого жанра, а для большого колва тестовых игр, его любовь к тематике хорошо подходила)
Цель поставлена, разработка пошла.
В роли мобов взял заранее скачанные бесплатные ассеты моделей роботов (для другого моего проекта - фпс шутер).
Такая же участь постигла и турели, но из многих скачанных - подошла одна моделька(по "весу файлов" и внешнему виду). А в игре должны быть как минимум две турели - что же делать?
Покрасить их в разные цвета! - для тестов большего и не надо.)
Прошел месяц - была готова основа для первого теста "на поле" - во время карточной игры.
Мы хотели понять - как много движухи должно быть в приложении, чтобы она гармонично вписывалась в процесс игры.
Вывод после первой тестовой игры - минимум!)
Как оказалось все залипли именно в приложении, пока не доиграли до конца)
И только после этого продолжили карточный "бой".
AR мы решили значительно упростить, а у меня на руках осталась готовая механика товер дефенса с мультиплеером.
Что же теперь с ней делать?! - подумал я.
И тут же появился ответ - доделать до удобоваримого состояния!
Следующие 5 месяцев (с переменным успехом) сидел и доделывал игру до состояния - "можно показать людям в интернете для оценки".
Что есть в игре?
Мультиплеер - один игрок "управляет" турелями (защищает базу), второй игрок "управляет" роботами (нападает).
Контент-
2 турели (защита)
3 робота (нападение)
+Улучшения для турелей и роботов ("действуют" по разному).
Так же у одной турели есть особый режим "вид из глаз".
5 карт (локации)
А что с процессом разработки?
Отдельной задачей для меня стояла оптимизация.
Изначально игра была на мобилках - и было решено оставить этот вариант платформы (удобно для тестирования).
Примерно два месяца назад, когда уже думал - вот еще недельку и можно в интернете всем показывать - мои друзья внезапно сказали - “Иногда лагает и мобила греется”- так вопрос об оптимизации встал крайне остро.
И начались долгие попытки понять, что пожирает фпс до 15 кадров в секунду.
(До этого долго думал, чем можно заполнить окружающую пустоту на картах - качать лоу поли модели камней и прочего или использовать террейн?
После просмотра доступного (бесплатных ассетов в юнити сторе), решение все же склонилось к террейну - с ним удобно работать по причине его быстрого изменения - убрать гору, поставить гору, порисовать текстурами - достаточно быстро (но не всегда удобно))
Поэтому первые подозрения в просадке фпс пали на террейн.
Пробовал и так и сяк - отключал террейн, делал его маленьким по размеру, нашел ассет который делает меш из террейна (в итоге от этого варианта отказался) и понял - да террейн влияет на фпс, но не сам объект, а текстуры!
Когда полез смотреть, что там по текстурам (стандартные текстуры для террейна) то выяснил - они очень много весят, а это забивка памяти и отрисовки.
Повысил сжатие текстур, а в материалах отключил “все лишнее” и вуаля - одна проблема исчезла)
Дальше решил посмотреть, что пишут в интернете про нагревание мобилок - всякое нашел, и один из методов - уменьшить разрешение отрисовки экрана игры - тогда и нагрузка на проц будет меньше.
Написал одну строку кода и забыл о ней. Так я подумал, что и вторую проблему решил)
Следующей проблемой просадки фпс была очень странной - в режиме камеры сверху все ок, а в режиме камеры из турели (от 3 лица) - фпс проседает в 2 раза.
В итоге различных ухищрений удалось понять -
Первый момент - на сцене должна быть одна активная камера (остальные отключать).
Второй момент - поворот скайбокса это слишком жирно.
Обычно скайбоксы хорошенько весят (размер файла), так как используют изображения большого разрешения.
В своих проектах стараюсь делать очень маленький размер готового билда (на сколько это возможно), тем более для мобилок. Поэтому скайбокс решил сделать сам - взял "кусок космоса" и через скрипт заставил его вращаться.
Как оказалось это вращение съедает значительную часть фпс, пришлось отказаться:(
Однако, вращение скайбокса осталось в финальной сцене боя и в лобби)
И вот после всех этих манипуляций фпс должно быть максимально высоким - подумал я, но нет.
По прежнему что то съедало десятки кадров.
Пришлось включить наитопорниший метод - отключать объекты/скрипты - билдить и смотреть, изменилось ли что-нибудь?
После 8 часов изысканий данного метода, в самый последний момент, когда отключать больше нечего, на глаза попалась строка кода, которая отвечает за разрешение игры.
Именно эта строчка и была той самой последней занозой (которую сам и внедрил :).
После ее удаления фпс стал практически максимальным - в районе 60 фпс на мобилках (которые могут такое выдавать).
Однако в веб версии встречаются лаги, хотя фпс высокий - это для меня пока еще загадка.
Что смог усвоить по оптимизации на мобиле (основное) -
1. включать статические объекты везде где возможно
2. только одна активная камера
3. сжимать текстуры и звуки до посинения
4. минимум апдейтов в скриптах
5. минимум ригидбоди на объектах
Дальше оставалось за малым - добить критические баги.
Спустя месяц основное залатал, но когда кажется что багов уже нет, они там обязательно есть)
Вообще тестирование и исправление багов это практически бесконечный процесс - главное вовремя остановиться)
Если вдруг ты возьмешься разрабатывать игру (даже самую простенькую) выделяй значительное время (хорошо если половину от всего остального) на тестирование и латание багов. Многие разработчики почему то об этом забывают)
За время разработки этой игры получил много опыта - работа с мультиплеером, оптимизация, настройка террейна и много всякого по мелочи.
И теперь мне хочется узнать - мнение об этой игре “стороннего игрока”.
Чтобы понять - продолжать ли добавлять и улучшать контент или переключиться на другой проект (вернуться наконец к фпс шутеру например :).
Касательно игры -
Так как игра изначально готовилась с мультиплеером то и механики заточены под него же.
В игре есть сингл с ботами - но он скорее для понимания игровых механик.
Здесь нет волн мобов и остальных приколов "обычных" товер дефенсов.
Боты - имитация действий простого игрока.
Вероятнее всего тебе не удастся попасть на живого игрока (о игре знают 1,5 землекопа, а у меня, к сожалению, нет возможности постоянно быть онлайн), то заходи поиграться с ботами. Для этого создай комнату, выбери за кого, а внутри нажми кнопку “Начать с ботами”.
На данный момент поиграть можно на ПК в браузере (примерно 60 мб)
https://alexunder.fun
(билд на андроид будет, когда появится уверенность, что через день не придется делать обнову с баг фиксом)
Конструктивная критика всегда приветствуется - расскажи о багах и балансе.
Также пиши свои предложения - что убрать, что добавить)
П.С.
Если ты хочешь окунуться в мир создания игр, потому что тебе нравятся игры - ныряй! это увлекательный, но тернистый мир)
Если ты хочешь делать игры только ради коммерции - ныряй еще глубже, но возможно будет сложнее)
В любом случае - Начни двигаться в этом направлении и у тебя обязательно получится!
Благодарю за внимание!
Геймплейное видео -