Bevy New 2D
This template is a great way to get started on a new 2D Bevy game!
Start with a basic project and CI / CD that can deploy to itch.io.
You can try this template in your browser!
Prerequisites
We assume that you're familiar with Bevy and have already seen the official Quick Start Guide.
If you're new to Bevy, the patterns used in this template may look a bit weird at first glance.
See our Design Document for more information on how we structured the code and why.
Create a new game
Install bevy_cli and run the following command:
bevy new my_game --template 2dThen create a GitHub repository and push your local repository to it.
Write your game
The best way to get started is to play around with the code you find in src/demo/.
This template comes with a basic project structure that you may find useful:
| Path | Description |
|---|---|
src/main.rs |
App setup |
src/asset_tracking.rs |
A high-level way to load collections of asset handles as resources |
src/audio.rs |
Marker components for sound effects and music |
src/dev_tools.rs |
Dev tools for dev builds (press ` aka backtick to toggle) |
src/demo/ |
Example game mechanics & content (replace with your own code) |
src/menus/ |
Main menu, pause menu, settings menu, etc. |
src/screens/ |
Splash screen, title screen, loading screen, etc. |
src/theme/ |
Reusable UI widgets & theming |
Feel free to move things around however you want, though.
Tip
Be sure to check out the 3rd-party tools we recommend!
Run your game
We recommend using the Bevy CLI to run your game.
Running your game locally is very simple:
- Use
bevy runto run a native dev build. - Use
bevy run webto run a web dev build.
This template also comes with VS Code tasks and JetBrains run configurations
to help run your game from your IDE.
Running release builds
- Use
bevy run --releaseto run a native release build. - Use
bevy run --release webto run a web release build.
Installing Linux dependencies
If you're using Linux, make sure you've installed Bevy's Linux dependencies.
Note that this template enables Wayland support, which requires additional dependencies as detailed in the link above.
Wayland is activated by using the bevy/wayland feature in the Cargo.toml.
(Optional) Improving compile times
.cargo/config_fast_builds.toml contains documentation on how to set up your environment to improve compile times.
After you've fiddled with it, rename it to .cargo/config.toml to enable it.
(Optional) Hot-patching with subsecond
Hot-patching is an experimental feature that allows you to edit your game's code while it's running
and see the changes without having to recompile or restart.
To set this up, follow the instructions in bevy_simple_subsecond_system.
Make sure to read the Known Limitations
section and update your Cargo.toml:
[dependencies]
+ bevy_simple_subsecond_system = { version = "0.1", optional = true }
[features]
dev_native = [
+ "dep:bevy_simple_subsecond_system",
]Annotate your systems to enable hot-patching.
The functions they call can be hot-patched too; no additional annotations required!
#[cfg_attr(feature = "dev_native", hot)]
fn my_system() {}Run your game with hot-patching enabled:
dx serve --hot-patchNow edit an annotated system's code while the game is running, and save the file.
You should see Status: Hot-patching... in the CLI if you've got it working.
Release your game
This template uses GitHub workflows to run tests and build releases.
See Workflows for more information.
Known Issues
There are some known issues in Bevy that can require arcane workarounds.
To keep this template simple, we've opted to leave these workarounds out.
You can read about them in the Known Issues document.
License
The source code in this repository is licensed under any of the following at your option:
The CC0 license explicitly does not waive patent rights, but we confirm that we hold no patent rights to anything presented in this repository.
Credits
The assets in this repository are all 3rd-party. See the credits menu for more information.