Bevy is an open source Rust powered cross platform game framework. The tagline says it all “A refreshingly simple data-driven game engine built in Rust”. It is released under the open source MIT license with the sources available on Github.
Key features of Bevy from the Bevy Homepage:
Data Driven
- All engine and game logic uses Bevy ECS, a custom Entity Component System
- Fast: Massively Parallel and Cache-Friendly. The fastest ECS according to some benchmarks
- Simple: Components are Rust structs, Systems are Rust functions
- Capable: Queries, Global Resources, Local Resources, Change Detection, Lock-Free Parallel Scheduler
2D Renderer
- Render real-time 2D graphics for games and apps
- Features: sprite sheets, dynamic texture atlases, cameras, textures, and materials
- Extensible: custom shaders, materials, and render pipelines
- Common Core: builds on top of Bevy’s Render Graph
3D Renderer
- A modern and flexible 3D renderer
- Features: lights, cameras, meshes, textures, materials, gltf loading
- Extensible: custom shaders, materials, and render pipelines
- Common Core: built on top of Bevy’s Render Graph
Render Graph
- Compose custom render pipelines using a graph structure
- Parallel: Render Graphs are automatically rendered in parallel
- Modular: Build composable and reusable render logic using Render Graph nodes
- Backend Agnostic: Not tied to a specific graphics api
Cross Platform
- Support for all major desktop platforms:
- Windows, MacOS, Linux
- With more on the way:
- Android, iOS, Web
Bevy UI
- A custom ECS-driven UI framework built specifically for Bevy
- Built directly on top of Bevy’s ECS, Renderer, and Scene plugins
- Compose UIs dynamically in code or declaratively using the Bevy Scene format
- Use a familiar “flex box” model to layout your UIs
Scenes
- Create, save, and load ECS worlds using Bevy’s Scene system
- Loading: Loading scenes preserves entity IDs (useful for save games)
- Instancing: Instancing creates linked duplicates of scenes with new entity IDs
- Hot Reloading: Changes to scene files are automatically applied to running apps
Sound
- Load audio files and play them on demand
- Load mp3 audio files as Assets
- Play audio files using the AudioOutput resource
Hot Reloading
- Get instant feedback on your changes without app restarts or recompiles
- Asset changes are immediately reflected in running Bevy apps
- You can currently hot-reload scenes, textures, and meshes
- Any asset type can be integrated
Productive Compile Times
- Game development is an iterative process. You can’t afford to wait for compiles
- With Bevy you can expect 0.8-3.0 seconds with the “fast compiles” configuration
- Compare that to other popular Rust game engines, which can take over 30 seconds to compile a single newline insertion!
Free and Open Source
- An engine made by and for the developer community
- 100% free. Forever and always
- Open Source under the permissive MIT license
- No contracts
- No license fees
- No sales cuts
We previously discussed Rust game development here including details on getting a Rust development tool-chain installed and configured. You can learn more about Bevy including basics on getting started in the video below.