A Bevy nyílt forráskódú, adatvezérelt játékmotor Rustban. Az állapot komponensekben él, és sima Rust-függvények („rendszerek") futnak rajtuk párhuzamosan — ez az ECS. Vizuális szerkesztő nincs: egy projekt egyszerűen egy Cargo crate, ami jól illik a Makefile + CI munkafolyamathoz. A WebAssembly elsőrangú cél, így ugyanaz a kód fut natívan és böngészőben is.
Weboldal: https://bevyengine.org
A natív buildek sima cargo build hívások. A webes buildek a wasm32-unknown-unknown célra fordítanak, és lefuttatják a wasm-bindgen-t a JS-ragasztóréteghez. Az index.html vázat exportkor tölti le, így minden játék ugyanazt a betöltőt használja.
A sablonok a bevy-tools repóban vannak: másold az example-makefile.make fájlt Makefile néven, és állítsd a PROJECT értékét a Cargo.toml-ban szereplő crate-névre.
A verziórögzítés számít. A wasm-bindgen CLI-nek és a wasm-bindgen crate-nek azonos verziójúnak kell lennie:
[target.'cfg(target_arch = "wasm32")'.dependencies]
wasm-bindgen = "=0.2.100"
Tartsd szinkronban a Makefile WASM_BINDGEN_VERSION értékét. A CI-image (git.teletypegames.org/build/bevy-builder) a hozzá illő CLI-t hozza — verzióemeléskor építsd újra egy új --build-arg WASM_BINDGEN_VERSION értékkel.
| Változó | Leírás | Alapérték |
|---|---|---|
PROJECT |
A projekt / crate neve | bevydemo |
WASM_BINDGEN_VERSION |
A CLI verziója, egyeznie kell a Cargo.toml-lal | 0.2.100 |
BIN_DIR |
Natív bináris | bin |
DIST_DIR |
Exportált artifactok | dist |
VERSION_FILE |
Verziófájl a CI-hez | .version |
INDEX_HTML_URL |
HTML-váz | bevy-tools web/index.html |
make build # cargo build --release -> bin/$(PROJECT)
make run # cargo run
make wasm # release wasm + wasm-bindgen -> dist/game.js, dist/game_bg.wasm
make export VERSION=1.0.0 # wasm + index.html bevydemo-1.0.0.html.zip néven becsomagolva
make watch # újraépítés a src/ alatti változásra (fswatch kell hozzá)
make clean # a bin/, dist/ és target/ törlése
A make wasm igényli a célt és a CLI-t:
rustup target add wasm32-unknown-unknown
cargo install wasm-bindgen-cli --version 0.2.100
Másold az example-tasks.json fájlt .vscode/tasks.json néven. Feladatok: Run (alapértelmezett, Cmd+Shift+B), Build & Run, Build WASM, Make build.
| Fájl | Leírás |
|---|---|
bin/bevydemo |
Natív release bináris |
dist/game.js, dist/game_bg.wasm |
wasm-bindgen kimenet (becsomagolás után törlődik) |
bevydemo-<verzió>.html.zip |
Webes build |
bevydemo-<verzió>-win-x64.zip |
Windows-build (mingw keresztfordítás) |
bevydemo-<verzió>-linux-x64.zip |
Linux-build (glibc) |
Csak helyben: make, git, jq, zip, curl, a Rust-eszközlánc a wasm32-unknown-unknown céllal, egy hozzá illő wasm-bindgen CLI, watch módhoz pedig fswatch. A CI-image-ek hozzák a saját eszközeiket.
A pipeline nincs benne a játékrepóban. A Woodpecker az update szervertől kéri el, a WarpEngine pedig a teljes konfigurációt a /build/config végponton szolgálja ki (sablon: lib/warp_engine/ci_templates/bevy.yaml.erb).
A repóhoz három dolog kell:
# .woodpecker.yaml
platform: bevy
name: bevydemo # csak akkor, ha a szoftvernév eltér a repó nevétől
metadata.jsonapplication_token Woodpecker-secret: egy WarpEngine ApplicationToken az update + upload jogosultságokkalA builder image-ek az update szerver ci_platforms konfigurációjából jönnek. A kiszolgált pipeline megtekintése:
curl "https://teletypegames.org/build/config?platform=bevy"
| Lépés | Mit csinál |
|---|---|
| 1. version | kiolvassa a verziót a metadata.json-ból, különben a git rövid hash-t használja; a main/master ágon kívül dev-<verzió>-<ág> előtagot kap |
| 2. build | a bevy-builder image-ben: wasm-build + wasm-bindgen, verziózott zipbe csomagolva |
| 3. binaries | natív linux-x64 (glibc) és win-x64 mingw-vel (x86_64-pc-windows-gnu) |
| 4. upload | a webes zip, a bináris zipek és a <név>-<verzió>.metadata.json POST /build/upload hívással, X-Update-Secret fejléccel |
| 5. publish | POST /build/publish?platform=bevy |
A builder image egy debian alapú Rust-eszközlánc a wasm32-unknown-unknown és x86_64-pc-windows-gnu célokkal, mingw-w64-gyel és előre telepített wasm-bindgen CLI-vel, a bevy-tools builder.Dockerfile fájljából építve.
Bináris részletek:
assets/ könyvtár a bináris mellé kerül becsomagolásra — a Bevy futásidőben tölti be, nincs beágyazva.<név>-<verzió>-<slug>.zip fájlokat win_x64 / linux_x64 kiadási assetként regisztrálja.bevy-demo — animált „TELETYPE GAMES" hullámszöveg Bevy 0.16-on, ugyanaz a demó, mint az ebitengine-demo.