EN /HU | Belépés

Löve

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


Makefile

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

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

Célok

SH
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

VS Code

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.

Előálló artifactok

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

Követelmények

Csak helyben: make, luac, zip, unzip, curl, sed, 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/love.yaml.erb).

A repóhoz három dolog kell:

YAML
# .woodpecker.yaml
platform: love
name: love2ddemo   # 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=love"

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

  • win-x64 — a love.exe és a .love összefűzve, a dll-ekkel együtt
  • mac-universal — a .love a hivatalos univerzális love.app belsejében, az Info.plist a projekt nevére foltozva
  • linux-x64 — összeolvasztott AppImage, mksquashfs-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.

SH
curl -X POST -H "X-Update-Secret: <SECRET>" \
  "https://teletypegames.org/build/publish?name=love2ddemo&platform=love&version=1.0.0"

Eredmény

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.