Nápověda: Jak vytvořit hru
Grafika hry
– Vkládání grafických objektů
a animací do hry
– Co ještě musíte vědět
o grafice hry
Nepřehlédněte
Hledáte tipy a konkrétní postupy, jak ve hře udělat to, co potřebujete? Pak jste tu správně. Začneme u jednodušších úkolů a skončíme u tipů a triků i několika rad, jak udělat dobrou hru. Ještě než se ale pustíme do detailů, věnujeme krátký úvod radám, jak vlastně začít tvořit hru a její příběh.
V systému GameStylus lze tvořit hry, klasické adventury s příběhy, ale i dětské hry, výukové aplikace, animace a další aplikace. Jakmile se rozhodnete, co vlastně chcete vytvořit, zbývá už zdánlivá maličkost: Vymyslet, kdo bude hrdinou, jaké budete potřebovat scény, jaké v nich budou animace a proměnlivé předměty, případně jaké předměty k sebrání. A k čemu hráč sebrané předměty využije.
Tak může být hrdinou třeba rytíř, který na jednom hradě po splnění nějakých úkolů získá čarovný meč a na druhém jím osvobodí princeznu ze spárů draka. Hrdinou ale může být třeba i pes, robot nebo ryba, scénami louka, les, dno moře nebo stará továrna a sbírat i používat může být nutné různé nástroje, jídlo či škeble... Prostě: Fantazii se tu meze nekladou.
Při návrhu hry myslete na to, aby v každé scéně bylo na co se dívat a co dělat. Hráč by měl také díky plnění úkolů, případně řešení hádanek, objevovat stále nové a nové lokace - a měl by se mu tak skládat před očima příběh hry.
Pro každý předmět, který má být možno sebrat, musí existovat jeho obrázek, který se použije v inventoráři (seznamu předmětů) hráče. Vytvoříte ho při řezání obrázků tím, že označený obrázek pojmenujete – třeba Prsten (nechte si tam zobrazit čísla obrázků, v seznamu vyberte číslo obrázku, vyplňte texty a uložte). Na scéně předmět k sebrání může být vidět (třeba prsten na chodníku), ale nemusí (třeba prsten v koši). Vytvořte si hodnotu s vhodným názvem (třeba Prsten) a dejte do ní číslo 1. Pokud je předmět na scéně vidět, nastavte, že je aktivní, pokud hodnota Prsten > 0 (Prsten je větší než nula). Pak okolo předmětu na scéně (kolem prstenu na chodníku nebo kolem koše) vytvořte aktivní oblast a do ní vložte instrukce, které říkají, že pokud je hodnota Prsten > 0, hrdina přijde, případně udělá nějakou animaci (třeba se sehne), nastaví se Prsten = 0 a vezme věc Prsten. Nastavením hodnoty Prsten = 0 docílíte, že jednak prsten zmizí z chodníku, jednak už příště nepůjde znovu sebrat, protože nebude splněna podmínka, že Prsten > 0.
Pokud potřebujete, aby se hrdina v průběhu hry převlékl nebo jinak změnil, je třeba vytvořit jeho animace jak v původní, tak ve změněné podobě. Potom ve scénách, kde má být převlečený, prostě použijete animaci, na níž je změněný – a v bodech cesty nastavíte animaci (stačí jednu fázi, například pohled směrem k hráči), na níž je také změněný. Tím zabráníte tomu, aby se v bodech cesty použily běžné animace pohledu do dané strany, které zobrazují nezměněného hrdinu. Pokud potřebujete, aby v jedné scéně byl hrdina někdy změněný a jindy nezměněný, prostě vytvoříte dvě vzájemně nepropojené sady cest a hrdinu umístíte vždy na tu, která zobrazuje hrdinu v potřebné podobě.
Nahrajete černé pozadí a nastavíte jej do scény, hrdinu umístíte do bodu, kde má velikost 0 %.
Protože můžete jednu hodnotu použít k různým činnostem, můžete díky ní také snadno synchronizovat více dějů. Může na ní například záviset start více animací, případně jedna animace může nějakou hodnotu nastavit, čímž se odstartuje animace jiná, která je nastavena tak, že její start na této hodnotě závisí. Případně se třeba může zobrazit předmět, který je nastaven jako aktivní (zobrazuje se), pokud je daná hodnota nastavena. A konečně - i instrukce v aktivní oblasti mohou čekat, dokud není nastavena nějaká hodnota. Pokud nechcete, aby hráč mohl toto čekání přerušit, použijte instrukce pro nepřerušitelnou sekvenci instrukcí.
Pokud se v průběhu hry mění pozice některých objektů, děje se tak prostřednictvím nastavování různých hodnot – a jejich stav si systém GameStylus pamatuje. Co když ale dojde k přesunu nějakého objektu prostřednictvím animace? Co když například hráč spustí animaci, kterou se otevřou dveře domu – a pak odejde z dané lokace? Jak při příštím příchodu do scény zajistit, že dveře budou stále otevřené? Pokud je první krok animace závislý na nějaké hodnotě a do ní vložíte číslo -100 nebo menší, animace rovnou skočí na poslední krok. Při prvním otevírání dveří tedy jen v nějakém kroku animace zadejte, aby se potřebná hodnota změnila na -100. Tím si zajistíte, že při příštím příchodu do lokace budou dveře rovnou otevřené.
Vytvoříte si vhodně nazvanou hodnotu, například Animace1, a dáte do ní číslo 1. V animaci u kroku (nebo kroků), kde animaci lze zastavit, nastavíte, že může pokračovat za tento krok, pokud Animace1 > 0. Vytvoříte aktivní oblast, jejímž prostřednictvím hráč animaci zastaví – a vložíte do ní instrukci, aby se hodnota Animace1 nastavila na 0. Tak když hráč ťukne na tuto akční oblast, animace se zastaví. Má-li navíc tento krok animace zmizet, pak běží-li animace stále dokola, stačí nastavit první krok jako neviditelný a zastavit tuto animaci právě v prvním kroku. Má-li se navíc její zmizení synchronizovat s nějakým dalším dějem, stačí o krok dříve změnit nějakou hodnotu, na které závisí něco dalšího (třeba zobrazení nějakého předmětu nebo běh další animace).
Prostě aktivní oblasti nastavíte tak, aby se překrývaly, a té, která má být navrchu nastavíte nejvyšší Z-index. Když pak hráč ťukne na místo, kde se aktivní oblasti překrývají, provedou se příkazy v aktivní oblasti, která je nahoře; pokud nejsou splněny podmínky, které jsou v ní vloženy, provedou se příkazy v aktivní oblasti pod ní. Takto lze vrstvit libovolný počet aktivních oblastí.
Tip: Pokud více aktivních oblastí potřebuje provést skoro stejnou činnost, můžete tuto činnost dát do nějaké oblasti, kterou skryjete pod ostatní. Poté v každé oblasti provedete to, v čem se liší od ostatních, a poté zadáte instrukci pro provedení instrukcí oné skryté oblasti. (Je to vlastně obdoba jednoduché funkce/metody v programování.)
Animaci snadno spustíte například ze Standardní akce scény, kde animace začíná (pravděpodobně při tom bude užitečné použít nějakou podmínku). Aby hráč nemohl animaci přerušit, vložte na její začátek instrukci nepřerušitelné sekvence. Pokud se animace odehrává ve více scénách, využijete Standardní akci v každé z nich - a nezapomeňte také vždy znovu zapnout nepřerušitelnou sekvenci (přechodem do nové místnosti se vypíná). Další postupy jsou stejné jako u jakékoli jiné činnosti - prostě správně nastavte animace i instrukce tak, aby se provedlo vše potřebné.
Vložte do scén dostatek bodů pro chůzi, jen na nich může hrdina zastavit a změnit směr chůze. A dostatek jejich vzájemných propojení. Ale nedejte bodů zase zbytečně moc.
Aktivní oblasti dělejte dostatečně velké, aby se na ně hráč dobře strefil prstem i na malém displeji chytrého telefonu.
Promyslete si hru dopředu. Pokud budete chaoticky přidávat a mazat objekty, můžete mít ve scénách brzy trochu zmatek. Vyplatí se také vést si poznámky o tom, k čemu je dobrá která hodnota i to, kdy a proč se mění.
Framy (kroky) jedné animace z jedné scény dejte pokud možno do jednoho obrázku, podobně zacházejte s dalšími objekty. Ušetříte tak paměť zařízení uživatele.
Při ladění se vám někdy může hodit dát si do první scény aktivní oblasti s příkazy pro rychlý přechod do různých jiných scén, které právě potřebujete ladit. Později tyto aktivní oblasti smažete.
Při sbírání předmětů vždy nastavujte nějakou hodnotu – a kontrolujte ji. Zabráníte tak tomu, že hrdina sebere stejný předmět opakovaně (pokud to samozřejmě není vaším cílem). Pokud při kombinaci předmětů hráči ty původní zůstanou, může tuto akci kdykoli zopakovat. Pokud to nechcete – a potřebujete mu předměty ponechat – vytvořte si kopii stejného předmětu s trochu jiným názvem (například Prsten1, Prsten2) a hráči po kombinování předmětů místo prvního dejte druhý, který již pro stejnou kombinaci nebude moci použít.
Nenechte si ujít: VIDEO + Základní návod na tvorbu her, Základní rady pro práci s grafikou, FAQ: Často kladené dotazy