TITLE=TIC-80 ROUTE=/platforms/tic80 LOCALE=hu MODIFIED=1792476547 URL=https://wiki.teletypegames.org/hu/platforms/tic80 A TIC-80 pindurka fantasy számítógép kis játékokhoz. A kód, a sprite-ok, a térképek, a hangok és a zene mind benne szerkeszthetők. bWeboldal:0 https://tic80.com bEszközrepó0: https://git.teletypegames.org/build/tic80-tools r────────────────────────────────────────────────────────────────────────────── 1Makefile 1════════ Egy kazetta egyetlen c.lua0 fájl. Hogy a kód modularizált maradjon, sok fájlra bontjuk, és buildidőben fűzzük össze. p project-root/ p ├── inc/ p │ ├── core.lua p │ ├── player.lua p │ └── world.lua p ├── impostor.inc # build-sorrend, soronként egy fájlnév p ├── Makefile p └── README.md Az cimpostor.lua0 generált fájl. A sorrend számít: egy fájlnak az általa használt globális elemek után kell jönnie. 2Célok 2───── p make build # az inc/ fájlok összefűzése a .lua fáj» p lba p make minify # a kód zsugorítása, mentés .original.l» p ua néven p make export VERSION=1.0.0 # build + minify, majd a .tic és a .html.zip me» p ntése p make export_assets # PALETTE/TILES/SPRITES/MAP/SFX/WAVES -> inc/met» p a/meta.assets.lua p make import_assets # az assets//*.png importálása a kazettáb» p a p make watch # újraépítés az inc/, a .inc fájl és az assets/ » p változására p make lint # luacheck, a sorszámokat visszavezetve a forrás» p fájlokra p make docs # ldoc HTML a docs/ könyvtárba p make install_precommit_hook # a .git/hooks/pre-commit lefuttatja a make lint» p parancsot p make clean # a generált fájlok törlése Az cexport0 a verziózott fájlokat verzió nélküli néven is átmásolja (cimpostor.tic0, cimpostor.html.zip0). Az cexport_assets0 a grafikát forráskódként tartja verziókövetés alatt. 2VS Code 2─────── Másold az eszközrepó cexample-tasks.json0 fájlját c.vscode/tasks.json0 néven, és cseréld az cimpostor.lua0 nevet a saját kazettád nevére. Feladatok: bRun TIC80 (alapértelmezett, cCmd+Shift+B0), bBuild & Run TIC800, bExport assets0, bMake build0. 2Előálló artifactok 2────────────────── t┌───────────────────────────┬────────────────────────────────────────────────┐ t│h Fájl t│h Leírás t│ t├───────────────────────────┼────────────────────────────────────────────────┤ t│0 c.lua0 t│0 Összefűzött (és minifikált) forrás t│ t│0 c.original.lua0 t│0 Minifikálás előtti mentés t│ t│0 c.tic0 t│0 Kazetta t│ t│0 c.html.zip0 t│0 HTML-build t│ t│0 c-*-docs.zip0 t│0 Dokumentáció t│ t│0 c-*-win-x64.zip0 t│0 Windows-lejátszó, beleégetett kazettával t│ t│0 c-*-linux-x64.zip0 t│0 Linux-lejátszó, beleégetett kazettával t│ t│0 c-*-mac-x64.zip0 t│0 macOS (Intel) lejátszó, beleégetett kazettával t│ t└───────────────────────────┴────────────────────────────────────────────────┘ 2Követelmények 2───────────── Csak helyben: cmake0, ctic800 a cPATH0-ban, clua0, cluacheck0, cldoc0, ccurl0, watch módhoz pedig cfswatch0. A CI a saját eszközeit telepíti. 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/tic80/pipeline.yaml.erb0). A repóhoz három dolog kell: p # .woodpecker.yaml p platform: tic80 • cname: 0 — csak akkor, ha a szoftvernév eltér a repó nevétől • az capplication_token0 Woodpecker-secret: egy WarpEngine ApplicationToken az cupdate0 + cupload0 jogosultságokkal, az adminban létrehozva A TIC-80-projekteknek bnincs cmetadata.jsonb fájljuk0. A verzió és a katalógus-metaadatok az cinc/meta/meta.header.lua0 kommentfejlécéből jönnek. A pontos parancsok megtekintése: p curl "https://teletypegames.org/build/config?platform=tic80" 2Lépések 2─────── t┌─────────────┬──────────────────────────────────────────────────────────────┐ t│h Lépés t│h Mit csinál t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 1. version t│0 csed0-del kiszedi a c-- version:0 kommentet az t│ t│0 t│0 cinc/meta/meta.header.lua0 fájlból; a main ágon kívül t│ t│0 t│0 cdev-0/ágnév utótagot fűz hozzá t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 2. lint t│0 cluacheck0 a ctools0 image-ben (a teletypegames.org-on cci-tools0, t│ t│0 t│0 előre telepített luacheck-kel és ldoc-kal; nélküle calpine0 + t│ t│0 t│0 minden futáskor cluarocks install0); a c.inc0 sorrendje szerint t│ t│0 t│0 fűzi össze az cinc/0 fájlokat sortérképpel; bármilyen hibánál t│ t│0 t│0 elbukik t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 3. minify t│0 összefűzés és minifikálás a clua-minify-tic800 eszközzel; az t│ t│0 t│0 eredetit megtartja a dokumentációhoz t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 4. docs t│0 cldoc0 a minifikálás előtti forráson, c--docs.zip0 t│ t│0 t│0 néven becsomagolva t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 5. export t│0 a ctic80pro0 image-ben: elmenti a c.tic0 kazettát, és exportál t│ t│0 t│0 c.html.zip0 fájlt t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 6. binaries t│0 cexport win / linux / mac0 a beleégetett kazettával, t│ t│0 t│0 slugonként egy zip; a sablonok a tic80.com-ról töltődnek le, t│ t│0 t│0 tehát ehhez a lépéshez hálózat kell t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 7. upload t│0 fájlonként cPOST /build/upload0, cX-Update-Secret0 fejléccel az t│ t│0 t│0 capplication_token0 alapján t│ t├─────────────┼──────────────────────────────────────────────────────────────┤ t│0 8. publish t│0 cPOST /build/publish?platform=tic800 t│ t└─────────────┴──────────────────────────────────────────────────────────────┘ A builder image (ctic80pro0) és a tools image az update szerver cci_platforms konfigurációjából jön, nem a repóból. A cci-tools0-szal a lint lépés 10–15 s-ról 3 s-ra, a docs lépés 12–14 s-ról 1 s-ra rövidült. 2Eredmény 2──────── Lintelt, minifikált, verziózott build; a dokumentáció és a natív lejátszók ReleaseAssetként csatolva; a nyilvános játékindex magától frissül. Minden buildlogika a szerveroldalon él — a repó csak a jelölőt és a tokenjét hordozza. r────────────────────────────────────────────────────────────────────────────── 1Builder image 1═════════════ A TIC-80 Pro kereskedelmi termék, az bitch.io0-n árulják. A forrás nyílt, tehát licenccel saját Pro binárist építhetsz egy tiszta image-ben. p FROM ubuntu:24.04 p p RUN apt-get update && apt-get install -y \ p build-essential cmake git \ p libsdl2-dev libpipewire-0.3-dev libwayland-dev \ p ruby-dev lua5.4 libcurl4-openssl-dev \ p && rm -rf /var/lib/apt/lists/* p p RUN git clone --recursive https://github.com/nesbox/TIC-80 /opt/TIC-80 p RUN cd /opt/TIC-80/build \ p && cmake -DBUILD_PRO=On -DBUILD_SDLGPU=On -DBUILD_WITH_ALL=On -DBUILD_ST» p ATIC=On .. \ p && cmake --build . --parallel p p ENV PATH="/opt/TIC-80/build/bin:${PATH}" p WORKDIR /workspace p CMD ["/bin/bash"] t┌────────────────────────────────────┬───────────────────────────────────────┐ t│h Kapcsoló t│h Miért t│ t├────────────────────────────────────┼───────────────────────────────────────┤ t│0 cBUILD_PRO=On0 t│0 bekapcsolja a Pro funkciókat t│ t├────────────────────────────────────┼───────────────────────────────────────┤ t│0 cBUILD_SDLGPU=On0, cBUILD_WITH_ALL=On0 t│0 GPU-támogatás és minden opcionális t│ t│0 t│0 funkció t│ t├────────────────────────────────────┼───────────────────────────────────────┤ t│0 cBUILD_STATIC=On0 t│0 egyetlen hordozható bináris, t│ t│0 t│0 megosztott könyvtárak okozta t│ t│0 t│0 meglepetések nélkül t│ t└────────────────────────────────────┴───────────────────────────────────────┘