diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index d67f24c..c3ad763 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -32,11 +32,16 @@ jobs: JORNET_LEADERBOARD_ID: ${{ secrets.JORNET_LEADERBOARD_ID }} JORNET_LEADERBOARD_KEY: ${{ secrets.JORNET_LEADERBOARD_KEY }} run: | - cargo build --release --target wasm32-unknown-unknown + cargo build --profile web-dist --target wasm32-unknown-unknown - name: Prepare package run: | - wasm-bindgen --no-typescript --out-name bevy_game --out-dir wasm --target web target/wasm32-unknown-unknown/release/${{ env.binary }}.wasm + wasm-bindgen --no-typescript --out-name bevy_game --out-dir wasm --target web target/wasm32-unknown-unknown/web-dist/${{ env.binary }}.wasm cp -r assets wasm/ + - name: Optimize Wasm + uses: NiklasEi/wasm-opt-action@v2 + with: + file: target/wasm32-unknown-unknown/web-dist/*.wasm + optimize_all: true - name: Package as a zip working-directory: ./wasm run: | @@ -78,11 +83,11 @@ jobs: JORNET_LEADERBOARD_ID: ${{ secrets.JORNET_LEADERBOARD_ID }} JORNET_LEADERBOARD_KEY: ${{ secrets.JORNET_LEADERBOARD_KEY }} run: | - cargo build --release --target x86_64-unknown-linux-gnu + cargo build --profile dist --target x86_64-unknown-linux-gnu - name: Prepare package run: | mkdir linux - cp target/x86_64-unknown-linux-gnu/release/${{ env.binary }} linux/ + cp target/x86_64-unknown-linux-gnu/dist/${{ env.binary }} linux/ cp -r assets linux/ - name: Package as a zip working-directory: ./linux @@ -123,11 +128,11 @@ jobs: JORNET_LEADERBOARD_ID: ${{ secrets.JORNET_LEADERBOARD_ID }} JORNET_LEADERBOARD_KEY: ${{ secrets.JORNET_LEADERBOARD_KEY }} run: | - cargo build --release --target x86_64-pc-windows-msvc + cargo build --profile dist --target x86_64-pc-windows-msvc - name: Prepare package run: | mkdir windows - cp target/x86_64-pc-windows-msvc/release/${{ env.binary }}.exe windows/ + cp target/x86_64-pc-windows-msvc/dist/${{ env.binary }}.exe windows/ cp -r assets windows/ - name: Package as a zip run: | @@ -170,11 +175,11 @@ jobs: JORNET_LEADERBOARD_ID: ${{ secrets.JORNET_LEADERBOARD_ID }} JORNET_LEADERBOARD_KEY: ${{ secrets.JORNET_LEADERBOARD_KEY }} run: | - cargo build --release --target x86_64-apple-darwin + cargo build --profile dist --target x86_64-apple-darwin - name: Prepare Package run: | mkdir -p ${{ env.binary }}.app/Contents/MacOS - cp target/x86_64-apple-darwin/release/${{ env.binary }} ${{ env.binary }}.app/Contents/MacOS/ + cp target/x86_64-apple-darwin/dist/${{ env.binary }} ${{ env.binary }}.app/Contents/MacOS/ cp -r assets ${{ env.binary }}.app/Contents/MacOS/ hdiutil create -fs HFS+ -volname "${{ env.binary }}" -srcfolder ${{ env.binary }}.app ${{ env.binary }}.dmg - name: Upload binaries to artifacts diff --git a/Cargo.lock b/Cargo.lock index c6fe2d2..2043f14 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1617,6 +1617,7 @@ dependencies = [ "bevy_tiling_background", "interpolation", "leafwing-input-manager", + "log", "rand", "ron", "serde", diff --git a/Cargo.toml b/Cargo.toml index f955648..8b17864 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,10 +28,24 @@ serde = "*" ron = "0.8" rand = "0.8" +# Disable low-severity logs at compile time for performance. +log = { version = "0.4", features = [ + "max_level_debug", + "release_max_level_warn", +] } + # Dependencies for WASM only. [target.'cfg(target_arch = "wasm32")'.dependencies] web-sys = { version = "*", features = ["console", "Window", "Storage"] } +[profile.dist] +inherits = "release" +lto = "thin" + +[profile.web-dist] +inherits = "dist" +opt-level = "s" + # Enable max optimizations for dependencies, but not for our code: [profile.dev.package."*"] opt-level = 3 diff --git a/Makefile.toml b/Makefile.toml index d67b724..5a06767 100644 --- a/Makefile.toml +++ b/Makefile.toml @@ -1,23 +1,42 @@ [env] -ENV_DIR = {source="${CARGO_MAKE_PROFILE}", default_value = "debug", mapping = {release = "release"}} -CARGO_TARGET_DIR = {value = "target", condition = {env_not_set = ["CARGO_TARGET_DIR"]}} +ENV_DIR = { source = "${CARGO_MAKE_PROFILE}", default_value = "debug", mapping = { release = "release" } } +CARGO_TARGET_DIR = { value = "target", condition = { env_not_set = [ + "CARGO_TARGET_DIR", +] } } CARGO_WASM_PATH = "${CARGO_TARGET_DIR}/wasm32-unknown-unknown/${ENV_DIR}/${CARGO_MAKE_CRATE_NAME}.wasm" CARGO_MANIFEST_DIR = "${CARGO_MAKE_WORKING_DIRECTORY}" -PORT=4000 +PORT = 4000 [env.release] CARGO_RELEASE_ARGS = "--release" +[env.web-dist] +CARGO_RELEASE_ARGS = "--profile web-dist" + [tasks.show-env] command = "env" [tasks.build] -args = ["build", "--target", "wasm32-unknown-unknown", "@@split(CARGO_RELEASE_ARGS, )"] +args = [ + "build", + "--target", + "wasm32-unknown-unknown", + "@@split(CARGO_RELEASE_ARGS, )", +] command = "cargo" [tasks.bindgen] -install_crate = {crate_name = "wasm-bindgen-cli", binary = "wasm-bindgen", test_arg="--help"} -args = ["--out-dir", "wasm", "--out-name", "bevy_game", "--target", "web", "--no-typescript", "${CARGO_WASM_PATH}"] +install_crate = { crate_name = "wasm-bindgen-cli", binary = "wasm-bindgen", test_arg = "--help" } +args = [ + "--out-dir", + "wasm", + "--out-name", + "bevy_game", + "--target", + "web", + "--no-typescript", + "${CARGO_WASM_PATH}", +] command = "wasm-bindgen" dependencies = ["build"] @@ -28,7 +47,7 @@ cp -r assets wasm/ dependencies = ["bindgen"] [tasks.serve] -install_crate = {crate_name = "microserver", binary = "microserver", test_arg="--help"} +install_crate = { crate_name = "microserver", binary = "microserver", test_arg = "--help" } command = "microserver" args = ["--port", "${PORT}", "--no-spa", "wasm/"] dependencies = ["static"] diff --git a/wasm/index.html b/wasm/index.html index 7392483..ffeca05 100644 --- a/wasm/index.html +++ b/wasm/index.html @@ -2,8 +2,8 @@