Как я начал и забросил игру на Bevy

Мой путь в разработке игр всегда отличался нестандартными движками и языками программирования. Впервые с геймдевом я познакомился на курсе по разработке игр на Java, и забросил это дело примерно на год после его окончания, так как там всё было сложно и непонятно.

Через некоторое время после этого я вернулся в разработку, на этот раз на Roblox Studio. Своих игр я там так и не сделал, кроме парочки на геймджемы, зато успел поработать гейм и левел дизайнером, и понял что эти отрасли мне нравятся больше всего. Там же я познакомился с телеграм сообществом Roblox Studio, которое перешло в версию 2.0 уже под моим руководством. Без него этого сайта бы не существовало.

Однако время шло, Roblox успели заблокировать, да и возможностей его движка мне уже было мало. На какое-то время я снова забросил разработку и сконцентрировался на учёбе и сообществе. Так продолжалось, пока я не решил углубится в тему ECS, и не нашел таким образом Bevy – уникальный движок, единственный, построенный на основе ECS, да так, что на нём реально можно делать игры.

Надо сказать, нормальные движки я тоже успел попробовать, но ни Unity, ни Godot моего внимания не привлекли.

Что вообще такое Bevy?

Bevy – это опенсурсный движок, построенный на основе Rust и ECS.

:plus: Плюсы Bevy

  • Очень быстрый ECS – самый быстрый из всех на рынке. Если для игры важна оптимизация, Bevy может быть хорошим вариантом.
  • Довольно быстрая компиляция, если нормально настроить.
  • Маленькое, но очень сплоченное сообщество.
  • Быстрый рост. За последний год движок скачали в 3 раза больше человек чем за ВСЮ его предыдущую историю.
  • Хоть это не очень известный движок, на нём уже есть игры. Самая известная из них – Tiny Glade, медитативная игра про строительство замков, которая является пожалуй самым лучшим примером процедурного арта в видеоиграх.
  • В движке довольно легко разобраться, если уже знаком с растом и концепцией ECS.
  • Кросплатформенность – легко делать игры для любых ПК/Мобилок. С консолями пока сложнее, так как в сообществе мало (считай нет) людей которые делают на них игры.
  • Активное развитие – движок обновляется в среднем по три раза в год, и каждое его обновление значительно его улучшает.
  • Движок написан на Rust и использует его как ЯП для разработки.

:minus: Минусы Bevy

  • Главный минус – Bevy всего 6 лет, и это довольно нишевый движок. Хотя про него всё больше и больше говорят в индустрии, он ещё не успел собрать достаточно людей чтобы иметь библиотеки на всё или много обучающих материалов. Так что надо быть готовыми к тому, что примерно вся информация, которую можно почерпнуть о его последней версии, будет на одном сайте примерно в 40 статьях.
  • Мало готовых ассетов – как я уже говорил выше, библиотек (:nerd_face: плагинов) под Bevy ещё мало, как и других готовых решений, так что иногда приходится делать самому то, о чём на условном годоте даже не подумаешь.
  • Редактор. Это ещё одно слабое место, так как сейчас есть редакторы только от сообщества, а официальный будет не раньше чем через две версии.
  • Движок написан на Rust и использует его как ЯП для разработки.

Мои мучения

Так получилось, что все игры которые я хочу делать или когда-нибудь могу захотеть, хорошо ложатся на ECS и в частности Bevy, хотя в целом очень маленькой доле игр он подходит.

Быстрый питч игры
Жанр: 4X градостроитель/башенная защита/управление ресурсами
Постройте город посреди зомби апокалипсиса, расширьте его до империи, соперничайте с другими фракциями и восстановите человечество из пепла.
Главный цикл: строительство поселения → защита его от зомби с помощью башен → рост поселения → экспедиция для нового поселения, так как у каждого места есть только 2-3 ресурса, а для продвижения в исследовании нужны все.

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


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

Что же пошло не так?

Несколько довольно простых вещей.

Во-первых, это мой первый проект на Bevy, и я не знал чего ждать от движка и где именно могут возникнуть сложности. То, что я предполагал самым сложным, в результате не вызвало никаких проблем – сложные алгоритмы вроде поиска путей на этом движке писать довольно приятно. Зато оказалось, что для того освещения которое я хочу не существует готовых библиотек, и мне пришлось бы писать его самому. То что вы видите на скринах – явно не идеальное освещение и совсем не то что мне хотелось.

Во-вторых, чёртов диздок. У меня было представление о том, какую игру я хочу сделать, но оно было (как и любое представление) недостаточно чётким, чтобы по нему сделать игру. Если бы я сразу начал делать дизайн документ, я бы точно знал что мне надо делать дальше и как именно реализовать ту или иную механику.

Что теперь?

Я поставил ту игру на паузу, и ищу идеи для новой. Сейчас у меня есть одна, я сделал ей концепт док и буду рад если вы его оцените :pleading_face:

Концепт док2_removed.pdf (4,7 МБ)

3 лайка