Files
devarea/ECOSYSTEM_PLAN.md
T
mr.zeroandClaude Opus 5 e2222b54be Add MORE_STORES.md, and close the builder image item
MORE_STORES.md asks which further host platforms could get a store like
the Batocera one, and starts from a measurement: the catalog ships html
for 11 of 15 titles and desktop binaries for 8, while the Batocera store
consumes only cartridge — 7. The gap is not the number of stores but
that the existing one leaves half the catalog untouched.

Also records that the ARM64 asset kind is the prerequisite for the
retro-handheld direction, and closes the internal-org item in
REPO_REFACT.md now that all eight builder images live under build/.
The Woodpecker note is corrected against what the CLI actually reports:
19 repos registered and active, not the 10 the pipelines table shows.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-16 20:58:25 +02:00

11 KiB

TTG ökoszisztéma — mink van, mi kell még

Készült 2026-08-15-én, a 2026-08-15-i org-átszervezés utáni állapotra (lásd REPO_REFACT.md).

A cél: a TTG megoldásai együtt egy teljes játékfejlesztési ciklust fedjenek le — ötlettől a kiadáson át a kiadás utáni életig —, és minden fázisban kézzelfogható eszközt adjanak, ne csak dokumentációt.

A mérce a saját folyamatunk, a wiki PDLC oldala: Preparation → Development → Release → Post-launch. Az alábbi táblázat ezt veti össze azzal, hogy melyik fázisban van tényleg futtatható eszközünk.

PDLC fázis Fedő org Eszköz?
Preparation / Concept ✗ csak wiki-oldalak
Preparation / Admin tools (devarea) ~ részben, Redmine külső
Development / Infrastructure build, internal ✓ erős
Development / Implementation engines, demos ✓ erős
Release / Distribution services, tools ✓ web + Batocera
Release / Release party services (botok), bbs
Post-launch ✗ letöltésszámláláson túl semmi

A két véglet: a fejlesztés és a build fázis kiválóan ellátott, a ciklus két vége — a koncepció-fázis és a kiadás utáni visszacsatolás — viszont eszköz nélkül áll.


engines — a fejlesztés alapjai

Van: warp_engine (Rails engine: katalógus, publikáló API, ActiveAdmin), rubbs (Telnet BBS keretrendszer), inkwell (Go point'n'click DSL), gorpg (Ebitengine RPG motor).

Erősség: a warp_engine valódi termék — mountolható, konfigurálható, saját tárolóadapterrel és CI-hívható publikáló felülettel. A warp-engine-batocera-store szétválasztása megmutatta, hogy a köré épülő eszközök is általánosíthatók.

Kiadva (2026-08-16):

  • inkwell v0.1.0 — modulnév git.teletypegames.org/engines/inkwell, go get-tel lehívható. A demos/inkwell-demo már a kiadott verziót használja, replace direktíva nélkül; ez javította a demó CI-jét is, ami a testvérkönyvtárat váró replace miatt bukott.

  • gorpg v0.1.0 — a modulneve module game volt, vagyis semmilyen néven nem lehetett rá hivatkozni; most git.teletypegames.org/engines/gorpg.

  • warp_engine 0.2.0 gem — fent van az engines rubygems registryben (https://git.teletypegames.org/api/packages/engines/rubygems), Bundlerrel feloldható. A publikáló pipeline megvolt a monorepóban, csak sosem futott le; három elavult org-hivatkozást és egy hitelesítési hibát kellett javítani benne.

Hiányzik:

  • Nincs audio- és bemenetkezelő könyvtár. A grafikai/narratív oldal le van fedve, a hang és a gamepad-absztrakció minden játékban újraíródik.

build — a CI gerinc

Van: hét toolchain repo (bevy-, c64-, ebitengine-, godot-, love-, phaser-, tic80-tools), mind közös Makefile-mintára; hozzájuk hét builder image az internal registryben; a pipeline-t a warp_engine config-extension szolgáltatása szolgálja ki központilag, tehát egy image-bump egy sor a services/teletypegames inicializálójában.

Erősség: ez a legérettebb részünk. Hét platform, egységes minta, központi konfiguráció — egy új játék .woodpecker.yaml-ja egyetlen sor (platform: ebitengine).

Hiányzik:

  • A WarpEngine pipelines táblája hiányos. A Woodpecker 19 repót ismer és mind aktív, a /api/ci/pipelines viszont csak 10-et mutat, elavult tulajdonossal. A tábla a felület, amin a CI állapotát nézzük, tehát félrevezet — a valóság a woodpecker-cli repo ls.
  • Négy build nem zöld (2026-08-16): a bevy-demo a bevy-builder image miatt (a Dockerfile-ban ott a pkg-config, a publikált image-ben nincs — újra kell építeni), a bombexpert az ldoc miatt (a Lua forrás dokumentációs kommentjei nem értelmezhetők), a trickster-tiles pedig azért, mert a phaser pipeline src/*.js-t ellenőriz egy TypeScript projektben (javítva a sablonban, deploy után él).
  • Kétféle fájlnév él egymás mellett: .woodpecker.yaml és .woodpecker.yml (impostor, mranderson). Apróság, de a keresést és a sablonozást megnehezíti.
  • Nincs kiadás-előtti ellenőrzés. A pipeline buildel és publikál, de nem futtat tesztet, lintet vagy méretkorlát-ellenőrzést.

games és demos — a tartalom

Van: 11 játék és 6 platformdemó. A katalógusban 15 bejegyzés: 5 released, 2 archived, 2 development, 6 demo.

Platform-lefedettség:

Platform Toolchain Builder image Demó Kiadott játék Aktív CI
c64 ✓ (c64-demo) 3
tic80 2 (+2 archivált)
ebitengine ✓✓ 1
godot ✓ (pong)
phaser — (1 fejlesztés alatt)
bevy ⚠ builder image elavult
love

Hiányzik:

  • Négy platformon nincs kiadott játék (godot, phaser, bevy, love). A teljes eszközlánc kiépült alattuk, de nem bizonyítja semmi.
  • A demók nem sablonok. Mindegyik önálló repo, de nincs belőlük create-from-template mintarepo, se scaffolding parancs. Új játék indítása ma másolás-beillesztés.
  • nyuller, realworld, c64-demo-cpp: se CI, se katalógus, se wiki-oldal. Elakadt vagy félbehagyott munkák — érdemes eldönteni, hogy élnek-e.
  • Névütközés: a katalógus szoftvernevei és a repo-nevek eltérnek (bevydemo/bevy-demo, love2ddemo/love-demo), és két külön c64 demó fut hasonló néven (c64demo és c64-demo).

services — ami a szervereinken fut

Van: teletypegames (a publikus oldal monorepója: Rails katalógus-API + Vue SPA), statusbot és updater (Discord), social-updater (YouTube → Facebook/LinkedIn), blog-writer (wiki → Gemini → blog), redmine-tree.

Erősség: a kiadás utáni kommunikáció automatizált — új build, közösségi poszt, blogbejegyzés mind gépi úton megy.

Hiányzik:

  • Nincs visszacsatolás a játékostól. A warp_engine letöltést számol, de nincs értékelés, komment, hibabejelentő vagy telemetria. A PDLC „Post-launch" fázisa gyakorlatilag eszköztelen.
  • Nincs hírlevél vagy követés. Aki egyszer letöltött egy játékot, nem értesül a következő kiadásról.
  • A statusbot Pascalban, a többi Go/Python/Ruby — négy nyelv négy bothoz, közös keretrendszer nélkül.

tools — amit az ember magának telepít

Van: warp-engine-batocera-store (általános engine bármely WarpEngine-es oldalhoz) + ttg-batocera-store (a mi store-unk), ttg-marketplace (Claude plugin marketplace), devarea (workspace-kezelés).

Erősség: a Batocera store a mintapélda arra, hogyan válik egy belső eszközből általánosan használható termék — bárki felhúzhat saját store-t a saját katalógusára.

Hiányzik:

  • Nincs asztali/webes launcher. A Batocera-doboz le van fedve, a hétköznapi PC nincs.
  • Nincs projekt-scaffolder. A devarea a workspace-t kezeli, de nincs ttg new game --platform godot jellegű parancs, ami a demót, a Makefile-t, a .woodpecker.yaml-t és a Redmine-projektet együtt felhúzza. Ez az egyetlen eszköz, ami a build és a games közti szakadékot áthidalná.
  • Nincs helyi fejlesztői környezet dobozolva. A builder image-ek CI-re valók; lokálisan mindenki maga rakja össze a toolchaint.

bbs — a közösségi felület

Van: bbs-server (a rubbs-ra épülő Telnet BBS), sermo-bbs (SERMO-DOS showcase), impostor-bbs (a Neumatronic Universe 1.5-ös „játéka").

Erősség: ez a márkánk egyedi arca — retró csatorna, ami egyben a rubbs referenciamegvalósítása és NU-tartalom is.

Hiányzik:

  • A BBS nincs összekötve a katalógussal. Nem lehet rajta böngészni vagy letölteni a játékainkat, pedig a warp_engine API pont ezt adná — a warp-engine-batocera-store mintájára egy „BBS store" modul kézenfekvő lenne.

infra — az üzemeltetés

Van: nginx-conf, backup-scripts, wiki-pages (Grav wiki + fetcher + BBS front-end).

Hiányzik:

  • Nincs verziózott deploy. A nginx-conf és a backup szkriptek megvannak, de nincs infrastruktúra-leíró (Ansible/Terraform/Compose-gyűjtemény), amiből a teljes kiszolgáló újraépíthető.
  • Nincs a repóban monitorozás. Az Uptime Kuma külső szolgáltatás, a konfigurációja nincs verziózva.
  • Az internal org megmaradt a builder image-ek névtereként; a csomagok nem költöztek a repókkal. Amíg nincsenek újrapublikálva a build alá, ez a névtér nem szűnhet meg.

Ami a ciklusból teljesen hiányzik

Ez a három nem illeszthető egyetlen meglévő orgba sem — új org vagy új repo kellene hozzájuk.

1. Asset-készítés (assets). A wiki dokumentálja a LibreSprite-ot és a Pixeloramát, a tic80-draw-image vendorolt harmadik féltől — de saját asset-eszközünk nincs. Nincs paletta-készlet, sprite-konverter, tilemap-exportáló, hangkonverter. Minden platformnak más a formátuma, és ezt ma kézzel hidalja át mindenki. Ez a legnagyobb egybefüggő hiány a láncban.

2. Koncepció-fázis (design). A PDLC szerint itt dől el a sztori, a műfaj és a technológia. Van hozzá wiki (Neumatronic Universe, paper-sketch), de nulla eszköz: nincs game design dokumentum-sablon, nincs a technológiaválasztást segítő döntési segédlet (pedig hét platformunk van, és a választás következményeit a /builds mátrix már ismeri).

3. Post-launch. Nincs analitika, visszajelzés-gyűjtés, patch-folyamat vagy játékos-kommunikáció. A warp_engine letöltés-statisztikája az egyetlen adatunk arról, mi történik a kiadás után.


Javasolt sorrend

Hatás szerint, nem nehézség szerint.

  1. A négy nem zöld build rendbetétele, és a WarpEngine pipeline-szinkron lefuttatása, hogy a /api/ci/pipelines a valóságot mutassa. A demók bekötve vannak — a korábbi feltevés, hogy hiányoznak, a hiányos táblából jött.
  2. Projekt-scaffolder a tools orgba. A build és a games közti kézi lépéseket szünteti meg, és a demókat sablonná lépteti elő.
  3. assets org és az első konverter. A leghosszabb út, de a legnagyobb napi megtakarítás.
  4. Csomagpublikáláskész (2026-08-16): inkwell v0.1.0, gorpg v0.1.0 és a warp_engine 0.2.0 gem kiadva, mindhárom külső projektből ellenőrizve.
  5. Kiadott játék a godot / phaser / bevy / love platformra. Négy kiépített lánc várja, hogy bizonyítson.
  6. Post-launch visszacsatolás — értékelés vagy hibabejelentés a katalógusban, warp_engine bővítésként, hogy minden WarpEngine-es oldal megkapja.