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

úterý 9. prosince 2014

Moje Ludum Dare hra: One Screen Universe

Je tomu přesně rok, co jsem se začal účastnit Ludum Dare - soutěže herních tvůrců. Teď o víkendu proběhlo další kolo, kterého jsem se opět zúčastnil, a já při tom zjistil jednu věc: baví mě to stále víc a víc! No a nejvíc mě baví kódování. A možná taky právě proto se těch pár set řádků kódu jakoby napsaly samy od sebe, nebo alespoň jsem měl takovej pocit na konci, když jsem si uvědomil, že jsem měl jen minimum chvilek, kdy mi Unity zahlásilo error. Co se dalších stránek vývoje týče, myslím, že jsem udělal i nějaký ten pokrok s grafikou. Už to vypadá jakžtakž k světu a příští, přespříští hra by mohla snad mít i nějakou tu poloprofi kvalitu. Pokud bych měl být konkrétnější, jsem docela hrdej na pěknou, myší malovanou, explozi - v minulosti jsem tu sice psal o editoru, v němž se dají vygenerovat animované exploze, strach z překročení pravidel mě ale přinutil sáhnout na myš a pořádně s ní zatřepat, až vznikla pěkná exploze.


Téma pro Ludum Dare 31 bylo "hra na jedné obrazovce". Aha, no ale všechny hry jsou přece na jedné obrazovce, nebo ne? Trošku praštěně znějící téma, musela si říkat většina participantů LD, ale po druhém zamyšlení se zřejmě má jednat o hru, která nemůže skrolovat, ani se nijak naklánět a pozadí musí zůstat víceméně stejné, protože je v pravidlech jen jedna obrazovka - přece!

A tak vzniklo na mém počítači One Screen Universe.

Ještě jsem tedy předtím vypracoval design náčrtek na kus papíru, vymyslel příběh, herní mechaniky a pod. Jako první jsem se pustil do pozadí. Když už jedno pozadí, tak animované, napadlo mě, když jsem náhodně otáčel čudlíkama v Unity a nakonec z něj vypadlo zajímavě vypadající pozadí připomínající vesmír. Poté následovala raketka a další grafika. Většina času padla na kódování - a to jsem se na ničem nezasekl, šlo to jako po másle, no padlo několikanásobek kódu než na všech mých předchozích hrách dohromady. Bylo toho potřeba napsat tolik, a v tak krátkém čase. Myslím, že mi tvorba One Screen Universe zabrala možná 13 hodin (kód plus grafika plus zvuk). V poslední hodině jsem ještě neměl napsané kolize mezi střelou a cílem, takže jsem lehce znervózněl a zároveň jsem u konce ještě rychle složil úvodní melodii a zvuky střelby a výbuchu. Když jsem vyplňoval dotazník na stránkách Ludum Dare, měl jsem pouhých patnáct minut k dobru.

Hra je plně funkční, a není - pokud vím - rozbitá. Nakódoval jsem "posílání vln", takže po zastřelení určitého počtu cílů program pošle další vlnu (a to se opakuje až do nekonečna). Hratelnost není z nedostatku času vyladěná. Do hry se nedostala řada nápadů. Nedostala se do ní hlavní herní mechanika, která by tuhle hru odlišila od ostatních, podobných her, ale takový už je Ludum Dare.

Po deadline, v rámci pravidel:

Vůbec poprvé jsem přidal porty na jiné platformy, protože to byla otázka jen jednoho jediného kliknutí a tentokrát jsem si na to vzpomněl. Hru si tak můžou zkusit i majitelé Maců a Linuxu (a kdoví, možná se to rozjede i na Steam OS). Později můžu přidat i androidí verzi, která bude ale potřebovat trošku přepsat - kód klávesnice se musí přepsat na kód pro prsty.

Doufám, že se to bude někomu aspoň trochu zamlouvat.

Odkaz na hru: http://ludumdare.com/compo/ludum-dare-31/?action=preview&uid=31752



zeal