foxtrot
A 3D reference project and tech demo for the Bevy Engine
Foxtrot
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
Running the demo locally
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
(Optional) Hotpatching
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
Motivation
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.
Organization
Foxtrot was generated using the Bevy New 2D template. Check out its documentation to understand the basis employed in this project.
Level Editing
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.
more like this
TachiSnap
TachiSnap — Pixel Snapper for animation pixel artists. Rust + WebAssembly client-side tool for cleaning up AI-generated…
bit_gossip
Pathfinding library for calculating all node pairs' shortest paths in an unweighted undirected graph.
