Вышел 13й релиз Bevy – движка для разработки игр на Rust

Подробности с изменениями можно почитать здесь. Из приятных сюрпризов, моя игра, Jarlна главной сайта движка :)

Вышел 13й релиз Bevy – движка для разработки игр на Rust

Bevy – это набор библиотек для разработки игр на языке Rust разрабатываемый с 2020го года. Он включает в себя такие модули как ECS (аналог DOTS, но в разы проще и эргономичнее), рендер-граф на основе WebGPU, инджектор зависимостей, сцены, ассет менеджер, ввод/вывод и прочее. По опыту, Bevy скорее похож на middleware движки вроде XNA, LibGDX, TheForge или BGFX и его не совсем продуктивно приводить как альтернативу Unity, Unreal или Godot.

Из плюсов крайне высокая гибкость, одна из лучших реализаций ECS которой действительно приятно пользоваться, хорошая производительность, язык Rust и настраиваемость. В плане гибкости, можно например использовать только модули ECS и ассеты и сделать свой кастомный рендер и прикрутить FMOD для звука как делают например ребята создающие TinyGlade. Другие плюсы это например большое по меркам Rust сообщество разработчиков (около 20 тыс в дискорде) и наличие неплохих сторонних плагинов (отмечу например gpu-частицы, tween-анимации и тайловые карты). Есть также интеграции с редакторами вроде LDTK и Tiled.

Вышел 13й релиз Bevy – движка для разработки игр на Rust

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

А если у вас небольшой проект в котором нужны нестандартные решения которых нет из коробки ни в одном из "больших" движков и вы готовы разрабатывать все сами – Bevy это хороший вариант для старта.

Из других минусов – некоторая неоднородность проекта. Модули которые писал автор Bevy @cart как правило более законченные, а вот некоторые модули написанные другими разработчиками проекта сделаны для галочки (взять например звук или 2d рендерер в которых есть только самый минимум работающих фичей). Но к счастью что-то прикручивается за полчаса (как например FMOD для звука), а что-то можно написать самому под свой проект, как например делал я для 2D освещения. В этом плане преимущество языка Rust что он как и C++ в целом подходит для любых задач.

Весь текст с изменениями в 0.13 приводить не буду, из того что мне понравилось в 0.13 – это возможность отладки систем без привязки к рендеру. Остальные изменения в основном касаются 3D рендера, который мне не особо интересен.

4242
28 комментариев

Круто! Получается ты продолжаешь делать игру? Я не видел продолжения после первых статьей, думал, что уже забросил.

1
Ответить
Автор

Чаще всего пощу в Twitter, YT и Discord:

- https://twitter.com/jarl_game
- https://www.youtube.com/@Jarl-Game-com
- https://discord.gg/jarl

На DTF в последнее время по остаточному принципу. Здесь насколько я вижу все смещается в сторону мемов и треша.

2
Ответить

Какие ощущения при работе с движком?
Чтобы разобраться на каком уровне rust знать нужно, если есть большой опыт на плюсах?
А то все думаю с плюсовых движков мигрировать, но решимости пока не хватает

1
Ответить
Автор

Ощущение сильно зависят от задачи, одним комментарием все ситуации не покрою. Что-то очень хорошо работает, например ECS после 2х лет работы ни разу не подводил. Рендер граф достаточно сложный, но очень гибкий. UI пока совсем базовый.

Опыт на плюсах очень поможет. Мигрировать то что и так работает на C++ не вижу большого смысла.

2
Ответить

Плюс в том, что движок убирает главную головную боль с++ников - лайфтаймы(Там, где в голом с++ использовался бы указатель, здесь будет код entity).
Минус, что убирает вместе с головой. Делать систему где две query правят одни и те же компоненты нельзя насколько помню. Надо выкручиваться.
Если хочется ecs и с c++ прыгать боязно, смотри entt

1
Ответить
Автор

Чтобы разобраться на каком уровне rust знать нужно, если есть большой опыт на плюсах?

На уверенном. Но сам Bevy написан не то чтобы супер заумно, как раз наоборот – в основном приятный и читаемый код.

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

Ответить
Автор

Пару месяцев назад я как раз рассказывал про ощущения от разработки (правда на английском): https://youtu.be/Sv7jcyqThdM

Ответить