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

PLAYER

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…

CARTRIDGE

(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.

hanacke-setkani-tvurcu-wherigo-objekty

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:

  • „if“ se vyhodnocuje jenom v okamžiku, kdy program prochází tímto příkazem
  • zatímco „when“ (tak jak se zobrazuje v builderu) je ve skutečnosti (tedy v jazyce lua) funkcí která je automaticky volána jakmile nastane určitá událost, např. function zoneKontejner:OnEnter()

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č…):

  • pohyb hráče (=GPS) vůči zónám
  • manipulace s Characters/Items pomocí Commands (přiřazených tlačítek)
  • odpovědi na Inputs
  • pohyb hráče po časové ose (Timers)
VN:F [1.9.5_1105]
Hodnocení: 4.8/5 (celkem 13 hlasů)
Pohled do útrob playeru (1. část), 4.8 out of 5 based on 13 ratings
Sdílej s přáteli:
  • Facebook
  • Twitter
  • Digg
  • del.icio.us
  • Google Bookmarks


Zaslat komentář


8 - seven =

Jméno: 
Email: 
URL: 
Text komentáře: