Simple Python Adventure Game Engine – Textovka
Před více než rokem jsem se díky jednomu nejmenovanému příznivci textových her začal poohlížet po nějakém enginu pro tvorbu textových her. Většina nalezených enginů měla problémy s českou diakritikou, některé byly příliš složité a vyžadovaly pro podporu češtiny mnoho úprav. Nakonec jsem v knihovně pyparsing pro python nalezl mezi příklady kódu i funkční základ enginu pro textové hry, tak jak jsem je znal z osmibitového Atari. Chvíli jsem s tímto kódem experimentoval a zjistil jsem, že kód je snadno rozvinutelný, postupně jsem vyřešil i problémy s češtinou a utf8 kódováním apod.
Jako první jsem se pokusil přepsat původní hru Emgeton Story, kde jsem podle původního výpisu z atari basicu postupně začal psát ten starý příběh. Postupně jsem do enginu přidával nové příkazy pro ovládání a vymýšlel ošetření podmínek příběhu. Mezitím jsem hlavně díky podnětům starých ataristů vylepšoval ovládání a další funkce. Takže postupně přibyla možnost doplňování příkazů přes tabulátor, ukládání/načítání hry a další funkce. Bez těchto „našeptávačů“, jejich nápadů,
námětů a hlášení chyb, by engine dozajista neuměl, co umí teď. Patří jim díky.
Od počátku jsem engine psal tak, aby byl multiplatformní, primárně jsem testoval funkčnost na Linuxu, dále pak ve Virtualboxu ve Windows XP a kolega s Apple, to testoval na svém MacBooku. Jak se postupně ukazovalo, že engine je funkční, přidali se další lidé a začali portovat další původní hry z Atari. Díky tomu se engine opět rozvinul, bylo například třeba dopsat podporu pro realtime timery a další. Postupně se ukazovalo, že bude třeba nějaké GUI, neboť textová konzole hlavně kvůli nestandartnímu kódování češtiny ve Windows je nedostatečná. Postupně se objevily od dalších programátorů požadavky možnosti obarvování a formátování textů, což byl impuls k naprogramování GUI.
Mezi různými toolkity jsem zvolil pyGtk, neboť se mi podařilo najít kus kódu pyconsole, který emuloval chování terminálu a po úpravách se dal použít jako základ nově vznikajícího GUI. Díky tomu došlo k oddělení kódu enginu od kódu ovládání, čímž se zpřehlednil kód a vznikla možnost napsat např. GUI v toolkitu Qt. Postupně se GUI vylepšovalo až do dnešní podoby, kdy funguje např. obarvování textu a formátování pomocí značek podobných jako html.
V současné době mám rozepsanou hru na motivy příběhu „Cesta krve“ od J. Kulhánka. V kódu této hry se mi podařilo nastínit způsob, jakým lze přidávat vlastní příkazy a atributy k příkazům. Lze tedy k základním příkazům např. přidat příkazy pro nabíjení, střelbu, atributy předmětů jako např. velikost zásobníku, počet zbývajících ran a další.
Engine i GUI se dá stále vylepšovat, zdokonalovat a je otevřen pro další programátory. Pokud chcete tedy někdo pomoci, neváhejte a ozvěte se. Pro hráče je k dispozici téměř desítka her.
Stránky projektu: http://sourceforge.net/projects/textovka/
To by mne zajímalo, kdo je ten nejmenovaný příznivce textových her.
Muzu hadat, ale tipnul bych si :)
No dobře, tak to asi bud já, no.