WARNING: This is a more-heavily-opinionated fork of https://github.com/NiklasEi/bevy_game_template. It primarily adds a base editor implementation, branding, and a more tailored project structure.
Template for a Game using the awesome Bevy engine featuring out of the box builds for Windows, Linux, macOS, Web (Wasm), Android, and iOS.
- small example "game"
- easy setup for running the web build using trunk (
trunk serve
) - run the native version with
cargo run
- workflow for GitHub actions creating releases for Windows, Linux, macOS, and Web (Wasm) ready for distribution
- the same workflow creates development builds for the mobile platforms (two separate workflows can push to the stores after some setup)
- push a tag in the form of
v[0-9]+.[0-9]+.[0-9]+*
(e.g.v1.1.42
) to trigger the flow - WARNING: if you work in a private repository, please be aware that macOS and Windows runners cost more build minutes. For public repositories the builds are free!
- Click "Use this template" on the repository's page
- Look for
ToDo
to use your own game name everywhere - Update the icons as described below
- Start coding 🎉
- Start the native app:
cargo run
- Start the web build:
trunk serve
- requires trunk:
cargo install --locked trunk
- requires
wasm32-unknown-unknown
target:rustup target add wasm32-unknown-unknown
- this will serve your app on
8080
and automatically rebuild + reload it after code changes
- requires trunk:
- Start the android app:
cargo apk run -p mobile
- requires following the instructions in the bevy example readme for android setup
- Start the iOS app (see the bevy example readme for ios setup instructions)
- Install Xcode through the app store
- Launch Xcode and install the iOS simulator (check the box upon first start, or install it through
Preferences > Platforms
later) - Install the iOS and iOS simulator Rust targets with
rustup target add aarch64-apple-ios x86_64-apple-ios aarch64-apple-ios-sim
- run
make run
inside the/mobile
directory
- Start the native app:
You should keep the credits
directory up to date. The release workflow automatically includes the directory in every build.
- Replace
build/macos/icon_1024x1024.png
with a1024
times1024
pixel png icon and runcreate_icns.sh
(make sure to run the script inside thebuild/macos
directory) - Note: this requires a mac - Replace
build/windows/icon.ico
(used for windows executable and as favicon for the web-builds)- You can create an
.ico
file for windows by following these steps:- Open
macos/AppIcon.iconset/icon_256x256.png
in Gimp - Select the
File > Export As
menu item. - Change the file extension to
.ico
(or clickSelect File Type (By Extension)
and selectMicrosoft Windows Icon
) - Save as
build/windows/icon.ico
- Open
- You can create an
- Replace
build/android/res/mipmap-mdpi/icon.png
withmacos/AppIcon.iconset/icon_256x256.png
, but rename it toicon.png
- Trigger the
deploy-github-page
workflow - Activate GitHub pages for your repository
- Source from the
gh-pages
branch (created by the just executed action)
- Source from the
- After a few minutes your game is live at
http://username.github.io/repository
To deploy newer versions, just run the deploy-github-page
workflow again.
For general info on mobile support, you can take a look at one of NiklasEi's blog posts about mobile development with Bevy which is relevant to the current setup.
Currently, cargo-apk
is used to run the development app. But APKs can no longer be published in the store and cargo-apk
cannot produce the required AAB. This is why there is setup for two android related tools. In mobile/Cargo.toml
, the package.metadata.android
section configures cargo-apk
while mobile/manifest.yaml
configures a custom fork of xbuild
which is used in the release-android-google-play
workflow to create an AAB.
There is a post about how to set up the android release workflow on my blog.
The setup is pretty much what Bevy does for the mobile example.
There is a post about how to set up the iOS release workflow on my blog.
If you don't want to target Android or iOS, you can just delete the /mobile
, /build/android
, and /build/ios
directories.
Then delete the [workspace]
section from Cargo.toml
.
You should check out the Bevy website for links to resources and the Bevy Cheat Book for a bunch of helpful documentation and examples. I can also recommend the official Bevy Discord server for keeping up to date with the development and getting help from other Bevy users.
Audio in web-builds can have issues in some browsers. This seems to be a general performance issue and not due to the audio itself (see bevy_kira_audio/#9).
This project is licensed under CC0 1.0 Universal except some content of assets
and the Bevy icons in the build
directory (see Credits).