EN /HU | Belépés

TIC-80

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.

Weboldal: https://tic80.com Eszközrepó: https://git.teletypegames.org/build/tic80-tools


Makefile

Egy kazetta egyetlen .lua fájl. Hogy a kód modularizált maradjon, sok fájlra bontjuk, és buildidőben fűzzük össze.

TEXT
project-root/
├── inc/
│   ├── core.lua
│   ├── player.lua
│   └── world.lua
├── impostor.inc      # build-sorrend, soronként egy fájlnév
├── Makefile
└── README.md

Az impostor.lua generált fájl. A sorrend számít: egy fájlnak az általa használt globális elemek után kell jönnie.

Célok

SH
make build                  # az inc/ fájlok összefűzése a <project>.lua fájlba
make minify                 # a kód zsugorítása, mentés <project>.original.lua néven
make export VERSION=1.0.0    # build + minify, majd a .tic és a .html.zip mentése
make export_assets          # PALETTE/TILES/SPRITES/MAP/SFX/WAVES -> inc/meta/meta.assets.lua
make import_assets          # az assets/<típus>/*.png importálása a kazettába
make watch                  # újraépítés az inc/, a .inc fájl és az assets/ változására
make lint                   # luacheck, a sorszámokat visszavezetve a forrásfájlokra
make docs                   # ldoc HTML a docs/ könyvtárba
make install_precommit_hook # a .git/hooks/pre-commit lefuttatja a make lint parancsot
make clean                  # a generált fájlok törlése

Az export a verziózott fájlokat verzió nélküli néven is átmásolja (impostor.tic, impostor.html.zip). Az export_assets a grafikát forráskódként tartja verziókövetés alatt.

VS Code

Másold az eszközrepó example-tasks.json fájlját .vscode/tasks.json néven, és cseréld az impostor.lua nevet a saját kazettád nevére. Feladatok: Run TIC80 (alapértelmezett, Cmd+Shift+B), Build & Run TIC80, Export assets, Make build.

Előálló artifactok

Fájl Leírás
<project>.lua Összefűzött (és minifikált) forrás
<project>.original.lua Minifikálás előtti mentés
<project>.tic Kazetta
<project>.html.zip HTML-build
<project>-*-docs.zip Dokumentáció
<project>-*-win-x64.zip Windows-lejátszó, beleégetett kazettával
<project>-*-linux-x64.zip Linux-lejátszó, beleégetett kazettával
<project>-*-mac-x64.zip macOS (Intel) lejátszó, beleégetett kazettával

Követelmények

Csak helyben: make, tic80 a PATH-ban, lua, luacheck, ldoc, curl, watch módhoz pedig fswatch. A CI a saját eszközeit telepíti.


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/tic80.yaml.erb).

A repóhoz három dolog kell:

YAML
# .woodpecker.yaml
platform: tic80
  • name: <szoftver> — csak akkor, ha a szoftvernév eltér a repó nevétől
  • az application_token Woodpecker-secret: egy WarpEngine ApplicationToken az update + upload jogosultságokkal, az adminban létrehozva

A TIC-80-projekteknek nincs metadata.json fájljuk. A verzió és a katalógus-metaadatok az inc/meta/meta.header.lua kommentfejlécéből jönnek.

A pontos parancsok megtekintése:

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

Lépések

Lépés Mit csinál
1. version sed-del kiszedi a -- version: kommentet az inc/meta/meta.header.lua fájlból; a main ágon kívül dev-/ágnév utótagot fűz hozzá
2. lint alpine + luacheck; a .inc sorrendje szerint fűzi össze az inc/ fájlokat sortérképpel; bármilyen hibánál elbukik
3. minify összefűzés és minifikálás a lua-minify-tic80 eszközzel; az eredetit megtartja a dokumentációhoz
4. docs ldoc a minifikálás előtti forráson, <név>-<verzió>-docs.zip néven becsomagolva
5. export a tic80pro image-ben: elmenti a .tic kazettát, és exportál .html.zip fájlt
6. binaries export win / linux / mac a beleégetett kazettával, slugonként egy zip; a sablonok a tic80.com-ról töltődnek le, tehát ehhez a lépéshez hálózat kell
7. upload fájlonként POST /build/upload, X-Update-Secret fejléccel az application_token alapján
8. publish POST /build/publish?platform=tic80

A builder image (tic80pro) az update szerver ci_platforms konfigurációjából jön, nem a repóból.

Eredmény

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.


Builder image

A TIC-80 Pro kereskedelmi termék, az itch.io-n árulják. A forrás nyílt, tehát licenccel saját Pro binárist építhetsz egy tiszta image-ben.

DOCKERFILE
FROM ubuntu:24.04

RUN apt-get update && apt-get install -y \
      build-essential cmake git \
      libsdl2-dev libpipewire-0.3-dev libwayland-dev \
      ruby-dev lua5.4 libcurl4-openssl-dev \
    && rm -rf /var/lib/apt/lists/*

RUN git clone --recursive https://github.com/nesbox/TIC-80 /opt/TIC-80
RUN cd /opt/TIC-80/build \
    && cmake -DBUILD_PRO=On -DBUILD_SDLGPU=On -DBUILD_WITH_ALL=On -DBUILD_STATIC=On .. \
    && cmake --build . --parallel

ENV PATH="/opt/TIC-80/build/bin:${PATH}"
WORKDIR /workspace
CMD ["/bin/bash"]
Kapcsoló Miért
BUILD_PRO=On bekapcsolja a Pro funkciókat
BUILD_SDLGPU=On, BUILD_WITH_ALL=On GPU-támogatás és minden opcionális funkció
BUILD_STATIC=On egyetlen hordozható bináris, megosztott könyvtárak okozta meglepetések nélkül