EN /HU | Belépés

Bevy

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

Tutorialok


Makefile

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:

TOML
[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ók

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

Célok

SH
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:

SH
rustup target add wasm32-unknown-unknown
cargo install wasm-bindgen-cli --version 0.2.100

VS Code

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.

Előálló artifactok

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)

Követelmények

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.


Pipeline

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:

YAML
# .woodpecker.yaml
platform: bevy
name: bevydemo   # csak akkor, ha a szoftvernév eltér a repó nevétől
  • metadata.json
  • az application_token Woodpecker-secret: egy WarpEngine ApplicationToken az update + upload jogosultságokkal

A builder image-ek az update szerver ci_platforms konfigurációjából jönnek. A kiszolgált pipeline megtekintése:

SH
curl "https://teletypegames.org/build/config?platform=bevy"

Lépések

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:

  • Az assets/ könyvtár a bináris mellé kerül becsomagolásra — a Bevy futásidőben tölti be, nincs beágyazva.
  • Mac-build nincs: a darwinra keresztfordításhoz osxcross kell, ugyanaz a tervezett eszközlánc, mint az ebitengine mac-céljainál.
  • Az API a <név>-<verzió>-<slug>.zip fájlokat win_x64 / linux_x64 kiadási assetként regisztrálja.
  • Egy hidegen induló Bevy release-build több száz crate-et fordít le, tehát a többi motornál jóval hosszabb buildlépésre számíts.

Demóprojekt

bevy-demo — animált „TELETYPE GAMES" hullámszöveg Bevy 0.16-on, ugyanaz a demó, mint az ebitengine-demo.