TITLE=Löve ROUTE=/platforms/love LOCALE=hu MODIFIED=1792476547 URL=https://wiki.teletypegames.org/hu/platforms/love 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ó. bWeboldal:0 https://love2d.org r────────────────────────────────────────────────────────────────────────────── 1Makefile 1════════ Egy LÖVE-játék c.love0 archívumként kerül kiadásra. A webes build ugyanez az archívum, clove.js0-szel összecsomagolva. 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 kimeneti fájlnevekben használt név t│0 clove2ddemo0 t│ t│0 cBIN_DIR0 t│0 Buildidejű ellenőrzések t│0 cbin0 t│ t│0 cDIST_DIR0 t│0 Csomagolt artifactok t│0 cdist0 t│ t│0 cWEB_DIR0 t│0 Webes fájlok t│0 cdist/web0 t│ t│0 cLOVE_NAME0 t│0 Az előálló .love fájl t│0 clove2ddemo.love0 t│ t│0 cVERSION_FILE0 t│0 Verziófájl a CI-hez t│0 c.version0 t│ t└──────────────┴──────────────────────────────────────┴─────────────────┘ 2Célok 2───── p make build # luac szintaxisellenőrzés minden .lua fájlra p make love # becsomagolás a dist/love2ddemo.love fájlba (k» p ihagyja: .git, Makefile, dist/) p make web # love.js letöltése, a dist/web/ összeállítása,» p index.html + player.js foltozása p make export VERSION=1.0.0 # mindkettő, love2ddemo-1.0.0.love.zip és -1.0» p .0.html.zip néven becsomagolva p make watch # újraépítés .lua változásra (fswatch kell hozz» p á) p make clean # a bin/ és a dist/ törlése 2VS Code 2─────── Másold az cexample-tasks.json0 fájlt változtatás nélkül c.vscode/tasks.json néven. Feladatok: bRun Löve0 (alapértelmezett, cCmd+Shift+B0), bBuild & Run Löve0, bBuild .love package0, bMake build0. 2Előálló artifactok 2────────────────── t┌─────────────────────────────────────┬──────────────────────────────────────┐ t│h Fájl t│h Leírás t│ t├─────────────────────────────────────┼──────────────────────────────────────┤ t│0 cdist/love2ddemo.love0 t│0 LÖVE-csomag t│ t├─────────────────────────────────────┼──────────────────────────────────────┤ t│0 clove2ddemo-.love.zip0 t│0 Becsomagolt .love t│ t├─────────────────────────────────────┼──────────────────────────────────────┤ t│0 clove2ddemo-.html.zip0 t│0 Webes build t│ t├─────────────────────────────────────┼──────────────────────────────────────┤ t│0 clove2ddemo-.metadata.json0 t│0 Metaadat a terjesztéshez t│ t├─────────────────────────────────────┼──────────────────────────────────────┤ t│0 clove2ddemo--win-x64.zip0 t│0 Összeolvasztott Windows-build (exe + t│ t│0 t│0 dll-ek) t│ t├─────────────────────────────────────┼──────────────────────────────────────┤ t│0 clove2ddemo--mac-universal.0 t│0 Összeolvasztott univerzális c.app0 t│ t│0 czip0 t│0 t│ t├─────────────────────────────────────┼──────────────────────────────────────┤ t│0 clove2ddemo--linux-x64.zip0 t│0 Összeolvasztott AppImage t│ t└─────────────────────────────────────┴──────────────────────────────────────┘ 2Követelmények 2───────────── Csak helyben: cmake0, cluac0, czip0, cunzip0, ccurl0, csed0, 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/love/pipeline.yaml.erb0). A repóhoz három dolog kell: p # .woodpecker.yaml p platform: love p name: love2ddemo # 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 kiszolgált pipeline megtekintése: p curl "https://teletypegames.org/build/config?platform=love" 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; megírja a c.version0 fájlt t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 2. build t│0 a clove-builder0 image-ben: becsomagolja a c.love0 fájlt, t│ t│0 t│0 felépíti a clove.js0 webes csomagot, a névvel és verzióval t│ t│0 t│0 megfoltozza a lejátszót és a HTML-t, majd mindkettőt t│ t│0 t│0 becsomagolja t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 3. binaries t│0 beolvasztja a c.love0 fájlt a hivatalos LÖVE kiadási t│ t│0 t│0 artifactokba t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 4. upload t│0 átmásolja a cmetadata.json0 fájlt t│ t│0 t│0 clove2ddemo-.metadata.json0 néven, majd fájlonként t│ t│0 t│0 cPOST /build/upload0 az cX-Update-Secret0 fejléccel t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 5. publish t│0 cPOST /build/publish0 a cname0, cplatform0, cversion0 paraméterekkel t│ t└─────────────┴──────────────────────────────────────────────────────────────┘ Az összeolvasztás platformonként: • bwin-x640 — a clove.exe0 és a c.love0 összefűzve, a dll-ekkel együtt • bmac-universal0 — a c.love0 a hivatalos univerzális clove.app0 belsejében, az cInfo.plist0 a projekt nevére foltozva • blinux-x640 — összeolvasztott AppImage, cmksquashfs0-sel újraépítve. Az AppImage-runtime glibc-hez linkelt, ezért soha nem fut le az alpine builderen; a squashfs-eltolás a creadelf0 kimenetéből jön. A LÖVE dist-fájljai az image gyorsítótárából, a c/opt/love-dist/0 könyvtárból jönnek, GitHubról történő curl-tartalékkal. p curl -X POST -H "X-Update-Secret: " \ p "https://teletypegames.org/build/publish?name=love2ddemo&platform=love&ver» p sion=1.0.0" 2Eredmény 2──────── Egy c.love0 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.