EN /HU | Belépés

GMENU

A GMENU egy DOS-program (C++, Open Watcom, 8086-os kód, kb. 45 KB). Egy könyvtár (alapból \COLLECT) játékmappáit listázza címmel, műfajjal, évvel és játékosszámmal, és elindítja a kiválasztott játékot. Amíg a játék fut, nincs a memóriában, így a játék megkapja az összes szabad memóriát.

Az 1.1.1-ig NASM assemblyben készült, és a programjai .COM fájlok voltak; a 2.0.0 ugyanez a menü C++-ban újraírva, a DOSINST eszközláncával, a programjai pedig a GMENUPRG.EXE és a GMEDIT.EXE. A 2.1.0 rétegekbe szervezve épül a DOSLIB-re, a DOSINST-tel közös könyvtárra; a menü ugyanaz. A 2.3.0 a gyorsítótárából indul, a játékmappák bejárása nélkül, és a játékok számát csak a szabad memória korlátozza. A programtárban és a játéklista címsorában GMenu Launcher a neve; a mappa és a programok neve nem változott.

GMENU játéklista


Mit tud

  • Játéklista minden mappa METADATA.INI-jéből (vagy a NAME.TXT első sorából, vagy a mappanévből).
  • Keresés gépelés közben, a címekben, a mappanevekben és a leírásokban.
  • Szűrők műfajra (F2), évre vagy évtizedre (F3) és játékosszámra (F4); csak a kedvencek (F7); csak a METADATA.INI nélküli játékok (Shift+F7).
  • Rendezés cím, év, műfaj vagy a legtöbbet játszott szerint (F9); véletlen játék (F10).
  • Kedvencek (F6) és az utolsó 10 játszott játék (F8); játékonként a játszások száma és az utolsó játék dátuma.
  • Részletek oldal (Enter): az összes adat, görgethető, többsoros leírás és a játék indítható .COM / .EXE / .BAT fájljai.
  • Játék Ctrl+Enterrel vagy dupla kattintással (a RUN parancs), setup Ctrl+S-sel.
  • Szerkesztő (Ctrl+E, GMEDIT.EXE): űrlapon hozza létre vagy szerkeszti a játék METADATA.INI-jét.
  • Billentyűzet és egér, a görgővel együtt (CuteMouse WheelAPI). Az F1 az összes billentyűt listázza.

GMENU részletek oldal

Telepítés

Hálózatos DOS-gépen a legegyszerűbb a DOSINST: a DOSINST INSTALL GMENU a legfrissebb kiadást a C:\APPS\GMENU alá telepíti, újra futtatva frissíti. Kézzel:

  1. Töltsd le a GMENU-vX.Y.Z.zip-et a kiadások közül, és csomagold ki a DOS-meghajtóra, például C:\APPS\GMENU\ alá (ez az alapértelmezett, a DOSINST is ide telepít). A menünek a GMENU.BAT és a GMENUPRG.EXE kell, a szerkesztéshez a GMEDIT.EXE is.
  2. Minden játék a saját mappájába kerüljön, egy közös könyvtár alá, mindegyikben egy METADATA.INI-vel (vagy legalább egy NAME.TXT-vel):
    TXT
    C:\COLLECT\
     DOOM\
       METADATA.INI
       DOOM.EXE
     PRINCE\
       NAME.TXT      <- első sor: "Prince of Persia"
       PRINCE.EXE
    
  3. A játékkönyvtárat a GMENU.BAT-ban állítsd be (a GMENUPRG.EXE sor utolsó argumentuma, a /B maradjon):
    BAT
    %GMENU%PRG.EXE /B \COLLECT
    

    Másik meghajtó is jó (D:\GAMES). A /A a részletek oldalon az összes fájlt mutatja, nem csak a futtathatókat.

  4. Indítás: GMENU. A GMENU.BAT abból a névből találja meg a programjait, amellyel elindították, így a mappa bárhol lehet; .BAT kiterjesztéssel indítva (például Total Commanderből vagy Windows 98-ról) ezt nem tudja, és a C:\APPS\GMENU-ből futtatja őket (a set GMENU= sor: ezt írd át, ha a menü máshol van). DOSBoxban indulhat bootkor is:
    TXT
    [autoexec]
    mount c /Users/.../Dosbox
    c:
    path Z:\;C:\APPS\GMENU
    gmenu
    

Telepített menü frissítéséhez másold a mappájába a GMENUPRG.EXE-t, a GMEDIT.EXE-t és a GMENU.BAT-ot, és a GMENU.BAT-ban állítsd be újra a játékkönyvtárat. 1.x-ről frissítve az új GMENU.BAT kötelező, mert a régi a GMENUPRG.COM-ot indítja; a régi .COM fájlok törölhetők. A DOSINST mindezt elvégzi, a törlést is.

METADATA.INI

Minden sor opcionális, a kulcsok kis- és nagybetűre nem érzékenyek, a [GAME] és a ;-vel kezdődő sorok nem számítanak:

INI
[GAME]
NAME=Doom
GENRE=Shooter
YEAR=1993
PLAYERS=1-4
DESCRIPTION=The whole description in one line...
DESCRIPTION=A second DESCRIPTION line starts a new line.\nSo does \n inside the text.
RUN=DOOM.EXE -nomusic
ARGS=-skill 3
SETUP=SETUP.EXE
Kulcs Jelentés
NAME A cím. Ha nincs: NAME.TXT, aztán a mappanév.
GENRE, YEAR A listában látszik, a szűrők és a rendezés használja.
PLAYERS Szám (2), tartomány (1-4) vagy nyitott (2+). A szűrő azokat a tartományokat adja, amelyek tartalmazzák a számot.
DESCRIPTION A \n sortörés, a \\ backslash; több sor sortöréssel fűződik össze.
RUN Amit a Ctrl+Enter indít: a játék mappájának egy fájlja, opcionális argumentumokkal.
ARGS A RUN-hoz fűződik, akkor is, ha a RUN fájlt a részletek oldalról indítod.
SETUP A setup parancs, Ctrl+S indítja.

A fájlok lehetnek UTF-8-ak (BOM-mal vagy anélkül) vagy 437-es kódlaposak. Az UTF-8 betűk 437-es kódlapra konvertálódnak; amelyik nincs benne (ő, ű, Á), az a legközelebbi lesz (ö, ü, A).

Szerkesztés a GMEDIT-tel: a Ctrl+E egy űrlapot nyit a mezőkkel. Új fájl abból indul, amit a mappa elárul (NAME.TXT, az egyetlen futtatható mint RUN, az első SETUP* / INSTALL* mint SETUP). Mentéskor csak a megváltozott értékek íródnak át; a kommentek, a többi kulcs és az érintetlen értékek maradnak. F2 ment, Esc elvet. Önállóan is fut: GMEDIT C:\COLLECT\DOOM.

Hogyan működik

A GMENU.BAT egy ciklus a program körül, így a menü sosem marad a memóriában a játék alatt:

  1. A GMENU.BAT lefuttatja a GMENUPRG.EXE /B-t a játékkönyvtárral.
  2. Játékválasztáskor a program megírja a saját mappájába a GMENURUN.BAT-ot (meghajtó- és mappaváltás, a játék indítása, visszaváltás), és kilép.
  3. A GMENU.BAT meghívja a GMENURUN.BAT-ot, aztán újraindítja a menüt — ugyanazon a játékon, ugyanazzal a kereséssel, szűrőkkel és rendezéssel.

A Ctrl+E ugyanígy működik, csak a GMENURUN.BAT a GMEDIT.EXE-t indítja. /B nélkül a program csak annyit ír ki, hogy a GMENU.BAT-tal kell indítani.

Indításkor a menü a GMENU.IDX-ből veszi a játékokat, és nem nézi meg a játékmappákat, így lassú gépen, sok játékkal is gyorsan indul; csak a kiválasztott játékot ellenőrzi, így a Ctrl+E-vel szerkesztett adat azonnal látszik. A bejárás — az első indításkor, ha nincs GMENU.IDX vagy más játékkönyvtáré, illetve Ctrl+F-re — listázza a mappákat, csak azokat a METADATA.INI / NAME.TXT fájlokat olvassa újra, amelyeknek a dátuma, ideje vagy mérete változott, és újraírja a GMENU.IDX-et. Új, törölt vagy átnevezett játékmappa a Ctrl+F után jelenik meg.

Futás közben létrejövő fájlok, a GMENUPRG.EXE mellett (a formátumuk az 1.1.0 óta nem változott, így a frissített menü megtartja az állapotát; a GMENU.IDX a 2.3.0-ban új verziót kapott, ezért a frissítés utáni első indítás egyszer bejárja a mappákat):

Fájl Tartalom
GMENU.SEL Utolsó játék, keresés, szűrők, rendezés, legutóbbi játékok
GMENU.FAV Kedvencek, soronként egy mappanév
GMENU.STA Játékonként a játszások száma és az utolsó játék dátuma
GMENU.IDX A játékmappák és a METADATA.INI / NAME.TXT adataik gyorsítótára; a Ctrl+F újraépíti, bármikor törölhető

Fordítás és tesztek

A fordításhoz Open Watcom v2 kell (a snapshot kiadásban macOS-es és linuxos binárisok is vannak; ha nem a ~/.local/opt/watcom alatt van, a WATCOM változó mutasson rá):

SH
cd SOURCE
./build.sh          # a GMENUPRG.EXE és a GMEDIT.EXE a szülőmappába
./build.sh test     # a tesztváltozatok a SOURCE/build/ alá

A forrás rétegekből áll, mindegyik csak az alatta lévőket használja, azokat is csak interfészen át (a szabályok a DOSLIB oldalán): model (játékok, szűrők, munkamenet, METADATA.INI), repository (a fájlok: a játékmappák a GMENU.IDX gyorsítótárral, kedvencek, statisztika, munkamenet, GMENURUN.BAT), service (a játéklista, az indítás, a választók, a GMEDIT szerkesztése), controller és view (az oldalak), app (összerakja őket), a DOS-os belépés pedig a main_gmenu.cpp és a main_gmedit.cpp. A SOURCE/lib a DOSLIB. Az alapértelmezett játékkönyvtár a gmenu.ini collect_dir kulcsából jön.

A unit-tesztek DOSBox nélkül, a fejlesztőgépen futnak, a teljes menü és a szerkesztő is, szkriptelt billentyűkkel, memóriabeli lemezen; előtte a rétegeket is ellenőrzik:

SH
SOURCE/test/unit/run.sh

A képernyőtesztek DOSBoxban futtatják a tesztváltozatokat: a SOURCE/test/cases.txt minden esetének billentyűsorozata a TESTKEYS.TXT-be kerül, és amikor elfogy, a program elmenti a képernyőt, amit a teszt a SOURCE/test/expected/ tartalmával vet össze. Python 3, Open Watcom és DOSBox (Staging vagy 0.74) kell hozzájuk:

SH
python3 SOURCE/test/run.py              # minden eset
python3 SOURCE/test/run.py --update     # a mostani eredmény elfogadása

Kiadások

A Woodpecker minden pusht lefordít és letesztel. A metadata.json megemelt version-je a masterre pusholva a pipeline-tól megkapja a vX.Y.Z tagjét, és ez a tag ezen felül Gitea-kiadást is publikál, a RELEASE_NOTES.md szövegével és három fájllal: a telepítéshez a GMENU-vX.Y.Z.zip, a telepített menü frissítéséhez a GMENUPRG.EXE és a GMEDIT.EXE. Ugyanez a tag a katalógusba is publikálja a kiadást, onnan kerül a menü a DOSINST programtárába (ftp://ftp.teletypegames.org/APPS), az INFO.INI-ben a tag a verzió. Minden lépés a dos-tools builder image-ének (git.teletypegames.org/build/dos-builder) egy parancsa, előre telepített eszközlánccal; a repóban csak a platform: dos marker és a metadata.json van, amelynek dos szakasza mondja meg, mi kerül egy kiadásba. A képernyőtesztek egyszerre négy esetet futtatnak (JOBS, mindegyiket a saját mappájában). A Gitea-kiadást a WarpEngine közös release lépése készíti a dos-pack által felsorolt fájlokból. Store lépés nincs: a DOSINST programtára az engine DOS-polca, amelyet minden publikáláskor a katalógusból épít újra, így a pipeline-nak nem kell deploy-kulcs.

SH
# "version": "2.4.0" a metadata.json-ban, aztán
git commit -am "Version 2.4.0"
git push origin master

Korlátok

  • A játékmappák számát csak a szabad memória korlátozza (játékonként kb. 100 bájt plusz az adatai, legfeljebb 16000); mappánként legfeljebb 600 fájlt listáz. A legutóbbiak listája 10 játékot, a statisztika az utolsó 1000 játszott játékot tartja meg.
  • Cím 50 karakter, műfaj 24, év és játékosszám 10, leírás 2000, RUN / SETUP / ARGS 60. A METADATA.INI-ből 4 KB-ot olvas, a GMEDIT 8 KB-ig szerkeszt.
  • A képernyő a 437-es kódlapot használja.