This directory contains scripts and data files for building outfly for various operating systems. # Dev Features For development, it's recommended to use `--features dev`: ``` cargo [run|build] --features dev ``` This enables the following, but ONLY if you run it with `cargo run`: - Mutes music by default (you can still unmute it) - Enables "dev mode", which changes the game slightly: - Enables additional cheats (see source code) - Speeds up dialogs - Adds additional debugging features - Enables dynamic linking for faster compile times. Note that this makes it harder to run the game directly with `./outfly`, please use `cargo run` instead. - Enables bevy's "file watcher" feature that auto-reloads changed assets while the game is running. This obviously works only if the assets are not embedded directly into the binary with the `embed_assets` feature. Since `embed_assets` is enabled by default, you must customize your compile features in order to use the file watcher feature, e.g. like: `--no-default-features --features "dev x11"` # pack.sh The [pack.sh](build/pack.sh) script is used by the developer team to compile and pack release binaries into official packages. It could serve as a starting point for package maintainers or tinkerers. # Building OutFly If there is no package for the version or operating system that you need, or if you wish to tinker on the game, you can also build outfly yourself. ## On Linux Install the build dependencies. On ArchLinux, it's the following, though you can replace `rust` with `rustup`: ``` pacman -S rust libx11 pkgconf alsa-lib ``` Then run the following commands, replacing `[URL]` with the clone URL of the git repository: ``` git clone [URL] cd outfly cargo run --release ``` ## Building for Windows on Linux ``` rustup target add x86_64-pc-windows-gnu pacman -S mingw-w64-toolchain # on ArchLinux. other distros have their equivalent package cargo build --target=x86_64-pc-windows-gnu --release ``` More information here: https://bevy-cheatbook.github.io/setup/cross/linux-windows.html ## Building on Mac OS Install homebrew, and then get the following dependencies: ``` brew install pkg-config molten-vk rustup rustup-init ``` Download, compile and run the game: ``` git clone [URL] cd outfly cargo run --release ``` ## Building for WASM/Browser This is a work in progress, for now these are just some general hints: ``` git clone [URL] cd outfly rustup target install wasm32-unknown-unknown pacman -S wasm-bindgen binaryen mkdir outfly_wasm cargo build --release --target wasm32-unknown-unknown wasm-bindgen --out-name outfly --out-dir outfly_wasm --target web target/wasm32-unknown-unknown/release/outfly.wasm wasm-opt -Oz --output wasm/outfly_bg.wasm wasm/outfly_bg.wasm echo '' > wasm/index.html python -m http.server -d wasm ``` ## Building release versions optimized for packaging To build release versions optimized for final deployment, build with the following features: (see also [pack.sh](https://codeberg.org/outfly/outfly/src/branch/main/build/pack.sh)) ``` cargo build --release --no-default-features --features release_[linux|windows] [--target=$YOUR_TARGET] ```