A 3D reference project and tech demo for the Bevy Engine. Try it out in your browser on itch.io :)
Gameplay
Screencast.From.2025-05-06.16-10-34.mp4
Everything works out of the box as you would expect! You can just clone the repo and do
cargo run
or, for users of the Bevy CLI alpha:
bevy run
Web builds use experimental features to make audio run in a separate thread, allowing stutterless audio playback in the web browser. As such, you'll need to use a nightly compiler:
rustup default nightly
and the current Bevy CLI alpha.
Then finally, you can simply run:
bevy run web
All systems in Foxtrot are hotpatched, meaning that they can be edited at runtime and the changed will be patched live into the running executable. To set your system up for this, see the documentation at bevy_simple_subsecond_system. Once you're done, you can run
dx serve --hotpatched
Foxtrot is primarily a showcase of how to implement things that I care about. These are primarily:
- First person movement
- Grabbing and throwing objects
- Branching dialog
- Navigation
- Basic menus where accessibility features can live
- Debugging views
- Hotpatching
- Builds for desktop and web
There is intentionally no actual gameplay or goal in the demo to avoid showcasing too specific solutions. This is also the reason why there is no quest system or save states. These should, in my opinion, be highly specific to your use-case.
This is a big codebase, and it is not meant to be used as a generic template. Rather, treat this as a kind of mega-example for how a real-life Bevy project might look like. Or take the code for a specific feature as inspiration for when you want to implement it yourself.
The code is very opinionated by design. That said, the coding style tries to follow the one used in Bevy New 2D as close as possible.
Foxtrot was generated using the Bevy New 2D template. Check out its documentation to understand the basis employed in this project.
Foxtrot uses TrenchBroom as a level editor by integrating it with Bevy via bevy_trenchbroom.
To edit the levels, download the latest TrenchBroom release and run Foxtrot once.
You should see a message in your logs saying that some TrenchBroom config was written. After that, you can simply open assets/maps/volta_i/volta_i.map
in TrenchBroom
to edit the main map.