EN /HU | Belépés

Ebitengine

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


Makefile

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

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ó

Célok

SH
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

VS Code

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.

Előálló artifactok

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)

Követelmények

Csak helyben: make, go 1.11+, curl, zip, 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/woodpecker/platforms/ebitengine/pipeline.yaml.erb).

A repóhoz három dolog kell:

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

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

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

Lépések

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.

Eredmény

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.