Abyste si mohli zahrát Wherigo, musíte mít nějaké zařízení které kromě vlastní GPS obsahuje něco co se nazývá Wherigo player. Je to program, který umožňuje interpretovat scénář konkrétní hry, tzv. cartridge. V seriálu článků se pokusím popsat, jak to asi funguje uvnitř playeru. Předpokládám, že čtenáři tohoto článku už mají zkušenost s playerem (tzn. že nějaké to Wherigo už absolvovali). Nespornou výhodou bude i nějaké povědomí z objektově orientovaného programování, nicméně budu se snažit to vysvětlit tak, aby to pokud možno pochopili i neprogramátoři (ale zaručit to nemůžu).
Pozor – hned na začátku do toho vnesu trochu terminologického zmatku, protože
má v tomto případě vlastně 2 významy – jednak je to program interpretující scénář Wherigo cartridge, ale současně to znamená i přímo člověka, který zařízení s playerem drží v ruce a pohybuje se v terénu…
(soubor s připonou .gwc) je tvořena balíčkem obsahujícím jednak program v jazyce Lua, a dále tzv. média – nejrůznější obrázky, ikony a zvuky – které jsou zobrazovány či přehrávány playerem v konkrétních situacích.
Program v Lua popisuje definice objektů obsažených v cartridgi. Definicemi jsou myšleny nejen vlastnosti objektů (např. poloha zóny), ale rovněž i popis chování (reakcí) objektů na výskyt konkrétních událostí. Cartridge obsahuje objekty různých tříd (terminologie běžně používaná v programování – místo „třída“ by se dalo případně použít slovo „typ“ anebo „druh“).
Na následujícím obrázku je schématicky znázorněna cartridge, v ní obsažené třídy objektů, a šipky znázornující vazby mezi těmito objekty. Detailnější popis jednotlivých tříd bude uveden v dalším díle příspěvku.
Program (tedy zápis cartridge) není prováděn sekvenčně. Sekvenčně se provádějí pouze malé části programu – v terminologii builderu „script“, což jsou vlastně funkce (podprogramy) na úrovni jazyku Lua. Filosofie činnosti playeru (a také filosofie zápisu cartridge) by se dala popsat konceptem:
Event -> Action
tedy detailněji
jakmile < nastane událost > proveď < script - tzn. posloupnost příkazů >
Pozor – i když to svádí překládat „when“ ve smyslu „když“, nejde o podmíněný příkaz „if“ tak jak se používá v běžných programovacích jazycích, protože:
Interakce hráče s cartridgí
Stav či chování Wherigo cartridge v průběhu hry je tedy podmiňován nejrůznějšími události (eventy). Všechny tyto události nějakým způsobem generuje hráč – někdy je to zcela vědomě a explicitně (stisk tlačítka, vstup do do zóny kterou hráč vidí v playeru), jindy aniž si to třeba uvědomí (vstup do neviditelné zóny, otálení ve hře a mezitím vypršel časovač…):