pondělí 15. prosince 2014

Poslední Ludum Dare aneb Co se nepovedlo

Velká nevýhoda Ludum Dare soutěže (a ostatních soutěží podobných té Ludum Dare) je nemožnost hru jakkoli vyzkoušet, případně vyhnat bugy a vylepšit původní plán, který jste si na začátku soutěže napsali tužkou na papír. Není na to čas! Soutěž je nastavena tak, abyste měli čas pouze na vyhotovení nápadu, ale už ne na jeho vyzkoušení a případné scratchování toho či onoho a nahrazení něčím lepším, co vás napadlo až při tvorbě, během Ludum Dare tranzu.

Takže musíte střílet docela nízko, resp. nemít přehnaně ambiciózní hru, protože jinak to taky může být vaše poslední Ludum Dare - ono mít u hry komentář "proč sem dáváš takový svinstvo a marníš náš drahocenný čas" (komentář, který jsem skutečně viděl u jedné hry!) může mít jistý negativní vliv na další participaci jejího tvůrce. Minimálně to platí, pokud s tvorbou her teprve začínáte.

Co se mého tvůrčího snažení týče, už s první hrou jsem si málem natloukl obličej, když jsem se zasekl na programátorsky ošemetné obrazovce výběru budov, kde mi v programu dělala nepokoje malinká, zato podstatná, chybička. Vyřešil jsem ji pár minut před smrtící čarou. V případě druhé hry jsem se nepouštěl do žádných experimentů, využil jsem pouze kód, jenž jsem bezproblémově ovládal. No a v případě třetí a poslední, čtvrté, hry jsem už měl nakódováno podstatně více, takže jsem si mohl dovolit uvést i nějaké ty maličko složitější prvky. Všechny jsou to ale malé hříčky, dá se říci, určené pro mobil a tablet. Věřím, že s rostoucí zkušeností s kódováním se dá mířit výš, co se velikosti hry týče a nemít při tom obavy, že se zaseknu na něčem podobném, co mi nepříjemně rozbušilo srdeční orgán u prvního herního kousku.

Z komentářů u her na Ludum Dare stránce jde možná poznat, že porota na Ludum Dare (porota = soutěžící) vlastně ví, v jak krátkém časovém limitu je hra vyráběna. Častý problém u her z Ludum Dare je jejich vlastnost být zábavnou jen na chvíli. Ono, čím delší dobu s kteroukoli hrou trávíte, tím více se odhalují její negativní stránky. Hrůza. Pokud by hry z Ludum Dare měli hodnotit skuteční herní novináři, snad všechny hry, krom klonů nesmrtelného Tetris-e, by byly ohodnoceny pod téměř nepoužívaným číslem 5. A to by znamenalo, že by se do "nezávislé" herní vývojářské scény nehrnuly ženy noví vývojáři a postupně by tato scéna buďto zanikla anebo by fungovala nadále, ale tvořili by ji Timové Schafferové a podobní. A bylo by jich podstatně méně.

Proto se vyplatí malou hříčku postavit na jednom nápadu, o kterém víte, že bude fungovat. V Tetrisu padají cihličky a vy víte, že to funguje. V Pacmanu baštíte tečky v bludišti, a víte, že to nemůže nefungovat. V Defend The Surface hážete na tučňáky ledovou cihličku a prostě víte, že to funguje a nic víc k tomu netřeba vymýšlet dalšího.


A pak je tu můj poslední herní výtvor One Screen Universe, podle mnohých "cool game", která staví na střílení meteorů objevujících se odkudsi, ani nevíte kde a už se k tomu nemusí nic dalšího vymýšlet; v takovémto stavu to, minimálně pro Ludum Dare, stačí. Jenže, přesto se tu cosi pokazilo, ono "objevování meteorů kdovíkde". Během Ludum Dare jsem vymyslel kapku složitější způsob vyrábění meteorů mimo obrazovku za účelem posílání na hráče s nahodilostí spíše větší, než menší. A tam jsem docela narazil. Zprvu to ale myslím vypadá hodně dobře. Nahodilost je fantastická - v podstatě každá hra je jiná. Funguje to parádně až do chvíle, než program začne posílat vlny, resp. než pošle druhou, třetí vlnu. Pošle ji totiž několikrát a vytvoří tak okolo obrazovky Kuiperův pás, jen s mnohem větší hustotou.

Funguje to následovně. Po sestřelení x, tedy pěti, meteorů se aktivuje vlna mimo obraz, a to znamená: Existuje dvanáct spawnů (okolo obrazovky). Na těchto souřadnicích se na začátku "vlny" může objevit meteor. Objeví se jich šest, na souřadnicích náhodně zvolených spawnů. Jejich cíl je také víceméně náhodný: jeden z dvanácti spawnů anebo střed obrazovky, kde sídlí hráčova raketka Restore, a to znamená, že meteor přeletí přes obrazovku, možná, a je docela velká pravděpodobnost, že si za cíl zvolí hráčovu raketku.

Jak jsem tedy napsal, ve verzi, která je teď na Ludum Dare, se po nějaké minutě spustí několik vln současně a na hráče tak přiletí ohavné množství meteorů a pokud nejste mistři světa v mačkání klávesy SPACE, nejde to vyhrát.


A přitom to šlo vyřešit pouhým přidáním jedné jediné proměnné, boolean se vypne ihned po spuštění vlny, to aby program věděl, že je má vypustit pouze jednou a ne vícekrát, nějak takhle:

Základní podmínka: pokud proměnná meteory_kill_count je 5 a zároveň proměnná má_vypustit_meteory je pravda

Jen tehdy proveď: spusť funkci VypusťMeteory! a zároveň přepiš proměnnou má_vypustit_meteory na lež a změň meteory_kill_count na 0

Aby se to mohlo zopakovat: při sestřelení meteoru se proměnná meteory_kill_count přepíše z 0 na 1 (čili počet se zvýší o jednu, po pěti se počet vynuluje) a při této příležitosti se proměnná má_vypustit_meteory změní ze lži na pravdu (což nezpůsobí žádnou katastrofu, jelikož v základní podmínce spolu s má_vypustit_meteory je pravda je meteory_kill_count je 0, takže se vlna nespustí a naopak se spustí, dojde-li k momentu, kdy meteory_kill_count je 5). Program nadále číhá pouze na meteory_kill_count je 5, který je okamžitě vynulován a s tím je současně vypuštěna vlna, a to se opakuje pořád dokola.

Naprosto jednoduchý "fix", chcete-li "patch", jenže v tom časovém shonu jako herní tvůrce na to nepřijdete, protože jste hru nezkoušeli déle než jednu minutu. Poučení pro příště: věnovat více času testování hry, méně času grafice.

zeal

0 komentářů:

Okomentovat