Špongia 2013

príprava - analýza zadania

2. časť – Analýza zadania

Pripomeňme si, čo nám hovorí zadanie:

Po prvé, v počítačovej hre musia vystupovať postavy – osobnosti. To vylučuje neosobné hry, ako sú skladačky a hlavolamy. Ale aj hry obsahujúce veľa figúrok, ktoré sú nezaujímavé ako jednotlivci, či už je to armáda alebo simulátor života v meste [SimCity]; azda s výnimkou armády tvorenej jedným supermanom a hromadou jednotlivo bezvýznamných poskokov [DotA].

V hre teda bude jedna hlavná postava alebo pomerne malá družina. Horná hranica je asi sedem postáv; pri väčšom počte sú niektoré postavy nevýrazné alebo sa príliš podobajú na iné. Hráč pritom nemusí využívať všetky postavy naraz; môže si do každej časti hry vybrať obmedzenú podmnožinu svojho základného tímu [Mass Effect], prípadne mu ju vyberie hra na základe určeného scenára [Betrayal at Krondor].

Po druhé, postavy sa musia postupne zlepšovať. Toto asi do väčšej alebo menšej miery spĺňa väčšina hier s postavami. Ešte aj v hre, kde panáčik iba ide dopredu a strieľa na všetko, čo vidí, zvyčajne časom dostane silnejšiu zbraň a špeciálne náboje. Dalo by sa diskutovať, či sa zlepšenie vybavenia považuje za zlepšenie postavy. Ťažšie je predstaviť si hru s postavou, ktorá by sa nezlepšovala vôbec. Jednou z možností je hra založená iba na príbehu, kde postava rieši nejaké úlohy a postupne sa tak dostáva do ďalších obrazoviek hry, nesúc na chrbte čoraz väčší batoh plný pochybných predmetov [Agent Mlíčňák]. Druhou možnosťou je hlavolam s postavou alebo dvojicou či trojicou postáv v hlavnej úlohe [Fish Fillets, The Lost Vikings].

Po tretie, hráč musí mať možnosť vybrať si, v čom sa jeho postava zlepší. Toto je náročná časť. Autor hry totiž nevie, ako presne bude hráčova postava uprostred hry vyzerať. Napriek tomu by hra mala byť ako-tak vyvážená, aby sa nestalo, že hráč so správne nakonfigurovanou postavou záver hry prejde aj so zatvorenými očami, zatiaľ čo iný hráč si vyberie kombináciu, na ktorú autor hry nepomyslel, a ocitne sa v situácii, ktorá je s danou postavou prakticky neriešiteľná. Prinajmenšom by sa nemal v takej situácii ocitnúť nečakane, s postavou, ktorá ešte predchádzajúcu miestnosť prešla v pohode. A nemala by existovať iba jedna správna možnosť rastu postavy – to potom nie je skutočný výber.

To všetko sa ľahšie povie než urobí...

Aké sú to vlastnosti, v ktorých sa postava môže ale nemusí zlepšiť? Niektoré sú kvantitatívne; všelijaké číselká, ktoré vstupujú do vzorcov. Hrdina má silu 20 a drží sekeru +3. Rúbe ňou do medveďa, ktorý má obranu 10, a spôsobí mu tým zranenie 20 + 3 – 10 = 13 životov. V nasledujúcom ťahu medveď so silou 13 udiera hrdinu; ten má prirodzenú odolnosť 3, k tomu brnenie +5 a štít +2; stráca teda 13 – (3 + 5 + 2) = 3 životy. Všetky tieto výpočty robí počítač automaticky; hráčovi sa môžu zobrazovať výsledky, ale niekedy postačí ubúdajúci pás vyjadrujúci zostávajúce životy. Keď hráč pobije dostatočný počet medveďov a iných zverov, dostane na výber, či si chce o 1 bod zlepšiť silu alebo obranu. Tým sa nasledujúce boje trochu upravia v hráčov prospech, ale hra to vykompenzuje nasadením silnejších protivníkov.

Kvalitatívne vlastnosti zase dávajú hráčovi možnosti, ktoré dovtedy nemal; napríklad možnosť zoslať počas súboja na súpera blesk alebo ho na jedno kolo zamraziť. Silnejší typ blesku môžeme považovať za kvantitatívne vylepšenie slabšieho blesku, ale kúzla, ktoré umožňujú súpera zmraziť, presunúť, postaviť na bojovom poli stenu a podobne, môžu viesť k zmene bojovej taktiky. Mimo boja môže byť kvalitatívnou vlastnosťou napríklad schopnosť plávať, šplhať alebo odomykať zámky pakľúčom, ktorá umožní dostať sa do cieľa alternatívnym spôsobom. Kvantitatívnou nebojovou vlastnosťou môže byť nosnosť, rýchlosť chôdze, dĺžka skoku, ale povedzme aj schopnosť vyjednať lepšiu cenu v obchode.

Ako zabezpečiť, aby sa hra dala prejsť s ľubovoľnou kombináciou vlastností? Najjednoduchším riešením je vytvoriť si testovaciu (bežnému hráčovi nedostupnú) postavu, ktorá sa nezlepšuje, čiže má počas celej hry rovnaké vlastnosti ako má hráč na začiatku. Ak dokážete hru prejsť s takouto postavou, hráč to už môže mať iba ľahšie. (Pokiaľ sa nestane, že niektoré zlepšenie je za istých okolností zhoršením. Hral som hru, v ktorej panáčik s vylepšeným skákaním nedokázal preskočiť jamu, ktorú predtým zvládal, pretože tentokrát pri skoku narážal hlavou do stropu.)

Ak sa však hráč výrazne zlepší, môže byť preňho takto testovaná hra príliš ľahkou. Riešením môže byť nedovoľovať dramatické zlepšenia. Sila panáčika nebude rásť od 1 do 100, ale od 101 do 200; najväčšia možná sila je iba dvojnásobkom najmenšej. Špeciálna superschopnosť mu dá navyše bonus 20% proti vybranému typu príšer. Ďalším riešením je poskytovať alternatívy, ktoré sa líšia iba názvom a dizajnom. Jeden hráč sa bude špecializovať na boj mečom, druhý na boj sekerou, ale jediný rozdiel bude v grafike, podobne ako rozdiel medzi šípmi a magickými strelami. Ak každá príšera ihneď priskočí k hráčovi, stráca sa tým rozdiel hoci aj medzi mečom a guľometom.

Vo väčšine hier postava počas hry získava body skúsenosti, za ktoré si potom môže kupovať vlastnosti. Je to najjednoduchšie riešenie, ale občas vedie k nelogickým situáciám, keď sa z postavy stane napríklad expert na lukostreľbu bez toho, že by v živote vystrelila jediný šíp; iba na základe toho, že získala veľa skúseností s rúbaním kostlivcov sekerou. V niektorých hrách sa teda vlastnosti zlepšujú ich používaním.

Ak dáte nebojové vlastnosti ako alternatívu voči bojovým, čiže ak sa hráč môže mnohým bojom legitímne vyhnúť tým, že sa potme preplazí okolo stráží, prepláva hradnú priekopu alebo vylezie po múre; potom odmeny neudeľujte podľa počtu zabitých nepriateľov, ale podľa splnených úloh, bez ohľadu na spôsob ich splnenia. Zamyslite sa aj nad tým, ako bude prebiehať bitka so záverečným bossom, pravdepodobne ťažším než všetci doterajší nepriatelia, pre hráča, ktorý investoval do rozvoja nebojových vlastností.

Ak hráčovi umožníte investovať do nebojových vlastností, nezabudnite vytvoriť dostatok príležitostí na ich využitie počas celej hry. Je trápne, ak sa postava na začiatku hry naučí plávať a potom celý zvyšok hry nenájde použiteľnú vodnú plochu, alebo ak máte zlodeja s pakľúčom, ale okrem tutoriálu a úvodnej miestnosti sa žiaden zámok v hre pakľúčom otvoriť nedá.

Z programátorského hľadiska (pamätajte, iba dva a pol týždňa na naprogramovanie a odladenie celej hry) si najmenej práce vyžadujú číselné vlastnosti vstupujúce do vzorcov. Použiť vo vzorci premennú namiesto konštanty je jednoduché. Vytvoríme si teda zoznam premenných a dialóg, ktorý ich zobrazí. Ten istý dialóg môžeme použiť aj na zvýšenie vybranej vlastnosti o 1. Tieto premenné ukladáme na disk a načítavame ich z disku spolu so zvyšnými údajmi hry.

O čosi viac práce si vyžadujú kúzla, pokiaľ ich postava nemá čarovať automaticky, ale podľa pokynov hráča. Potrebujeme zoznam kúziel, z ktorého si hráč vyberie napríklad magický blesk, a potom pravdepodobne výber nepriateľa, na ktorého tento blesk zošleme. Ak však už máme takýto systém vytvorený, môžeme ho využiť na vytvorenie ďalších typov bleskov, ktoré sa navzájom líšia iba názvom, obrázkom a číselnými hodnotami. Pointa je, že viac vlastností nemusí nutne znamenať viac kódu; môže to byť ten istý kód s rôznymi parametrami.

Pri každej vytvorenej vlastnosti sa teda oplatí zamyslieť, či sa z nej zmenou parametrov nedá vytvoriť iná zaujímavá vlastnosť. Predstavme si napríklad postavu lovca, ktorý dokáže z niektorých zabitých zvierat stiahnuť kožušinu (a tú potom predá za peniaze). Z programátorského hľadiska vyzerá kód asi takto: „ak má postava vlastnosť X a zabitý súper má vlastnosť Y, daná postava po boji získa predmet Z“. Vieme si predstaviť inú kombináciu hodnôt X, Y, Z, ktorá by tiež dávala zmysel, aj keď možno úplne iný? Alchymista môže zo zabitých magických tvorov recyklovať mágiu; černokňažník môže uväzniť duše inteligentných súperov; upír môže zo živých tvorov vysávať krv.

Alebo si predstavme postavu kováča, ktorý dokáže zo železnej rudy vyrobiť meč. To je z programátorského hľadiska kód: „ak má postava vlastnosť X, môže z predmetu Y vyrobiť predmet Z (za cenu Q zlatiek)“. Rovnakým mechanizmom môžeme vytvoriť tesára, ktorý z dreva vyrobí luk alebo štít; kuchára, ktorý z múky vyrobí chlieb alebo koláč; alebo hoci aj kňaza, ktorý z obyčajného šípu vyrobí požehnaný šíp +3. Je rozumné nepreháňať počet herných mechanizmov, ale ak ich už máme, môžeme z nich vyťažiť viac. Aby takto vytvorené vlastnosti nevyzerali príliš rovnako, môžeme voliť rôzne typy parametrov: kuchár môže variť lacné jedlá z bežne dostupných surovín; suroviny iných remeselníkov môžu byť vzácnejšie a ich pracovné postupy drahšie. (Rovnaký postup možno použiť nielen pre vlastnosti, ale aj predmety, atď.)

Keďže čas beží, treba si vybrať niektorú z uvedených možností. Narýchlo si viem predstaviť tri varianty vyhovujúce zadaniu, ktoré mi pripadajú ako potenciálne zaujímavé hry a viem ich dostatočne jasne špecifikovať, čiže nakresliť všetky potrebné dialógové okná a zostaviť konkrétny zoznam vlastností, príšer a predmetov, aby zvyšok bola už iba mechanická práca. (Pretože ak to nedokážem takto rozbiť najneskôr do začiatku budúceho víkendu, nie je šanca hru dokončiť v danom termíne.) Sú to:

Lukostrelec a šermiar proti kostlivcovi

a) Klasický „dračák“, čiže bojovanie a čarovanie, zbieranie a predávanie zvyškov po obetiach, nakupovanie nových zbraní a kúziel, plnenie úloh, získavanie skúseností a úrovní povolania. Družinu tvoria tri alebo štyri postavy. Chodia po mape sveta alebo po mape niektorého mesta; boj sa vždy odohráva v samostatnom okne. Rôzne zbrane, ktorých použitie môže byť podmienené úrovňou povolania alebo výškou vlastnosti; ale v princípe sa delia na sečné (nablízko) a strelné (na diaľku). Rôzne kúzla, ktoré možno začarovať na seba, na určené miesto na mape, alebo vystreliť niektorým smerom; môžu pridávať alebo uberať životy, dočasne upravovať vlastnosti figúrky, vyčarovať dočasnú pomocnú figúrku. Obchody, v ktorých možno nakupovať a predávať predmety; každý obchod má svoj zoznam predmetov. Cechy, v ktorých si možno kúpiť alebo vylepšiť nejakú schopnosť (kúzlo), prípadne získať vyššiu úroveň daného povolania. Číselné vlastnosti používané vo vzorcoch útokov a kúziel, ktoré možno za daný počet skúseností zvýšiť. Mapa sveta, príšery, predmety a kúzla sa všetky načítavajú z konfiguračného súboru – akonáhle je herný mechanizmus hotový a odladený, možno v pohode dopĺňať obsah, pričom v ľubovoľnom momente je hra v princípe odovzdateľná. V posledné dni už nový kód nepridávam; v najhoršom prípade opravujem chyby existujúceho. To platí aj pre všetky ostatné nápady.

Bludisko s malými figúrkami

b) Hra typu „roguelike“ s jedným hrdinom, ktorý zostupuje do hĺbky náhodne generovaného bludiska, až kým sa mu nepodarí na najnižšom poschodí poraziť hlavnú príšeru. V 99% prípadov však hrdina po ceste zomrie a hráč musí hrať od začiatku, v novom bludisku. Na niektorých miestach v bludisku si môže kúpiť novú vlastnosť, ale z finančných dôvodov si nemôže dovoliť kúpiť všetky (a niektoré z nich sa navzájom vylučujú). Príkladom vlastnosti môže byť bonus na určitý typ zbrane alebo proti určitému druhu príšery, prípadne nové kúzlo. Opäť, po naprogramovaní základného mechanizmu je to len otázka dopĺňania nových položiek do konfiguračných súborov.

Ponuka práce v McDonalde

c) Ekonomický simulátor života jednotlivca (bez bojovania). Hráč si každý deň vyberá jednu z možností v menu, a podľa tejto voľby sa upravia niektoré jeho vlastnosti. Základný cyklus tvorí chodenie do práce (zarábanie peňazí na základe schopností) a štúdium (vylepšovanie schopností za peniaze). Niektoré činnosti vyžadujú predmety (ktoré si treba kúpiť), iné vytvárajú predmety (ktoré možno predať alebo ďalej využiť). S dostatkom času by sa dalo naučiť a kúpiť všetko, ale práve času je nedostatok – hráč musí dosiahnuť svoj cieľ (majstrovstvo vo vybranej disciplíne) za stanovený počet dní. Hru možno ďalej skomplikovať rozdelením mapy na mestá, z ktorých každé má svoje výhody a nevýhody, ale presun medzi mestami stojí peniaze a čas. Z uvedených troch možností sa táto asi najľahšie programuje, ale je najnáročnejšia na vyváženosť.

Ďalším krokom je teda definitívne zvoliť jednu z týchto možností (alebo nejakú novú, ale radšej už nestrácať čas špekulovaním), rozkresliť si všetky potrebné dialógové okná, vytvoriť provizórne konfiguračné súbory s dvoma-troma položkami každého typu, a začať písať kód. Ak má jeden člen tímu viacero rolí, kód musí byť urobený prvý, pretože ak sa ten nestihne dokončiť, hra ako celok bude nehrateľná.

viliam@bur.sk