logo

Crate bevy

source · []
Expand description

Bevy is an open-source modular game engine built in Rust, with a focus on developer productivity and performance.

Check out the Bevy website for more information, read the Bevy Book for a step-by-step guide, and engage with our community if you have any questions or ideas!

Example

Here is a simple “Hello World” Bevy app:

use bevy::prelude::*;

fn main() {
   App::new()
       .add_system(hello_world_system)
       .run();
}

fn hello_world_system() {
   println!("hello world");
}

Don’t let the simplicity of the example above fool you. Bevy is a fully featured game engine and it gets more powerful every day!

This Crate

The bevy crate is just a container crate that makes it easier to consume Bevy subcrates. The defaults provide a “full” engine experience, but you can easily enable / disable features in your project’s Cargo.toml to meet your specific needs. See Bevy’s Cargo.toml for a full list of features available.

If you prefer, you can also consume the individual bevy crates directly. Each module in the root of this crate, except for the prelude, can be found on crates.io with bevy_ appended to the front, e.g. app -> bevy_app.

Modules

Provides types and plugins for animations.

Build bevy apps, create plugins, and read events.

Load and store assets and resources for Apps.

Provides types and plugins for audio playback.

Contains core plugins.

Core render pipeline.

Useful diagnostic plugins and types for bevy apps.

Bevy’s entity-component-system.

Bevy interface with GilRs - “Game Input Library for Rust” - to handle gamepad inputs.

Support for GLTF file loading.

Entity hierarchies and property inheritance

Resources and events for inputs, e.g. mouse/keyboard, touch, gamepads, etc.

Logging capabilities

Math types (Vec3, Mat4, Quat, etc) and helpers.

Physically based rendering.

use bevy::prelude::*; to import common components, bundles, and plugins.

Utilities for working with untyped pointers in a more safe way.

Type reflection used for dynamically interacting with rust types.

Cameras, meshes, textures, shaders, and pipelines. Use RenderDevice::features, RenderDevice::limits, and the WgpuAdapterInfo resource to get runtime information about the actual adapter, backend, features, and limits.

Save/load collections of entities and components to/from file.

Items for sprites, rects, texture atlases, etc.

Pools for async, IO, and compute tasks.

Text drawing, styling, and font assets.

Contains time utilities.

Local and global transforms (e.g. translation, scale, rotation).

User interface components and widgets.

Various miscellaneous utilities for easing development

Configuration, creation, and management of one or more windows.

Window creation, configuration, and handling

Structs

This plugin group will add all the default plugins:

Minimal plugin group that will add the following plugins: