bevyengine/bevy
Bevy
Bevy is a refreshingly simple, data-driven game engine written in Rust. It is free, open source, dual-licensed under MIT and Apache 2.0, and developed entirely on GitHub at bevyengine/bevy.
This wiki is a code-level companion to the official Bevy book. It explains how the workspace is laid out, what each crate does, and where to make changes when you contribute. For tutorials and high-level concept explanations, prefer the official book.
What Bevy is
Bevy is a complete 2D and 3D game engine. Out of the box it gives you:
- An archetypal Entity Component System (
bevy_ecs) with parallel scheduling and change detection. - A modular plugin system (
bevy_app) — every feature is a plugin you can add or remove. - A
wgpu-based renderer (bevy_render,bevy_pbr,bevy_core_pipeline) targeting Vulkan, Metal, DX12, and WebGPU/WebGL2. - An asset pipeline (
bevy_asset) with hot reloading and a glTF loader (bevy_gltf). - A windowing layer (
bevy_winit,bevy_window), input (bevy_input,bevy_gilrs), audio (bevy_audio), and an immediate-mode-ish UI (bevy_ui). - Reflection (
bevy_reflect), serialization (bevy_world_serialization,bevy_scene), and runtime debugging (bevy_dev_tools,bevy_remote).
A minimal Bevy app looks like this — every feature beyond App::new() and the chosen plugins is opt-in:
use bevy::prelude::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_systems(Update, hello_world_system)
.run();
}
fn hello_world_system() {
println!("hello world");
}How this wiki is organized
| Section | What's there |
|---|---|
| Architecture | The big picture: workspace layout, the App lifecycle, render flow, frame loop. |
| Getting started | Toolchain setup, building, running examples, Linux/macOS/Windows/web/mobile. |
| Glossary | Bevy-specific vocabulary (App, World, Schedule, System, Component, Resource, Asset, etc). |
| By the numbers | Codebase size, language mix, churn, contributor activity. |
| Lore | A timeline of how Bevy got here, from the 0.1 release through the SubApp era. |
| Fun facts | Trivia, oldest code, longest files, naming origins. |
| How to contribute | Workflow, testing, debugging, conventions, tooling. |
| Packages | One page per crates/bevy_* crate (60+). The center of gravity of this wiki. |
| Features | Cross-cutting capabilities (rendering pipeline, scenes, picking, animation, UI, etc.). |
| Primitives | Foundational ECS concepts (Entity, Component, World, Schedule, etc.). |
| API | The Bevy Remote Protocol (BRP) — Bevy's external JSON-RPC interface. |
| Reference | Cargo features, dependencies, configuration. |
Where to start
- New to Bevy? Read the official Quick Start Guide and the glossary, then come back here.
- New to the codebase? Start with architecture, then dive into
bevy_appandbevy_ecs. - Hunting a specific subsystem? Jump straight to Packages and pick the crate.
- Want to make a change? Read How to contribute.
Project status
Bevy is pre-1.0. The version in this checkout is 0.19.0-dev (see the workspace Cargo.toml). Releases happen roughly every three months on what the project calls "the train release schedule," and each release ships breaking changes paired with a published migration guide. The MSRV tracks recent stable Rust closely (currently 1.95.0).
Bevy is built and maintained by a community of around 1,500 contributors. The Bevy Foundation (a non-profit) owns the trademark and accepts donations, but development happens in the open via GitHub PRs reviewed by the Bevy maintainers.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.