Technoplaneta – šifrovací hra pro děti

Zápisky orgů

Textovka

Příběh letošního ročníku Technoplanety se začal odehrávat mnohem dříve, než by se na první pohled mohlo zdát. Nápad vytvořit speciál ve formě textové hry se začal rodit v našich hlavách asi už od přečtení reakce „Ha ha ha, ale příště kratší zadání.“ na náš stroj času, ale poprvé jsme se o jejím vytvoření skutečně začali bavit až někdy na jaře 2009.

Poměrně rychle jsme se dohodli, že bychom to mohli zkusit, ale dokud pořádně nepromyslíme technickou stránku věci, nemá vůbec cenu uvažovat o nějakém příběhu či šifrách v něm. Rozešli jsme se tedy s tím, že se na to podívám. V té době jsem ještě netušil, že mám o zábavu vystaráno na několik dalších let.

Takže jak na to? Všichni přeci víme, že naprogramovat textovku je vlastně velice jednoduché, pravda? Stačí mít sadu popisů lokací, sadu popisů předmětů a ve smyčce reagovat na pohyb hráče a příkazy seber, polož, prozkoumej a použij. Příkaz „použij“ zařídí vše potřebné – jakmile hráče napadne např. „použij smeták na postel“, hra napíše „Zašťoural jsi násadou smetáku pod postelí a objevil tenisák“ (ahoj Kaine) a přičte bod. A aby hráč nezkoušel použít každý předmět na všechno, nalíčí autor do hry smrt číhající na hráče za každým patníkem.

Tak nějak, zjednodušeně řečeno, fungovaly textovky od pradávna. Byly to poměrně složité hlavolamy, na jejichž vyřešení bylo potřeba spousta trpělivosti a někdy i mnoho poznámek. Ale obávám se, že u takové by dlouho nevydržely ani ty nejotrlejší týmy. My jsme se chtěli více přiblížit moderním textovým hrám, které vznikají na anglicky hovořící scéně. Od konce komerční éry udělal celý žánr v rukou nadšenců obrovský skok kupředu. Dnes se klade mnohem větší důraz na příběh, na literární kvalitu a realisticky se chovající postavy. A puzzly, pokud vůbec ve hře jsou, tak musejí být vždy logické, férové a dobře napovězené.

Ale nejen to. Chceme-li hru stravitelnou pro úplné začátečníky, musíme mít na začátku tutoriál, který ukáže základy ovládání (návody přeci nikdo nečte), na každý složitější krok musíme hráče předem připravit a nakonec pro ty, kteří přeci jen budou potřebovat s hrou pomoci, potřebujeme kontextově citlivou nápovědu, která jim pomůže se pohnout vpřed a přitom je neobere o všechnu radost z vlastního řešení.

Začal jsem se tedy rozhlížet po internetu, abych viděl, jak se v současné době textové hry tvoří, a brzy narazil na TADS – jeden ze dvou vůbec nejznámějších systémů pro tvorbu textových adventur v angličtině. Ze zvědavosti jsem koukal, jak uvnitř pracuje a zjistil, že je mj. i velmi pečlivě navržen s ohledem na překlad do cizích jazyků. Mělo to ale háček – v té době ještě nikdo na světě žádný překlad nevytvořil a těch několik lidí, kteří to zkusili, tak pohořeli se slovy, že je to „fakt hardcore“. Přesně v ten okamžik to začalo být zajímavé!

Zkusil jsem a šlo to překvapivě hladce – po prvním roce fungovala malá demohra, po dalších dvou už byl překlad natolik hotový, že bylo potřeba přijít s plnohodnotnou hrou a překlad dál ladit na ní. I tak je to ale spousta práce – 6000 řádků knihovních hlášek a přes 12000 řádků jazykových algoritmů. Při práci, podnikání, učení kroužku a pořádání Technoplanety na textovku zbyde sem tam chvilka.

Hned o prázdninách po loňském finále jsme se sešli a začali uvažovat nad příběhem. Chtělo to nějaký pěkný námět, rozmyslet osnovu a někdy koncem září začít psát texty a programovat, aby bylo před vánoci hotovo. Z různých nápadů se nakonec vyvrbilo sci-fi (nad něčím jiným asi ani neumíme uvažovat), ale i když jsme měli vymyšlené prostředí, stále nám neseděla kostra příběhu. Potřebovali jsme konečně vymyslet, co bude ta nekalá činnost, která se na asteroidu odehrává a jak zařídit, aby hráč objevoval zápletku postupně, jak prochází hrou. Vše musí být přesně synchronizované, aby v momentě, kdy hráč odhalí podstatu, došlo k finální konfrontaci. Přitom ale do té doby musí mít hráč co největší svobodu, jakým způsobem a tempem příběh objevuje.

A čas běžel a běžel, to on potvora umí. Stále se dokola bavíme nad kostrou, stále spousta věcí nesedí. Jak donutit hráče, aby zaslechl podezřelý rozhovor? A jo, pošleme ho podruhé ven – to bude neplánované a tudíž kapitána s velitelem nachytá při odklízení bedny. A co bude vlastně v té bedně? Najde ji hráč na konci své cesty? Raději ji někam odklidíme pryč, aby nekomplikovala závěr. Stačí nám, že hráči získají podezření a motivaci pátrat po stopách u velitele.

Až teprve těsně před vánoci příběh začíná dávat smysl. Upřesňujeme mapu, důležité předměty, domýšlíme šifry a puzzly. Pavel píše popisy, Ája dialogy a já programuji. Milanův jinak skvělý nápad na šifru pro počítač několikrát zjednodušujeme, protože mladší testeři text ne a ne zahlédnout. Původně byl anglicky a pozpátku.

Máme však šílené zpoždění, protože je zároveň potřeba řešit i normální šifry do internetových kol. To je ten pravý čas na pořádnou jobovku: „Hele, když dám načíst uloženou pozici, tak to celé spadne, hodí to segfault.“ Spadne celá virtuální mašina? A kruci, to není nějaká snadno opravitelná chyba v kódu hry, to je někde v TADSu samotném. Důkladně chybu izoluji, aby byla šance, že na ni Mike přijde a opraví. Ale bůhví, kdy se k tomu dostane. Naštěstí lze uvolnění paměti, při kterém dochází k pádu, zakomentovat a tím chybě předejít, byť za cenu vyrobení malého memory leaku.

Řádky kódu postupně přibývají, ale čas je stále proti nám. A já ji tolik chci stihnout ještě letos, dokud tu máme ty naše „ukecané“ týmy. První dvě kola ještě koordinuji, třetí a čtvrté už komplet přenechávám na ostatních, protože hra přibývá příliš pomalu a je potřeba značně zrychlit. „A dej tam tu Qazi Resistentní“, povídám Pavlovi. Suším ji v sytému už od předloni, protože mě všichni zrazují, že na to děti přece nemohou přijít: „QR kód jsem v životě neviděla“. Nakonec jsem rád, že jsme ji dali. Dokonce i Škrkny, které mám zapsané spíše jako kritiky, tak hodnotí, že je nezklamala. Hurá!

Nakonec se počítadlo zastavuje na cca 16500 řádkách zdrojového kódu a můžeme začít testovat na studentech a kamarádech. Zbývá však minimum času a ještě je potřeba rozběhat webové hraní a ukládání pozic na server – finiš je plný bolehlavů. Plánovanou snídani na začátku, hru v tabletu a detaily v jídelně jsem musel odpískat. Nasazení na server řeším do pozdní noci, Šachista mezitím vyzvídá, zda ještě dostane šanci na vítězství. Kdyby tak tušil, co ho čeká…

Ráno se hned běžím podívat, jak to vypadá. První příspěvky ve fóru mi moc sebedůvěry nedodávají. Jak budou soutěžící reagovat? Nechají se strhnout a ponoří se do hry v závodu o vítězství? Nebo budou natolik zaskočeni, že se na hru vykašlou? Až Filip mi trochu zlepšuje náladu, vypadá zaujatě. A Heuréka se brzy utrhuje a dostává do vedení, první šifru a 14 bodů získává už v 7.03. Ledy jsou, zdá se, prolomeny, ale bohužel se ukazuje, že pár chyb prošlo do finální hry. Třeba napovídač, který tak usilovně doporučoval nápovědu některým týmům, až se hra nedala hrát. Ty, co mě oslovili, jsem se snažil obcházet a pomáhat jim přes zabudované kecátko, které také vzniklo exkluzivně pro Technoplanetu.

Během dne se hra opravdu už rozjíždí a byť ji žádný tým nedohrál celou hned první den, tak řada týmů znatelně pokročila. The Team kolem desáté večer vede s 51 body a pár minut před půlnocí Slaďáci The Next Generation ovládli robota a mají 46 bodů, což je řadí na druhou příčku. TáborLO a Tojejedno se drží za nimi. HarlemShake dokonce skóruje ve čtvrt na pět ráno – au!

Boj o prvenství mezi sebou svádí několik týmů v úterý odpoledne. The Team se ale na dobré dvě hodiny zasekl, protože přehlédl své vozítko, a tak nenašel laser. V té době už Slaďáci i Sherloci dávno luští poslední šifru. Nakonec se ale The Team k šifře též dostává a na rozdíl od ostatních, kteří stále zkoušejí počítat příklady a nemají ten správný nápad, ji má velice rychle vyřešenou a vyhrává. Další týmy postupně následují, ale několik jich zkoušelo hádat odpovědi tak dlouho, že uhodli správnou odpověď omylem (šance byla řádově 1:100).

Nakonec textovka dopadla poměrně dobře, všech pět šifer dokončilo 56 týmů a hranice mezi úspěšnými a těmi, kteří ji nehráli či jen vyzkoušeli, byla poměrně ostrá. Odpovídá to pátým kolům i v jiných ročnících. Když dorazil ve čtvrtek Žirafáček na kroužek programování, tak jsem samozřejmě hned vyzvídal dojmy a myslím, že moment překvapení se opravdu povedl. Tohle už jen tak nezopakujeme. Jeden z veteránů se dokonce do hry zapojil právě díky textovce a kladně ji pak hodnotil, čímž mi udělal velkou radost. Jen Ráchel si stěžovala, že proseděla u počítače hodně času. Trochu bych si dloubl, nezkušeným testerům trvala hra cca 6,5 hodiny a zkušený hráč by ji zvládl pod 2 hodiny ;-)

Finále

Tak konečně je za námi internetová část a můžeme dávat dohromady šifry na finále. Když máme většinu šifer připravených, vyrážím testovat s In Aenigmibus a i když panuje venku nefalšované Technoplanetí počasí, Ráchel se ven nechce, a tak se předpremiéra Technoplanety mění na narozeninovou párty hru u stolu. První šifry jdou jedna dvě, až od bludiště se postup trochu zpomaluje. Když jsem vytáhl diodu, Dan hned vytáhl svoji i s fixou a ihned začal zkoušet, zda je to to samé. Jak jsem byl naivní, když jsem si myslel, že to bude pro účastníky něco nového, ale zřejmě se jedná o celkem běžnou výbavu školních penálů! Ale hurá, hra funguje celkem hladce. Díky za pomoc.

V neděli po poledni se stále utápím v sázecím programu ve snaze dodělat noviny do zveřejnitelného stavu, když se na fóru začínají týmy bavit o záplavách v Hostivaři. Co to? Raději osobně vyrážím do Hostivaře se podívat, co se vlastně děje. Ano, je pravda, že poslední dny pršelo, ale do úterka by se to mělo trochu vybrat, ale povodeň? Park je docela promáčený a skutečně je pod hrází Botič rozvodněný. To je tedy docela zásek! Právě na most pod výpustí směřuje šifra Bubliny a ta se nedá tak snadno předělat, je závislá na krátkém jednoslovném řešení. Ale daleko větší starost nám dělá celkový vývoj situace, protože se ukazuje, že stoupá i Vltava a dopravní podnik plánuje omezit provoz metra. Ne, že by se pro nás Pražany něco zásadního změnilo, MHD bude jen pomalejší a zmatenější, ale pro týmy z jiných měst by taková komplikace byla vážným problémem. To spolu s neutuchající mediální masáží rozhodlo – i kdybychom hru odehráli, řada týmů nepřijede, protože se budou bát. Odložením na září uděláme velký zásek, hlavně pro týmy ze ZŠ, které se rozprchnou na jiné školy, ale i tak máme šanci na lepší účast. Snad jediný tým, kterému uděláme radost, je URNA, která na původní termín nemohla dorazit celá.

Tak konečně se finále přiblížilo. Vše přes víkend doděláváme, tiskneme a sáčkujeme. V pondělí si s hrůzou uvědomím, že bych měl Slovákům přeložit přísloví, aby se nezasekli na gramatických odlišnostech. Přeci jen ve finále je málo času. V pozdních večerních hodinách tedy s jejich panem učitelem zadání překládáme. Kolem půlnoci jsme šifra i já hotoví, jdu zálohovat a pak spát.

Ráno všichni míříme do parku. Autem, MHD a naši nejmladší pomocníci dokonce na kole. I Lolky sedí v kupé vlaku mířícího na Prahu a když jeden nahodilý spolucestující odchází, povídá na rozloučenou: „Vy jedete na finále Technoplanety? Jó, moje dcera také jezdívala…“.

Na místě nás dost zdržela registrace týmů a tak začínáme o čtvrt hodiny později, než jsme chtěli. Ale jinak se začátek povedl podle představ – pozornost týmů upoutalo úvodní povídání a tak jsme mohli nenápadně na břevna fotbalových bran pověsit dva přístroje ukazující podivné zelené symboly. S úvodní šifrou se obvykle snažíme týmy nějak trochu překvapit a otestovat jejich pozornost a důvtip. A protože loni někteří soutěžící vyhmatali v zalepených obálkách 3D brýle, tak mi přišlo vtipné letos do obálek dát zadání, na kterém bude chybět zadání.

Hloučky kolem bran se pomalu zvětšovaly a zajímavé je, že ty nejlepší týmy zde zdaleka nebyly mezi prvními. Zahlédl jsem Šachistu a jeho výraz ve tváři, když poprvé pohlédnul na přístroj, byl výmluvný. Po finále se tomu ale smál. Samotnou šifru ovlivnilo trochu posunutí finále, byla totiž založena na Ornamentu, na který jsme doufali, že si všichni hned vzpomenou, a budou řešit hlavně problém synchronizace – bylo nutné být v jeden čas na obou místech a zapisovat, co krabičky ukazují, jinak vyšly nesmysly.

Mezitím nám začínají zamotávat hlavu některé týmy, které si stěžují, že jim nejdou odesílat SMS zprávy. Koukali jsme na celý proces s nimi, abychom se ujistili, že vše dělají správně. Dělali – zaregistrovali mobil, přišla jim uvítačka a když na ní odpověděli, mobil nic ani neodeslal. Zkusili druhý mobil, ejhle to samé. Zkusili třetí mobil a najednou vše funguje. Nejméně jeden tým se však nedopsal z žádného svého mobilu a tak jsme je do výsledků doplňovali z papírových pořadníků. Až teprve druhý den jsem se dozvěděl, v čem byl problém. T-mobilu se zhroutila část mobilní sítě – vypadl jeden ze serverů s databází telefonních čísel a tak určitá část zákazníků (odhady hovoří o desítkách tisíc telefonních čísel) měla problémy. T-mobile sice problém vyřešil ještě během noci, ale u některých (zvláště chytrých) telefonů přetrvávaly problémy i následující den, kdy probíhalo naše finále. Příště si musíme vzpomenout na IT Crowd a suše poradit: „A zkoušeli jste ten mobil vypnout a zapnout?“

Za nápad na další šifru vděčím Slávkovi. Onehdy jsem se mu svěřil, že mi pořád chybí něco pěkného a lehkého na začátek a že už jsem docela zoufalý, protože všechny pokusy o něco jazykového ztroskotaly. A on se tak krátce zamyslel: „A nezkoušel jsi udělat něco s takovými těmi vědeckými příslovími?“ A bylo.

Následující šifry jsou spíše mechanické a zaměřené na pečlivost a optimalizaci, zde se musejí týmy trochu roztáhnout, než vtrhnou signalizovat na louku. Dvojku měli testeři asi za osm minut, zapisovali ji ve třech lidech do jednoho papíru najednou. Sáhněte si do svědomí, jak dlouho jste ji luštili vy!

Na malé louce jsme rozdělili týmy na dvě části a dali jim za úkol si na dálku předat heslo. Zatímco první týmy signalizovaly semaforovou abecedou (zřejmě hlavně pod dojmem novin), další zaujaly kolikrát kreativnější přístup a heslo hráli.

Úspěšní hned na tom samém místě dostali další šifru Bludiště, která byla pro některé týmy oříškem. Někteří se opakovaně snažili bludištěm projít (jít cestou směrem od horní strany až dolů). Jiní nevěděli odpověď na to, kam mají jít ani po vyluštění, když se jim vytvořila písmena ZOO. Byli jsme svědkem, kdy celý tým nechápal, co mají dělat, jeden účastník se zvedl a najednou viděl místo „čar“ ona tři písmena. Byla to výborná ukázka aha-momentu. Když se přesně tato situace stala ke konci Technoplanety, onen účastník byl tak šťastný, že na celý altánek začal hlasitě vykřikovat „Já to věděl, že to nejsou kruhy, je to zoo, jdeme do zoo. Zoóóóó.“ Tím i ostatní týmy věděly, kam mají jít.

Na rohu ZOO koutku čekala „želví“ šifra, jak ji pokřtil The Team. Pomáhali nám s ní členové týmu In Aenigmibus (Dan si toto stanoviště zabral se škodolibým úsměvem asi nanosekundu po tom, co jsem se ptal, kdo chce kde být) a rozdávali příchozím LED diodu se dvěma články k napájení. „Svítí, můžeme jít dál?“ povídá jeden tým. Kdepak, to není jen tak obyčejná modrá dioda. Tahle svítí na pomezí mezi viditelnou a UV částí spektra, takže některé látky v jejím svitu světélkují. Většina týmů zkoušela hned svítit na zadání, ale orgové jsou vykutálení, takže pokreslili mapu. Nejvíce líto nám bylo Vosy ve škole, která si šifru vychutnala až do dna. Naopak asi nejrychlejší byla URNA, která po tři šifry vedla.

Zato na další šifře jsme URNU pohřbili. A přitom je to šifra, na kterou jsem poměrně hrdý, protože vyšla celkem pěkně. Vlastně právě kvůli ní jsme dávali semafor i do čtvrtého kola, do novin a udělali signalizaci na louce. Pak už šlo jen o nápad použít znovu semafor, tentokrát však obráceně.

Hádě dole pod hrází bylo spíš na odlehčení. Tady právě byl v červnu Botič tak rozvodněný (mimochodem název Botič je odvozen od slova botění, což ve svém významu znamená rozvodnění), a trasa hry neprůchodná. I během finále bylo kolem cesty spoustu lepivého bahna a jednoho kluka z Pardubic bahno elegantně zulo, až oškrabával bahno z ponožky.

Morseovka proslula asi hlavně tím, že definitivně zpečetila Škrknám jejich oblíbené druhé místo. Největší problém byl najít, co všechno jsou tečky a co všechno čárky a nesplést se při tom. I když třeba u týmu Tesavonaty byl spíš problém uvěřit, že už mají vyluštěno.

Pak už jen algebrogram a v cíli na týmy čekal ještě praktický úkol odpálit raketu na octový pohon. „A fakt to musí mít špičku?“ povídá Šachista a kouká trochu bezradně na kus papíru. „Ano, souhlasím, jsme tragičtí.“ To Urňáci se k úkolu postavili mnohem akčněji, špičku vyrobili v mžiku a díky rychlosti se ještě dostali na bednu, přestože původně do cíle dorazili čtvrtí. Dříve či později se raketu podařilo odpálit každému – aby ne, šlo spíše o efekt. Jen jeden tým ale schopnosti octu a jedlé sody poněkud přecenil, když raketě vyrobil i trysku (díru do víčka). Ale nevadí, náhradních víček jsme měli dost.

Trochu jsem se bál, že i díky krabičkám na začátku bude těžší, než loni, ale nakonec jsem byl příjemně překvapen, kolik týmů došlo až do konce. Na stupních vítězů se letos žádné překvapení nekonalo, ti nejlepší hrou propluli tryskovou rychlostí, ale nemusíte se bát, příští rok už ve finále nebudou. Letos nám odrostla jedna dost výrazná generace hráčů. Jsem moc zvědav, kdo je nahradí?

A to je asi tak vše. A cha, myslím, že to mám delší než Ïvča i Šachista dohromady.