Az Ebitengine (korábban Ebiten) gyors és hordozható 2D játékmotor Góhoz.
Weboldal: https://ebitengine.org Ezzel a motorral készült projektek: Rabbit Roller
A Go natív binárisra vagy WebAssemblyre fordít. A webes buildhez három fájl kell: game.wasm, wasm_exec.js és index.html.
| Változó | Leírás | Alapérték |
|---|---|---|
PROJECT |
A kimeneti fájlnevekben használt név | ebitenginedemo |
BIN_DIR |
Natív futtatható állomány | bin |
DIST_DIR |
WASM és csomagolt artifactok | dist |
WASM_NAME |
A WebAssembly fájl neve | game.wasm |
VERSION_FILE |
Verziófájl a CI-hez | .version |
INDEX_HTML_URL |
index.html sablon | ebitengine-tools repó |
make build # go build -> bin/<PROJECT> az aktuális OS-re
make wasm # dist/game.wasm + wasm_exec.js
make export VERSION=1.0.0 # wasm + index.html ebitenginedemo-1.0.0.html.zip néven becsomagolva
make watch # a natív bináris újraépítése a . alatti változásra (fswatch kell hozzá)
make clean # a bin/ és a dist/ törlése
Másold az example-tasks.json fájlt .vscode/tasks.json néven, és cseréld az ebitenginedemo nevet a saját PROJECT értékedre. Feladatok: Run (alapértelmezett, Cmd+Shift+B), Build & Run, Build WASM, Make build.
| Fájl | Leírás |
|---|---|
bin/ebitenginedemo |
Natív futtatható állomány az aktuális OS-re |
dist/game.wasm |
WebAssembly bináris |
dist/wasm_exec.js |
A Go WASM-futtatókörnyezetének segédfájlja |
ebitenginedemo-<verzió>.html.zip |
Webes build (index.html + WASM + runtime) |
Csak helyben: make, go 1.11+, curl, zip, 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/woodpecker/platforms/ebitengine/pipeline.yaml.erb).
A repóhoz három dolog kell:
# .woodpecker.yaml
platform: ebitengine
metadata.jsonapplication_token Woodpecker-secret: egy WarpEngine ApplicationToken az update + upload jogosultságokkalname: <szoftver> a jelölőben, de csak akkor, ha a szoftvernév eltér a repó nevétőlA builder image-ek az update szerver ci_platforms konfigurációjából jönnek. A teletypegames.org-on a builder az ebitengine-ttg: az ebitengine-builder image, előtöltve az összes TTG-s Go-projekt moduljaival, így a build, a binaries és a test lépés nem tölti le őket újra (egy új függőséget a build ugyanúgy letölt). A segédlépések (version, upload, publish) a ci-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:
curl "https://teletypegames.org/build/config?platform=ebitengine"
| Lépés | Mit csinál |
|---|---|
| 1. version | az engine közös lépése (a WarpEngine 1.7 óta): a verzió a metadata.json-ból; tagnél a verziótagnek egyeznie kell vele; a repó alapágán kívül és egy dev-<ág> tagen dev-<verzió>-<ág>, verzió nélkül dev-<commit>; megírja a .version fájlt |
| 2. build | GOOS=js GOARCH=wasm, hozzáadja a wasm_exec.js és index.html fájlokat, majd becsomagolja |
| 3. binaries | keresztfordítás win-x86, win-x64, linux-x64 célokra, mindegyikhez egy verziózott zip |
| 4. upload | csak tagre: átmásolja a metadata.json fájlt a verziózott nevére, majd POST /build/upload az X-Update-Secret fejléccel |
| 5. publish | csak tagre: POST /build/publish?platform=ebitengine |
| 6. tag | az engine közös lépése (a WarpEngine 1.9 óta), csak push után: a forrás új verziója megkapja a v<verzió> tagjét, és annak pipeline-ja futtatja a csak tagre jelölt lépéseket; egy már tagelt verzió nem ad ki semmit; egy dev build az ág dev-<ág> tagjét a commitra helyezi, így mindig a legfrissebb dev build van kiadva. Lásd: Verziók és kiadások a WarpEngine oldalon |
A verzió emelése maga a kiadás: a push buildel és tagel, a tag pipeline-ja tölt fel és publikál (WarpEngine 1.9). Egy push, amely nem emeli a verziót, csak buildel.
Egy verziózott webes build, valamint Windows- és Linux-binárisok, feltöltve és publikálva. A nyilvános játékindex magától frissül.