A BBS-hálózat művészeti boardja: klasszikus ANSI-art a 16colo.rs archívumából, egy közös 40×25-ös vászon, amelyre minden hívó egyszerre fest, és a Fal a róla mentett művekkel.
Elérhető:
teletypegames.org:2332, böngészőben a bbsweb-en, és a TTG Gate BBS-en át is
Ruby-alkalmazás a rubbs gemre építve, mint a Teletype BBS, a Scriptorium BBS és a Commodex BBS.
Két arca van egy porton:
A hívás a rubbs BBS::Terminal kérdésével indul: a RETURN elfogadja a tippet, az 1 a modern arcot, a 2 a C64-est választja.
16colo.rs. A board a 16colo.rs archívumát a nyilvános API-ján át böngészi: év, pack, fájl. A szöveges művészeti fájlokat listázza (.ans, .asc, .diz, .nfo, .txt, .ice, és minden fájlt, amelynek SAUCE-a ASCII, ANSI vagy ANSiMation), a címükkel, alkotójukkal, csapatukkal és 16colo.rs-címükkel. Semmit sem tükröz: egy fájlt akkor tölt le, amikor valaki megnyitja (legfeljebb 512 KB), és 100 MB-os lemezes gyorsítótárban tartja; a listák egy óráig maradnak a memóriában.
A műveket a board maga rajzolja ki: beolvassa a SAUCE-rekordot, a CP437-et, az ANSI.SYS-vezérlőkódokat és az iCE-színeket, a SAUCE-szélességnél tör, és 1000 sornál megáll. Modern terminálon a mű a teljes képernyőn görgethető. C64-en 40 oszlopos oldalakban jön: a CGA-színek a legközelebbi C64-színre kerülnek, a színes háttérből inverz lesz, és az R vagy a CRSR jobbra lép tovább a szélesebb műveken.
A Fal a vászonról mentett műveket tartja, a legújabbal kezdve, címmel, névvel és dátummal, mindkét arcon natívan kirajzolva.
Egyetlen közös 40×25-ös vászon, akkora, mint a C64 képernyője, így mindkét arc cellánként ugyanazt mutatja. Aki rajta van, néhány másodpercen belül látja a többiek vonásait. Egy cellában egy karakter van a C64 16 színének egyikével, tintaként feketén vagy inverzben; ennyit tud megjeleníteni egy C64-es cella, így a kép mindenhol ugyanolyan. A karakterek azok, amelyek a Unicode-terminálon és a PETSCII-ben is megvannak: betűk, számok, a legtöbb írásjel, keretvonalak, blokkok és félblokkok.
Modern terminálon:
| Billentyű | Művelet |
|---|---|
| F3 | A vászon megnyitása |
| Nyilak, gépelés | Mozgás, a karakter megfestése |
| F7, F8 | Előző / következő tinta (vagy kattints egy színre) |
| F9 vagy Ctrl-R | Inverz be és ki |
| Insert vagy Ctrl-G | Glifamód: a betűk az ecset glifjeit festik |
| Egér | Kattintás a kurzort teszi oda, húzás vagy jobb klikk fest |
| Ctrl-Z vagy Ctrl-U | A saját utolsó cellák visszavonása |
| Ctrl-S | Mentés a Falra (az űrlapon Alt-S) |
| F2 | 16colo.rs évek szerint |
| F4 | A Fal |
| Alt-X | Kilépés |
Commodore 64-en: a CRSR mozgat, a gépelés fest, a DEL töröl, az F3/F4 tintát vált, az F5 az inverzt kapcsolja, az F6 a glifamódot (a betűk a billentyűzet szerint vannak kiosztva: Q W E / A S D / Z X C a keretsarkok, a T-elágazások és a kereszt, a G teli blokk, a T és a B a felső és az alsó fél). A RETURN, a RUN/STOP vagy a ← megnyitja a parancssort: tinta, inverz, glifek, mentés, súgó, kilépés. Az F1-hez és az F7-hez nem nyúl, azokat az UltimateTerm tartja meg. A board csak a megváltozott cellákat küldi, cellánként pár bájtot, így a vászon 1200 baudon is fürge.
Korlátok: hívásonként másodpercenként 20 cella, hívásonként ötpercenként egy mentés a Falra, a cím legfeljebb 32, a név 16 karakter.
| Változó | Alapérték | |
|---|---|---|
PIXELIA_BBS_DATA |
data |
a vászon, a Fal, a gyorsítótár |
PIXELIA_BBS_API_URL |
https://api.16colo.rs |
a 16colo.rs API |
PIXELIA_BBS_SITE_URL |
https://16colo.rs |
a fájlok és a mutatott linkek |
PIXELIA_BBS_USER_AGENT |
PixeliaBBS/1.0 (+https://teletypegames.org; …) |
a 16colo.rs felé küldve |
PIXELIA_BBS_API_TTL |
3600 |
ennyi másodpercig marad meg egy lista |
PIXELIA_BBS_MAX_FILE_KB |
512 |
a legnagyobb letöltött fájl |
PIXELIA_BBS_CACHE_MB |
100 |
a gyorsítótár mérete |
PIXELIA_BBS_MAX_ROWS |
1000 |
egy műből kirajzolt sorok |
PIXELIA_BBS_PAINT_RATE |
20 |
cella másodpercenként, hívásonként |
PIXELIA_BBS_WALL_COOLDOWN |
300 |
két mentés között ennyi másodperc egy hívásban |
A vászon a data/canvas.json (kétmásodpercenként írva), a Fal műveként egy JSON-fájl a data/works/-ben. Az adminok a szerveren moderálnak:
docker exec pixelia-bbs bin/works list # a Fal
docker exec pixelia-bbs bin/works show ID
docker exec pixelia-bbs bin/works remove ID
docker exec pixelia-bbs bin/canvas clear # a data/archive/-ba menti, aztán letörli a vásznat
A boardnak nincs titka.
A masterre pusholás a Woodpeckerből élesít (RuboCop, compose-ellenőrzés, ci-deploy pixelia-bbs); a konténer neve pixelia-bbs, a helye /srv/stacks/pixelia-bbs, a data/ megmarad a deployok között. Az entrypoint induláskor frissíti a rubbs-t.
A kód a házi rétegezést követi: a lib/domain (a szín-, glif-, vászon-, mű-, SAUCE- és art-modell; a 16colo.rs-, gyorsítótár-, vászon- és mű-repository; AnsiRenderService, GalleryService, CanvasService, WallService; a PixeliaBBS kompozíciós gyökér) semmit sem tud a telnetről, a lib/ui pedig a UI::Modern-t a vászon-widgettel és a nézegetővel, valamint a UI::Petscii-t tartalmazza, amelynek képernyőmásolata csak a különbségeket küldi.