A LÖVE (Love2D) könnyűsúlyú keretrendszer 2D játékokhoz, Luában. Prototípusokhoz és kis-közepes méretű játékokhoz jó.
Weboldal: https://love2d.org
Egy LÖVE-játék .love archívumként kerül kiadásra. A webes build ugyanez az archívum, love.js-szel összecsomagolva.
| Változó | Leírás | Alapérték |
|---|---|---|
PROJECT |
A kimeneti fájlnevekben használt név | love2ddemo |
BIN_DIR |
Buildidejű ellenőrzések | bin |
DIST_DIR |
Csomagolt artifactok | dist |
WEB_DIR |
Webes fájlok | dist/web |
LOVE_NAME |
Az előálló .love fájl | love2ddemo.love |
VERSION_FILE |
Verziófájl a CI-hez | .version |
make build # luac szintaxisellenőrzés minden .lua fájlra
make love # becsomagolás a dist/love2ddemo.love fájlba (kihagyja: .git, Makefile, dist/)
make web # love.js letöltése, a dist/web/ összeállítása, index.html + player.js foltozása
make export VERSION=1.0.0 # mindkettő, love2ddemo-1.0.0.love.zip és -1.0.0.html.zip néven becsomagolva
make watch # újraépítés .lua változásra (fswatch kell hozzá)
make clean # a bin/ és a dist/ törlése
Másold az example-tasks.json fájlt változtatás nélkül .vscode/tasks.json néven. Feladatok: Run Löve (alapértelmezett, Cmd+Shift+B), Build & Run Löve, Build .love package, Make build.
| Fájl | Leírás |
|---|---|
dist/love2ddemo.love |
LÖVE-csomag |
love2ddemo-<verzió>.love.zip |
Becsomagolt .love |
love2ddemo-<verzió>.html.zip |
Webes build |
love2ddemo-<verzió>.metadata.json |
Metaadat a terjesztéshez |
love2ddemo-<verzió>-win-x64.zip |
Összeolvasztott Windows-build (exe + dll-ek) |
love2ddemo-<verzió>-mac-universal.zip |
Összeolvasztott univerzális .app |
love2ddemo-<verzió>-linux-x64.zip |
Összeolvasztott AppImage |
Csak helyben: make, luac, zip, unzip, curl, sed, 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/love.yaml.erb).
A repóhoz három dolog kell:
# .woodpecker.yaml
platform: love
name: love2ddemo # 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=love"
| 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; megírja a .version fájlt |
| 2. build | a love-builder image-ben: becsomagolja a .love fájlt, felépíti a love.js webes csomagot, a névvel és verzióval megfoltozza a lejátszót és a HTML-t, majd mindkettőt becsomagolja |
| 3. binaries | beolvasztja a .love fájlt a hivatalos LÖVE kiadási artifactokba |
| 4. upload | átmásolja a metadata.json fájlt love2ddemo-<verzió>.metadata.json néven, majd fájlonként POST /build/upload az X-Update-Secret fejléccel |
| 5. publish | POST /build/publish a name, platform, version paraméterekkel |
Az összeolvasztás platformonként:
love.exe és a .love összefűzve, a dll-ekkel együtt.love a hivatalos univerzális love.app belsejében, az Info.plist a projekt nevére foltozvamksquashfs-sel újraépítve. Az AppImage-runtime glibc-hez linkelt, ezért soha nem fut le az alpine builderen; a squashfs-eltolás a readelf kimenetéből jön.A LÖVE dist-fájljai az image gyorsítótárából, a /opt/love-dist/ könyvtárból jönnek, GitHubról történő curl-tartalékkal.
curl -X POST -H "X-Update-Secret: <SECRET>" \
"https://teletypegames.org/build/publish?name=love2ddemo&platform=love&version=1.0.0"
Egy .love csomag, egy webes csomag és három összeolvasztott asztali build, mind verziózva, feltöltve és publikálva. A nyilvános játékindex magától frissül.