Герои Гильдгаарда. Логическая онлайн стратегия

Герои Гильдгаарда
Герои Гильдгаарда

Друзья, мы тут закончили разработку нашей новой онлайн игры, поэтому перед полноценным релизом хочется немного рассказать про неё, про какие-то технические подробности, да и вообще как из 2D пришли в 3D (почти).

Мы делаем многопользовательские мобильные онлайн игры и наша новая разработка не стала исключением. Герои Гильгаарда – это логическая онлайн стратегия, где игроку необходимо захватить все шашки противников. Тут нет элементов случайности (в классическом режиме), поле фиксированного размера, игроки ходят по очереди и всё решает скилл.

Каждый игрок начинает со своего угла с 3 начальными шашками, расположенными уголком. При игре один на один, игроки располагаются по диагонали. В свой ход игрок может добавить новую шашку только на клетку где уже стоят шашки его цвета. На пустую клетку добавить шашку – нельзя.

Когда в одной клетке скапливается 4 шашки, они разлетаются в соседние клетки на 4 стороны. Если в это время в соседней клетке были шашки противника, они переходят к игроку сделавшему ход (меняют цвет). Собственно, это самое интересное: если в результате хода и разлёта шашек, в какой-то клетке снова скапливается 4 шашки, то процесс продолжается пока все шашки не разлетятся по своим местам. Как это примерно выглядит:

На видео выше просто пример, слабенькое комбо, под конец партии могут быть довольно эпичные камбеки.

Да, в этой игре есть пару стратегий которые позволяют добиться преимущества на поле, хотя может показаться что победа – дело случая – это не так. Но в то же время, один ход в конце партии может изменить всё…

Играть можно один на один или вчетвером. Зачастую партии достаточно короткие, можно завершить буквально за несколько минут, но не всегда конечно, можно долго елозить туда-сюда. Есть расширенный режим, в котором в центре поля рандомно появляются специальные клетки с эффектами. При попадании шашки на такую клетку происходит какая-нибудь магия :)

Расширенный режим
Расширенный режим

Также, можно смотреть другие игры в реальном времени (если она не приватная), гамать с друзьями закрытые партии, общаться в чатике, обмениваться фотками, дарить подарки, играть одним аккаунтом на iOS и Android и прочие радости. Это всё можно прочитать в описании на страничке в сторе. А ещё, у нас нет рекламы (только ревардед). Раунд!

Почему Герои? Почему Гильдгаарда?

По задумке, Гильдгаард – это королевство, где золото самый важный ресурс за который идёт борьба. Заработанное в боях золото можно будет тратить. В общем-то отсюда и название: gild – золотить, ну а окончание -gaard, это популярное окончание датских городов и фамилий, которые означают к кому относится данная территория. Вот такой этимологический мини-экскурс, а не отсылка к Ведьмаку :)

Герои тоже были придуманы не просто так. У каждого своя история и, если всё пойдёт как мы хотим, то в одном из обновлений к игре добавится интересная мета. Об этом пока умолчу.

Сейчас доступны 3 арены где можно показать своё мастерство и заработать голду, 8 героев (4 доступны сразу), и разные айтемы чтобы “выделяться” в топе игроков.

Немного про техническую часть

У нас большой опыт в разработке мобильных онлайн игр. В основном жанра: настольные. Некоторые из них, шутка ли, уже 10 лет! в топе в Google Play и AppStore. Ну и наверняка многие играли в наши карточные игры, нарды, шашки, домино и другие. Все они в 2D, некоторые на LibGDX, другие на SpriteKit, а все последние делаем уже на Unity.

Герои тоже на Unity. Но в отличии от предыдущих игр, где было достаточно 2D, мы решили поэкспериментировать с 3D. Модельки, свет, партиклы, вот эти все штуки. Мы не используем сторонние ассеты, почти всё своё. Исключение составляют какие-то известные и проверенные библиотеки, например, DOTween. Вот кратко что используем:

  • External Dependency Manager – мастхев штука для мобильной разработки, подтягивает все зависимости
  • SafeArea – один скриптик для того чтобы ваш UI не залазил на вырезы и дырки в экране
  • DOTween – движок для анимирования, на нём делаем эффекты UI, да и самой игры
  • Leopotam – нельзя не отметить вклад Леопотама, использую его скрипты, почти все допилинные, сейчас они уже недоступны на его гитхабе, он больше по ECS
  • UnityIngameDebugConsole – прекрасная штука для отладки на девайсе, можно биндить свои команды, смотреть лог итд
  • UI Soft Mask – мягкая маска для UI
  • Graphy – ещё один отличный инструмент для дебага на девайсе
  • Собственно это всё что взяли со стороны :)

В основе лежит наш фреймворк, который оброс интересными возможностями:

  • Сетевая часть: RPC, events, многосерверность, поддержка SSL и прочее
  • UI binding
  • Набор UI компонентов: попапы, бесконечные списки, туглы, модальные окна И так далее.
  • Менеджер сцен и экранов с дозагрузкой
  • Работа с HTTP
  • Загрузка и кеширование картинок
  • Менеджер корутин
  • Работа с эмоджи
  • Менеджер сообщений. За основу взяли штуку на интерфейсах и допилили под свои нужды
  • Локализация и другие табличные данные через Google Sheets (тут снова привет Леопотаму :)
  • Большой набор билд скриптов. Про это я немного писал уже. Теперь это выглядит как-то так и улучшается:
Наш кастомный билдер под разные платформы, экономит кучу времени
Наш кастомный билдер под разные платформы, экономит кучу времени

Набор плагинов для Android, Huawei и iOS:

  • Apple Sign in
  • Google Sign in
  • Huawei Sign in
  • Встроенный браузер
  • Работа с камерой и галерей
  • Нативное поле ввода
  • Покупки
  • Реклама
  • Push уведомления
  • Отправка почты
  • Шаринг
  • In-app review и другие. Об этом писал как-то тут.

Еще у нас свой remote конфиг, менеджер звуков, шифрование, liveops штуки итд.

Все модельки сделаны в Blender. Потом делали ретопологию, потом запекали свет, анимации и всё это импортировали в Unity. Получилось вроде симпатично. Вот так выглядели почти законченные первые герои:

Все герои на текущий момент
Все герои на текущий момент

А вот так выглядел самый первый прототип, когда ещё не было понятно, пойдет игра в продакшн или нет:

Ранний прототип

Он был играбельный, без сервера, игроки просто ходили по очереди, тут ещё неправильно делается разлёт шашек, но даже такие простые штуки сразу позволяют оценить как игра будет играться. Делайте прототипы!

Все спрайты и текстуры делали POT, собирали в атласы, пробовали разные типы сжатия дабы добиться меньшего размера билда и хорошего качества на экране. Кстати про оптимизацию, мой древний пост ещё немного актуален, ну, некоторые пункты точно будут полезны.

Вообще каких-то особых проблем с 3D не возникло, хорошо оптимизированные модельки и запечённый свет решают много проблем :) Но у нас и каких-то замороченных сцен, травы, воды и прочего нет. Для первого раза решили не мудрить, если пойдет – будем дальше в 3D что-то поинтересней делать.

Если говорить про код, банально, но кодим чтобы поменьше мусора было, тогда всё будет плавно и красиво. Не всегда это конечно получается, но стремимся. Каких-то визуальных штук не используем, типа PlayMaker, Bolt или что там ещё есть. ECS тоже пока не приходилось в прод запускать, так, побаловались просто. Да, на монобехах, да не дрочим на SOLID, пользуемся тем чем удобно, чтобы работало хорошо и было понятно)

Вот такая коротенькая история про нашу новую игру. Когда будут какие-то метрики, постараюсь поделиться тем чем можно. Если интересны какие-то детали – пишите в комменты, попробую ответить всем.

Хороших и интересных игр!

Небольшая просьба: если нашли баг, напишите пару строк на hg@magicboard.games, постараемся побыстрее исправить и сделать апдейт. Плохие оценки в сторе так сложно исправлять :(

1111
2 комментария

Не Заинтересовало

Ответить

Логическая онлайн стратегияблин, сразу бы написали - шашки

Ответить