Vlákno názorů k článku Historie vývoje počítačových her (150. část – specializované nástroje a jazyky pro tvorbu textovek) od Ed - Část o jazyku Inform mi přišla poněkud povrchní,...

  • Článek je starý, nové názory již nelze přidávat.
  • 18. 11. 2014 16:44

    Ed

    Část o jazyku Inform mi přišla poněkud povrchní, i s přihlédnutím k příštímu dílu. Říct o Inform, že kompilace pro Z-Machine je zajímavost, je jako říct o Céčku, že zajímavostí je překlad do spustitelného kódu :). Inform je přeci jazyk, pro který byla kompatibilita se Z-Machine hlavní cíl.

    Jinak Inform je v současnosti Inform6 a Inform7 - pokud vím, používají se oba. A nestálo by za to, ukázat spíš kód, než generické screenshoty z Gargoyle, které daný jazyk nijak nepředvádí? Aspoň nějakou složitější konstrukci, než "out"? To ostatně platilo pro všechny jazyky.

    Seriálu ale každopádně fandím. Díky!

  • 18. 11. 2014 20:59

    atarist (neregistrovaný)

    Mě to třeba s tou Z-mašinou překvapilo, protože je docela zvláštní, že se pořád ještě používá na něco dalšího, než jen na přehrávání Zorků :-) Trošku jsem se na specifikaci Z-mašiny díval a kromě grafu objektů tam vlastně nění nic tak speciálního, co by textovkářům pomohlo! Dokonce ani parser, takže - doufám že to správně chápu - pokud budu mít 100 textovek ve formátu dejme tomu .z6, tak budu mít na disku zbytečně 100x ten samý parser, 100x tu samou základní logiku ovládání atd.?

  • 19. 11. 2014 23:44

    Tomáš Bláha (neregistrovaný)

    Pokud vím, tak Inform kompiluje do Z-machine i do Glulx. Do Z-machine ale dokáže zkompilovat jen menší hry, protože formát má svá omezení. V podstatě zvádne jen určité počty objektů atp. Podpora staršího formátu je daná hlavně historicky (Glulx vzniklo až z potřeby provozovat složitější hry) a také hraje roli kompatibilita (Z-machine je tu od počátku a tak je přeci jen větší nabídka interpretrů vč. historických platforem).

    A ano, Z-machine i Glulx jsou poměrně nízkoúrovňové virtuální mašiny, vůbec se to neblíží vysokoúrovňovému jazyku, je to spíš takový "assembler". Nicméně oproti strojovému kódu určenému pro HW mikroprocesor se bytekód určený k vykonání SW virtuální mašinou přeci jen liší a občas má sklony k instrukcím vyšší úrovně abstrakce. U té Z-machine je např. vidět operační kód "tokenise", který provede rozložení příkazu zadaného hráčem na jednotlivé tokeny a zadaná slova porovná se slovníkem hry a připraví tabulku shod.

    Zbytek parseru, tedy sémantická analýza zadaného příkazu, se už neprovádí v interpretru, ale v programu spuštěném na dané virtuální mašině. Takže ano, můžete mít stokrát to samé, ale v praxi to tak nebude zcela. Každá z těch 100 her může mít trochu jiný parser, třeba jen lehce upravený a doladěný podle dané hry, ale třeba i úplně jiný, pokud je hra vytvořena v jiném nástroji, který také kompiluje do .z6. To samé platí pro ten zbytek, tedy model světa. Opět záleží na nástrojích, ve kterých hry vznikají a i v rámci řekněme Informu pak záleží, jaká rozšíření si autor do hry vloží, takže se může hru od hry lišit.

    U TADSu, o kterém přeci jen vím podstatně více, je to s virtuální mašinou podobné, tedy interpret poskytuje tokenizaci a matchování vůči slovníku. Celý zbytek parseru je naprogramovaný přímo v jazyku TADS v knihovně a přeložený do bytekódu, takže se dá prakticky libovolně přizpůsobit potřebám hry.

    VM jde ale o podstatný kus dál, než Z-machine, poskytuje TADSovému programu hromadu zabudovaných (= naprogramovaných v C++ v rámci interpretru) funkcí a tříd (intrinsics), které kromě zprostředkování běžných věcí, jako vstup a výstup na obrazovku a do souborů nabízí různé datové struktury a kolekce (list, pole, bigint,...), regulární výrazy a i třeba zmíněnou infrastrukturu pro síťovou komunikaci. Co se týče instrukční sady VM, tak kromě těch instrukcí, které připomínají assembler, jsou zde i takové zajímavosti, jako instrukce, která provede volání metody na polymorfním objektu nebo třeba instrukci pro vyvolání výjimky.

  • 19. 11. 2014 23:59

    Tomáš Bláha (neregistrovaný)

    No tak pochopitelně nejzajímavější a (z mého pohledu) nejúchylnější na Inform7 je to, že se programuje v informštině, ale to si autor zřejmě nechává jako překvapení na další díl, tak jako bych nic neřekl :-)