CoolClub pro IT odborníky

Nevidomý programátor Vojta Polášek: Mým cílem je napsat hru, která by simulovala orientaci nevidomých v reálném světě

07.10.2019

Programátořina je nelehká profese, která vyžaduje čas a neustálé zdokonalování svého know-how. Jak se ale programuje, když člověk nevidí? Vojta Polášek, student fakulty informačních technologiích MU, dokázal svůj handicap překonat a proměnit ve svůj prospěch. Dnes programuje hry a programy pro další nevidomé a posouvá tím oblast programování na úplně novou úroveň. Jaká byla jeho cesta mezi jedničky a nuly?

 

CoolDialog

 

Při čtení vašeho blogu se dozvídáme, že kouzlu počítačů jste propadl už jako malý kluk. Jak vlastně vznikla vaše láska k počítačům a programování?

Když to vezmu popořadě, o počítače jsem se zajímal už odmalička. Když mi bylo asi pět, měli jsme doma počítač, který taťka potřeboval kvůli práci. Bylo to nějaké staré Pentium, 32 MiB RAM, myslím, že tam byl ještě MS DOS. Pamatuji si, že tam byl program, který kreslil po monitoru svislé a vodorovné čáry podle toho, jak jsem mačkal šipky na klávesnici. A to mě tenkrát bavilo. Taky jsem na to tenkrát ještě viděl. Časem jsme přešli přes Windows 3.11 až k 95, a to jsem tam hrál tak akorát hry, které byly hodně jednoduché a kontrastní (Prince of Persia). O nějakém speciálním software pro zrakově postižené jsem tenkrát slyšel jen z vyprávění.

 

Už na základních školách je povinná informatika, jak jste s počítačem pracoval tam? 

Na prvním stupni ZŠ jsem pracoval s počítačem tak, že jsem si zapnul vysoký kontrast a nastavil si co nejmenší rozlišení obrazovky, takže všechno vypadalo větší. Pro psaní jsem používal velké fonty. Nicméně mi to umožňovalo dělat jen pár věcí – hrát hry a psát si poznámky. Na druhém stupni jsme domů i do školy pořídili počítače s hlasovým výstupem a tím se mi otevřelo mnoho možností. Především ve škole jsem se začal učit, jak pracovat s internetem a tím pádem se mi otevřela obrovská spousta informací. Už tenkrát mě bavilo se v počítačích různě hrabat. Zkoušet, co se stane, když smažu tohle, přenastavím támhleto... no, ne vždy to dobře dopadlo... :-)

 

Vojto, kdy jste napsal svůj první kód?

Má první zkušenost s "kóděním" byla konkrétně s HTML, kdy jsem si ručně napsal jednoduché stránky. Pokud se ale bavíme o psaní opravdových programů, tak to jsem začínal se skriptovacím jazykem AutoIT. Měl srozumitelnou dokumentaci, na kterou mi stačila má tehdejší angličtina a naučil jsem se tím základy programování. Pak jsem se doslechl o Pythonu, na střední škole si prošel pár knížek a už u něj zůstal jako u mého hlavního jazyka. Během vysoké jsem přešel od Windows na Linux a k jazykům přidal ještě základy C++ a Javy.

 

Python, Vojtův první programovací jazyk

 

Dá se tedy říct, že jste odmalička sbíral mnoho let počítačové praxe... Jaká úskalí musíte jako nevidomý programátor během programování řešit? Jsou k vaší práci potřeba nějaké „speciální komponenty“?

Předně existuje speciální software, tzv. screen reader neboli čtečka obrazovky. Je to speciální software, který je dneska součástí už všech operačních systémů. Podotýkám, že jej někdy vyvíjí přímo výrobci systému (Voiceover pro Apple), ale většinou je to produkt třetích stran. Pro každý systém existuje alespoň jeden takový screen reader zdarma. Tento software mi zprostředkovává dění na počítačové obrazovce. Nejčastěji se tak děje skrze nějakou hlasovou syntézu, ale dá se použít také speciální hardware, tzv. braillský displej, který zobrazuje text v braillově písmu. Takže se třeba dovím, co jsem napsal, jaký kus kódu jsem označil, jak velké je odsazení řádku atd. Což mi ve většině případů stačí.

Má to ale své limity. Předně screen reader nedokáže takto ozvučit jakoukoli aplikaci, programátor ji musí správně napsat. Znamená to, že třeba v Linuxu jsem zatím schopný používat pouze jedno grafické IDE a to Eclipse. Na druhou stranu jsem s spokojený a nic mě nenutí hledat alternativy.

Pak jsou tu věci, které i kdyby se podařilo ozvučit, tak mi nepomůžou. Předně je nutné si uvědomit, že vždy můžu číst řekněme jen jeden řádek/položku na obrazovce. Takže nejsem schopný se zběžně podívat na kus kódu a podle zvýraznění syntaxe poznat, kde je chyba. Musím si kód pozorně přečíst a nebo spoléhat na IDE, že mě navede pomocí nějakých záchytných bodů. Používám hodně klávesových zkratek, Eclipse mi v tomto vyhovuje. Myš nepoužívám vůbec, nemá to pro mě smysl. Obecně rád pracuji s terminálem, čím víc je nějaké rozhraní textové, tím je větší pravděpodobnost, že jej bude screenreader správně reprezentovat a mě se s ním bude dobře pracovat. Takže úplně ideální by bylo třeba přejít z Eclipse na Emacs, ale to je ještě daleko.

Rád bych zdůraznil, že je jen a jen na programátorovi, jak moc přístupnou aplikaci napíše. Dnešní grafické toolkity od GTK až po QT nabízejí možnosti, jak třeba přidat k prvkům alternativní text nebo jak screenreaderu poradit ohledně toho, co který prvek dělá. Vyžaduje to ale trochu práce navíc a někomu se do toho nechce.

 

Na svém blogu rovněž uvádíte, že zkoušíte pracovat na různých programech. Můžete nás lehce zasvětit do vaší tvorby a říct, na jakých aplikacích právě pracujete, popřípadě na jaké z nich jste nejvíce pyšný?

Když to tak vezmu, tak toho zas tak moc není. Nikdy jsem nedělal nějaký samostatný velký projekt, to mě asi ještě čeká. Mým relativně velkým počinem byla hra United Guards, na které jsem se učil práci s Pythonem, zvukem a uživatelským rozhraním. Je to hra, která nemá žádný grafický výstup a ovládá se z klávesnice. Princip je jednoduchý a starý - z jednoho ze tří směrů na vás letí letadlo a vy musíte stisknout příslušnou klávesu se šipkou na klávesnici, abyste letadlo sestřelili. Na sestřelení máte čím dál méně času. Počítá se score za rychlost atd. Je to ke stažení na mých stránkách, ale ani nevím, jestli to ještě funguje a asi se nechystám to znovu oživit. Muselo by se to přepsat do Python 3.

Druhým drobným projektem byl takový wrapper kolem přehrávače Mplayer, který uměl k filmu číst pomocí hlasové syntézy titulky. Inspiroval mě fakt, že pro systém Windows existoval program, který to uměl, ale pro Linux ne. Tam jsem se naučil, co to jsou vlákna a jak se pracuje s knihovnou Ncurse. Opět, program nemá žádný grafický výstup. Bohužel to nikde není zveřejněné, ale snad se k tomu ještě dostanu. Na tenhle program jsem asi nejpyšnější, doteď mi sem tam někdo řekne, jestli bych to nechtěl oživit. Pak už to byly drobnější projekty, spíš skriptování. Psal jsem si nějaké pomocné programy k bakalářce a diplomce. U bakalářky šlo o analýzu souborů se síťovým provozem, u diplomky šlo o nějaká měření a sběr dat ohledně šifrování disků.

 

 

Odbočíme-li od těchto aplikací přímo ke hrám... jak vypadá taková hra pro nevidomé? A v čem všem se liší od běžných her?

Taková hra většinou nemá žádný grafický výstup. A často taky pracuje s nějakou formou prostorového zvuku, i když ne nutně. Ale principy zůstávají často stejné, jako u normálních her. Jen se některé věci musí trochu upravit. Všechno, co je normálně vidět na obrazovce, musí být nějakým způsobem zprostředkováno. Nabídky, mapa, předměty, postavy... všechno. Takže buď je to zprostředkováno nějakým popisem a nebo nějakým zvukem. Jedná-li se třeba o karetní nebo deskové hry, je to celkem jednoduché. Počítač vám hlasem popisuje, co se děje, co dělá protivník, umožňuje vám pomocí kláves prohlížet karty nebo hrací desku a provádět akce. Pokud se ale jedná třeba o střílečky nebo simulátory, dostávají se do hry zvukové efekty, které vám třeba říkají, kde se nachází nějaká příšera nebo jestli vám v cestě stojí překážka. Takové hry můžou být velice složité a může trvat netriviální množství času se je vůbec naučit ovládat.

Většina strategických her nebo obecně her, kde se pohybujete s postavou, zavádí nějaký souřadnicový systém, abyste se mohli orientovat. Zároveň se často pracuje opravdu se souřadnicemi, kdy jsou například všude pravé úhly atd., což v normálních hrách nebývá. Jde o to, že kdyby se měla postava pohybovat třeba v zaoblených chodbách, hráče by to celkem mátlo a nemělo by to přidanou hodnotu.

Většinou se hry ovládají klávesnicí, ale existují i hry, které používají myš nebo speciální herní ovladače jako třeba volant. Existují i hry pro dotykové telefony, které k ovládání používají dotykový displej nebo třeba senzory telefonu. Pak existuje ještě kategorie textových her. Tyhle hry většinou nevznikly přímo pro nevidomé, ale vzhledem k tomu, že se pro hraní používá jen text, jsou často jednoduše přístupné. Do této kategorie řadím také online hry hrané v prohlížeči (Travian atd), či MUD hrané přes telnet (Miriani). Z počátku bylo hodně her placených, teď je jich většina k dispozici zdarma a jsou často srovnatelné s těmi placenými. Existují všechny možné žánry, deskovky... Většina her je pro operační systém Windows, ale s příchodem HTML5 se objevují i první opravdu multiplatformní vlaštovky, strategické hry, střílečky, RPG, závodní, simulátory, plošinovky... na co si vzpomenete. Největší přehled najdete na stránkách audiogames.net. Ani multiplayer není v těchto hrách nic neobvyklého. Už před více než dvanácti lety existovala úvodní hra Topspeed, která se dala hrát po místní síti nebo i po internetu. Existoval dokonce mód pro hru Quake, který ji dělal hratelnou pro nevidomé. Fantazii se meze nekladou.

 

Existuje hra, na kterou nedáte dopustit? 

Mám rád spíše propracovanější hry než ty jednoduché. Jednu dobu jsem propadl hře Swamp, které se věnuji i na svých stránkách. Jednalo se o výbornou FPS střílečku, která zaváděla spoustu nových prvků. Byla zasazena do postapo prostředí, kdy se vaše postava pohybovala mezi nekonečným množstvím zombie. Ze začátku bylo jediným úkolem prostě postřílet co nejvíc zombíků. Otáčení postavy se ovládalo myší, což bylo do té doby u her pro nevidomé nezvyklé. Zároveň do té doby ve většině stříleček byla postava vybavena nějakou pomůckou, která jim pomáhala zaměřovat nepřátele. V této hře taková pomůcka chyběla a člověk musel opravdu dobře poslouchat. Pak se ke hře přidal multiplayer a vzniklo vlastně něco na bázi Counterstrike, ale se zombie tématikou a to zcela zdarma. Existovali i společné mise, takže pár nocí jsem takhle propařil s kamarády na Skypu a bylo to super. Hra dostávala nové a nové funkce.

Bohužel i nevidomí jsou jen lidi a i mezi námi se našlo pár takových, kteří se snažili ve hře různě podvádět. Došlo to tak daleko, že se autor rozhodl hru zpoplatnit. I když to není moc drahé, už se mi to nevyplatí, protože si na to při práci neumím najít čas. Nic to ale nemění na tom, že to byla naprosto přelomová hra. Singleplayer je pořád zdarma, takže si ji můžete klidně vyzkoušet.

Před pár lety vznikl výborný letecký simulátor Eurofly od slovenského autora. Je to velmi přesný simulátor letadel, který je zároveň velice poučný, protože jako podklad využívá skutečná mapová data. Takže ro milovníky dlouhých a přesných simulací je to jako stvořené. Simuluje se všechno od tankování, přes práci s vysílačkou až po nouzové situace. Zajímavá je strategie SoundRTS, která je trochu jednodušší než Castaways, ale je více zaměřena na boj. Přirovnal bych ji možná k Warcraftu. Multiplayer je samozřejmostí.

Má oblíbená hra na ukrácení dlouhé chvíle se jmenuje Death on the road. Princip je jednoduchý – jste nevidomý a přecházíte silnici. Jenže po silnici jezdí auta a řidiči prostě nebrzdí. Takže si musíte vyhlédnout ten správný okamžik. Za každý úspěšný přechod cesty získáváte body... a k tomu spoustu zábavných zvuků a miniher. A takhle bych mohl pokračovat. Ať chcete řídit metro, válečnou ponorku nebo vesmírnou loď, nějaká hra se pro vás najde.

 

Hra Eurofly, zdroj: simulshop.com

 

Na závěr bych se Vás ráda zeptala na programátorské plány do budoucna. Je něco konkrétního, čemu byste se chtěl věnovat? Máte popřípadě stanovené nějaké specifické programátorské cíle?  

Před dvěma měsíci jsem nastoupil do své první práce jako programátor. Takže moje plány jsou zatím spíš hodně výhledové. Uvidím, kolik na to budu mít času. Myslím ale, že sám sebe nevidím vyloženě jako programátora, ale někde na pomezí mezi programováním a správou systémů. Nicméně pokud bych se měl opravdu zasnít, tak mým cílem je napsat hru, která by vidícím lidem nasimulovala to, jak se nevidomí orientují v reálném světě, a to včetně používání bílé hole. Ono by to vlastně nemělo být tolik těžké, odpadá mi práce s grafickým designem, ale i tak to asi zabere dost času. Reálnější mi přijde třeba opětovné zprovoznění výše zmíněného programu na čtení titulků k filmům či nějaká jednodušší hra pro začátek, třeba sudoku.


Děkujeme Vojtovi Poláškovi za zasvěcení čtenářů do světa nevidomých programátorů a sdílení jeho zajímavých postřehů. Vojtův blog plný nápadů a recenzí najdete na stránce www.vojtapolasek.eu



Připravila: Petra Pruden