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
Egy kazetta egyetlen .lua fájl. Hogy a kód modularizált maradjon, sok fájlra bontjuk, és buildidőben fűzzük össze.
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.
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.
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.
| 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 |
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.
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:
# .woodpecker.yaml
platform: tic80
name: <szoftver> — csak akkor, ha a szoftvernév eltér a repó nevétőlapplication_token Woodpecker-secret: egy WarpEngine ApplicationToken az update + upload jogosultságokkal, az adminban létrehozvaA 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:
curl "https://teletypegames.org/build/config?platform=tic80"
| 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.
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.
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.
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 |