TITLE=Bevy ROUTE=/platforms/bevy LOCALE=hu MODIFIED=1792476547 URL=https://wiki.teletypegames.org/hu/platforms/bevy L=1 https://bevyengine.org/learn/quick-start/introduction/ L=2 https://bevyengine.org/examples/ L=3 https://bevy-cheatbook.github.io/ L=4 https://bevyengine.org/learn/quick-start/getting-started/ecs/ L=5 https://bevy-cheatbook.github.io/platforms/wasm.html L=6 https://git.teletypegames.org/build/bevy-tools L=7 https://git.teletypegames.org/demos/bevy-demo L=8 #58 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. bWeboldal:0 https://bevyengine.org 1Tutorialok 1══════════ • 1iThe Bevy Book — Getting Started • 2iBevy Examples • 3iUnofficial Bevy Cheat Book • 4iBevy ECS explained • 5iDeploying Bevy to the web (WASM) r────────────────────────────────────────────────────────────────────────────── 1Makefile 1════════ A natív buildek sima ccargo build0 hívások. A webes buildek a cwasm32-unknown-unknown0 célra fordítanak, és lefuttatják a cwasm-bindgen0-t a JS-ragasztóréteghez. Az cindex.html0 vázat exportkor tölti le, így minden játék ugyanazt a betöltőt használja. A sablonok a 6bevy-tools repóban vannak: másold az cexample-makefile.make0 fájlt cMakefile0 néven, és állítsd a cPROJECT0 értékét a cCargo.toml0-ban szereplő crate-névre. bA verziórögzítés számít.0 A cwasm-bindgen0 CLI-nek és a cwasm-bindgen0 crate-nek azonos verziójúnak kell lennie: p [target.'cfg(target_arch = "wasm32")'.dependencies] p wasm-bindgen = "=0.2.100" Tartsd szinkronban a Makefile cWASM_BINDGEN_VERSION0 értékét. A CI-image (cgit.teletypegames.org/build/bevy-builder0) a hozzá illő CLI-t hozza — verzióemeléskor építsd újra egy új c--build-arg WASM_BINDGEN_VERSION0 értékkel. 2Változók 2──────── t┌──────────────────────┬──────────────────────────┬──────────────────────────┐ t│h Változó t│h Leírás t│h Alapérték t│ t├──────────────────────┼──────────────────────────┼──────────────────────────┤ t│0 cPROJECT0 t│0 A projekt / crate neve t│0 cbevydemo0 t│ t├──────────────────────┼──────────────────────────┼──────────────────────────┤ t│0 cWASM_BINDGEN_VERSION0 t│0 A CLI verziója, egyeznie t│0 c0.2.1000 t│ t│0 t│0 kell a Cargo.toml-lal t│0 t│ t├──────────────────────┼──────────────────────────┼──────────────────────────┤ t│0 cBIN_DIR0 t│0 Natív bináris t│0 cbin0 t│ t├──────────────────────┼──────────────────────────┼──────────────────────────┤ t│0 cDIST_DIR0 t│0 Exportált artifactok t│0 cdist0 t│ t├──────────────────────┼──────────────────────────┼──────────────────────────┤ t│0 cVERSION_FILE0 t│0 Verziófájl a CI-hez t│0 c.version0 t│ t├──────────────────────┼──────────────────────────┼──────────────────────────┤ t│0 cINDEX_HTML_URL0 t│0 HTML-váz t│0 bevy-tools t│ t│0 t│0 t│0 cweb/index.html0 t│ t└──────────────────────┴──────────────────────────┴──────────────────────────┘ 2Célok 2───── p make build # cargo build --release -> bin/$(PROJECT) p make run # cargo run p make wasm # release wasm + wasm-bindgen -> dist/game.js, » p dist/game_bg.wasm p make export VERSION=1.0.0 # wasm + index.html bevydemo-1.0.0.html.zip né» p ven becsomagolva p make watch # újraépítés a src/ alatti változásra (fswatch » p kell hozzá) p make clean # a bin/, dist/ és target/ törlése A cmake wasm0 igényli a célt és a CLI-t: p rustup target add wasm32-unknown-unknown p cargo install wasm-bindgen-cli --version 0.2.100 2VS Code 2─────── Másold az cexample-tasks.json0 fájlt c.vscode/tasks.json0 néven. Feladatok: bRun (alapértelmezett, cCmd+Shift+B0), bBuild & Run0, bBuild WASM0, bMake build0. 2Előálló artifactok 2────────────────── t┌─────────────────────────────────┬──────────────────────────────────────────┐ t│h Fájl t│h Leírás t│ t├─────────────────────────────────┼──────────────────────────────────────────┤ t│0 cbin/bevydemo0 t│0 Natív release bináris t│ t├─────────────────────────────────┼──────────────────────────────────────────┤ t│0 cdist/game.js0, cdist/game_bg.wasm0 t│0 wasm-bindgen kimenet (becsomagolás után t│ t│0 t│0 törlődik) t│ t├─────────────────────────────────┼──────────────────────────────────────────┤ t│0 cbevydemo-.html.zip0 t│0 Webes build t│ t├─────────────────────────────────┼──────────────────────────────────────────┤ t│0 cbevydemo--win-x64.zip0 t│0 Windows-build (mingw keresztfordítás) t│ t├─────────────────────────────────┼──────────────────────────────────────────┤ t│0 cbevydemo--linux-x64.zip0 t│0 Linux-build (glibc) t│ t└─────────────────────────────────┴──────────────────────────────────────────┘ 2Követelmények 2───────────── Csak helyben: cmake0, cgit0, cjq0, czip0, ccurl0, a Rust-eszközlánc a cwasm32-unknown-unknown0 céllal, egy hozzá illő cwasm-bindgen0 CLI, watch módhoz pedig cfswatch0. A CI-image-ek hozzák a saját eszközeiket. r────────────────────────────────────────────────────────────────────────────── 1Pipeline 1════════ 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 c/build/config0 végponton szolgálja ki (sablon: clib/warp_engine/ci/woodpecker/platforms/bevy/pipeline.yaml.erb0). A repóhoz három dolog kell: p # .woodpecker.yaml p platform: bevy p name: bevydemo # csak akkor, ha a szoftvernév eltér a repó nevétől • cmetadata.json • az capplication_token0 Woodpecker-secret: egy WarpEngine ApplicationToken az cupdate0 + cupload0 jogosultságokkal A builder image-ek az update szerver cci_platforms0 konfigurációjából jönnek. A teletypegames.org-on a builder a cbevy-ttg0: a cbevy-builder0 image, a cargo registryjében az összes TTG-s Rust-projekt crate-jeivel előtöltve, így a build lépések nem töltenek le újra több száz crate-et (egy új függőséget a build ugyanúgy letölt). A segédlépések (version, upload, publish) a cci-tools image-ben futnak, amelyben a git, a jq, a curl és a zip előre telepítve van, így semmit nem telepítenek. A kiszolgált pipeline megtekintése: p curl "https://teletypegames.org/build/config?platform=bevy" 2Lépések 2─────── t┌─────────────┬──────────────────────────────────────────────────────────────┐ t│h Lépés t│h Mit csinál t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 1. version t│0 kiolvassa a verziót a cmetadata.json0-ból, különben a git t│ t│0 t│0 rövid hash-t használja; a cmain0/cmaster0 ágon kívül t│ t│0 t│0 cdev--<ág>0 előtagot kap t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 2. build t│0 a builder image-ben (a teletypegames.org-on cbevy-ttg0): t│ t│0 t│0 wasm-build + cwasm-bindgen0, verziózott zipbe csomagolva t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 3. binaries t│0 natív linux-x64 (glibc) és win-x64 mingw-vel t│ t│0 t│0 (cx86_64-pc-windows-gnu0) t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 4. upload t│0 a webes zip, a bináris zipek és a t│ t│0 t│0 c-.metadata.json0 cPOST /build/upload0 hívással, t│ t│0 t│0 cX-Update-Secret0 fejléccel t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 5. publish t│0 cPOST /build/publish?platform=bevy0 t│ t└─────────────┴──────────────────────────────────────────────────────────────┘ A builder image egy debian alapú Rust-eszközlánc a cwasm32-unknown-unknown0 és cx86_64-pc-windows-gnu0 célokkal, mingw-w64-gyel és előre telepített cwasm-bindgen0 CLI-vel, a bevy-tools cbuilder.Dockerfile0 fájljából építve. Bináris részletek: • Az cassets/0 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 c--.zip0 fájlokat cwin_x640 / clinux_x640 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. 2Demóprojekt 2─────────── 7bevy-demo — animált „TELETYPE GAMES" hullámszöveg Bevy 0.16-on, ugyanaz a demó, mint az 8ebitengine-demo.