Вышел 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.
Из минусов – высокий порог входа, отсутствие внятной документации, отсутствие редактора и условное отсутствие поддержки консолей. В плане поддержки консолей история с Bevy похожа на Godot и кастомные движки – либо пилите поддержку сами, либо нанимайте тех кто в этом специализируются, но для Rust таких людей единицы). Так что если у вас нет под рукой опытных программистов на Rust которые хотят все это сами изучать, смотреть в код движка и писать недостающие компоненты – Bevy не совсем ваш выбор на данном этапе.
А если у вас небольшой проект в котором нужны нестандартные решения которых нет из коробки ни в одном из "больших" движков и вы готовы разрабатывать все сами – Bevy это хороший вариант для старта.
Из других минусов – некоторая неоднородность проекта. Модули которые писал автор Bevy @cart как правило более законченные, а вот некоторые модули написанные другими разработчиками проекта сделаны для галочки (взять например звук или 2d рендерер в которых есть только самый минимум работающих фичей). Но к счастью что-то прикручивается за полчаса (как например FMOD для звука), а что-то можно написать самому под свой проект, как например делал я для 2D освещения. В этом плане преимущество языка Rust что он как и C++ в целом подходит для любых задач.
Весь текст с изменениями в 0.13 приводить не буду, из того что мне понравилось в 0.13 – это возможность отладки систем без привязки к рендеру. Остальные изменения в основном касаются 3D рендера, который мне не особо интересен.