“GameJN”
Tushigbayar Tseveenbayar, Vojtěch Karen
Závěrečná práce studentského projektu
Tvorba počítačové hry “GameJN” Evropský sociální fond Praha a EU – Investujeme do vaší budoucnosti
2014
Tushigbayar Tseveenbayar, Vojtěch Karen
1
“GameJN”
Tushigbayar Tseveenbayar, Vojtěch Karen
1. Obsah 1. Obsah………………………………………………………... 2 2. Úvod…..……………………………………………............... 3 3. Jednotlivé programy……………………………………….. 4 3.1 PyxelEdit………………..…………………............... 4 3.2 Unity3D……………………………………............... 6 3.3 Systém Dialogů……………………………............... 8 4. Závěr………………………………………………................ 12 4.1 Budoucí úpravy…………………………………….. 12 5. Zdroje……………………………………………………….. 13 6. Přílohy………………………………………………………. 13 6.1 Prohlášení…………………………………………… 13 6.2 Seznam úkolů………………………………………. 13 6.3 Hra GameJN……………………………….............. 13 6.4 Aktuální verze hry…………………………………. 13
2
“GameJN”
Tushigbayar Tseveenbayar, Vojtěch Karen
2. Úvod V rámci projektu OPPA jsme vytvořili počítačovou hru s názvem GameJN. Jedná se o 2D hru s pohledem shora, adventuru nakreslenou v programu PyxelEdit od Daniela Kvarfordta. V tomto programu je moţné vymyslet a namalovat všechno, co je ke hře potřeba, od loga aţ po mapy a postavičky. Hlavní vývoj hry probíhal v programu Unity3D od společnosti Unity Technologies. Na programování jsme pouţili jazyk C# (zvaný také CSharp), který je jeden z nejpouţívanějších na světě. GameJN je hlavně cílena pro studenty střední školy, aby by měli studium zábavnější a něco se přitom naučili. Jako mapa byla zvolena budova Gymnázia Jana Nerudy, protoţe ji studenti znají, a dokonce i postavy profesorů jsou v ní podle skutečných profesorů vyučujících na Gymnáziu Jana Nerudy. To donutí studenta, aby v hraní pokračoval ze zvědavosti, jaký učitel se ve hře nachází. Hlavní hrací platforma je zatím PC. Příběh se odehrává v budově GJN, kde hlavní hrdina chce odjet na dovolenou, na coţ musí sehnat podpisy všech profesorů na Ţádost o uvolnění z výuky. Profesoři nedávají své autogramy ale zadarmo. Chtějí se ujistit, ţe student jejich látku ovládá. Kaţdá postava má svůj specifický dialog, díky kterému student pozná svého profesora. Aţ student nasbírá všechny podpisy, hra skončí a můţe odejít na dovolenou.
3
“GameJN”
Tushigbayar Tseveenbayar, Vojtěch Karen
3. Jednotlivé programy a postupy V této části stručně představíme jednotlivé programy, které jsme při tvorbě hry vytvářeli, a také na jednoduché ukázce předvedeme principy programování.
3.1 PyxelEdit PyxelEdit je velice jednoduchý program, pomocí kterého se vytváří jednoduchá grafika ve stylu „retro“ her, tzv. 8-bitová grafika. Vyuţívá se v ní čtverečků o jisté šířce a výšce (tradiční je 8x8, 16x16 a 32x32), na které uţivatel něco nakreslí a poté můţe čtverečky uţ jen skládat k sobě, čímţ získá výsledný obrázek, kaţdý objekt mu tedy stačí nakreslit jednou. Při tvorbě nového obrázku se musí první zvolit šířka a výška jednotlivých čtverečků a také jejich počet.
Lze samozřejmě pouţívat libovolné barvy a program obsahuje spoustu nástrojů, které usnadňují tvorbu.
4
“GameJN”
Tushigbayar Tseveenbayar, Vojtěch Karen
Kreslení postaviček uţ není tak sloţité jako u jiných programů. Dokonce je moţné na jedné mapě nakreslit jednu postavičku víckrát, ale v jiných pozicích. Z toho se pak jiţ jednoduše udělá výsledná animace.
5
“GameJN”
Tushigbayar Tseveenbayar, Vojtěch Karen
3.2 Unity3D Unity3D (dále jen Unity) je program určený pro všechny, kteří chtějí jednoduše tvořit hry. Kaţdý, kdo má nějaké základy programování si můţe stáhnout plnohodnotnou verzi zadarmo. Pro profesionály je určena větší a sloţitější verze Unity Pro, která je ale jiţ placená. Unity umí tvořit hry i pro jiné platformy, neţ jen PC, jako jsou herní konzole nebo mobilní přístroje. Základ Unity je ten, ţe tvůrce hry na objekty přiřazuje různé komponenty. Jako příklad můţeme uvést například objekt „hráč“, která komponenty, jako jsou collidery, které mu zabraňují procházet zdmi, dalšími komponenty jsou skripty (krátké programy), které zařizují, ţe se pohybuje, kdyţ se zmáčknou tlačítka na klávesnici, apod.
Hru si lze také rovnou vyzkoušet, aby tvůrce věděl, jak bude vypadat. Má také k dispozici „Scénu“, náhled, ve kterém můţe objekty libovolně přesouvat. Pouţívá ale také spoustu souborů, které vytvořil v jiných programech, jako je například grafika nebo skripty. Ty poté můţe upravovat v přiloţeném programu Xamarin Studio.
6
“GameJN”
Tushigbayar Tseveenbayar, Vojtěch Karen
Celkově se nám program ke tvorbě hry velice hodil, protože jsme díky němu mohli hru tvořit relativně rychle a nemuseli jsme se zabývat úplnými základy.
7
“GameJN”
Tushigbayar Tseveenbayar, Vojtěch Karen
3.3 Systém Dialogů: Do hry jsme vytvořili vlastní Systém Dialogů, který se dá pouţít jako pěkná ukázka programování. Základním stavebním kamenem systému je příkaz ShowDialog, který má takovouto strukturu: ShowDialog (true, “Otázka”, “Odpověď 1”, “Odpověď 2”, “Odpověď 3”); - Příkaz, kterým Systém Dialogů voláme - Proměnná, která určuje, jestli se má po tomto okně ihned zobrazit další (pokud zní “true”, zobrazí se; pokud “false”, tak ne) - Zde je (v úvozovkách) text, který má být zobrazen v hlavním okně (například otázka) - Volitelné texty, které se mají zobrazit na tlačítkách ve spodní částí okna, například moţné odpovědi (pokud se nepouţije ani jeden, systém automaticky vloţí jedno tlačítko s textem “Pokračovat”). Tento příkaz tedy zobrazí takovéhle okno:
Po kliknutí na jedno z tlačítek se okno zavře (protoţe jsme na začátku zvolili jako parametr “false”, jinak by se zobrazilo další okno) a systém si do proměnné uloţí, jakou odpověď hráč zvolil (v případě první odpovědi se uloţí číslo 1, druhé 2 a třetí 3). Poslední odpověď se dá zpětně zavolat funkcí LastAnswer(), díky čemuţ můţe Systém různě reagovat podle toho, jak hráč odpověděl. Příklad takového příkazu by mohl vypadat takto: if (LastAnswer() == 1) { ShowDialog (false, “Správně!”); }
8
“GameJN”
Tushigbayar Tseveenbayar, Vojtěch Karen
Pokud bychom ho přeloţili do “obyčejné řeči”, tak vlastně říká: Pokud se LastAnswer (poslední odpověď) rovná 1, zobraz “Správně” a po kliknutí na “Pokračovat” jiţ nezobrazuj další okno. Nebo, pokud bychom se v interpretaci dostali ještě dále, dostaneme: Pokud hráč naposledy zvolil první odpověď, zobraz “Správně” a pak jiţ nezobrazuj další okno.
Výsledek vypadá takto. Protoţe jsme nevloţili ţádné moţné odpovědi, automaticky se zobrazilo tlačítko s nápisem “Pokračovat”. Postup v dialogu sledujeme pomocí proměnné talkingStatus. Na začátku se rovná 0, a pokaţdé, kdyţ se zobrazí nějaké okno, se o jedna zvýší. Toto je jiţ příklad reálného dialogu: if(talkingStatus == 0){ ShowDialog (true, “Jakou barvu má slunce?”, “Ţlutou”, “Modrou”, “Červenou”); } if(talkingStatus == 1){ if(LastAnswer() == 1){ ShowDialog (false, “Správně, slunce je ţluté.”); } if(LastAnswer() == 2){ ShowDialog (false, “Špatně, slunce přece není modré, ale ţluté.”); } if(LastAnswer() == 3){ ShowDialog (false, “Špatněm slunce přeci není červené, ale ţluté.”); }
9
“GameJN”
Tushigbayar Tseveenbayar, Vojtěch Karen
} Zde můţeme vidět, ţe Systém se hráče zeptá na otázku “Jakou barvu má slunce?” a dá tři moţné odpovědi: “Ţlutou”, “Modrou” a ”Červenou”. Okno, které se zobrazí, vypadá takto:
A podle toho, jakou odpověď si zvolil, tak mu zobrazí, jestli odpověděl správně, nebo špatně. Pokud zvolil “Ţlutou”, zobrazí se mu toto:
10
“GameJN”
Tushigbayar Tseveenbayar, Vojtěch Karen
Pokud zvolil “Modrou”, zobrazí se mu toto:
A pokud “Červenou”, zobrazí se toto:
A tímto způsobem se zobrazují veškeré texty ve hře. Toto je ale jen ta část Systému Dialogů, se kterou přijde tvůrce hry do kontaktu ve chvíli, kdy zadává nové úkoly nebo upravuje stávající. K tomu, aby Systém Dialogů fungoval takto jednoduše, je potřeba dalších více jak 500 řádků kódu, které zde ale nebudeme popisovat, protoţe jejich srozumitelnost by byla pro osoby, které neprogramují, velice nízká.
11
“GameJN”
Tushigbayar Tseveenbayar, Vojtěch Karen
4. Závěr Ukázali jsme, ţe na tvorbu her stačí vlastně jen několik jednoduchých programů, hodně času a ochota naučit se novým věcem. Moţnosti programování lehkých 2D her jsou velké, ale na větší hry se sloţitější grafikou je potřeba více lidí, času a peněz. Do budoucna máme v plánu hru ještě rozšířit, protoţe má budoucnost. Přidáme do týmu více lidí s programovacími schopnostmi a se zkušenostmi s umělou inteligencí. Hodně nás to naučilo, abychom si mohli představit, jak se dřív hry dělaly. Můţeme s jistotou tušit, jak se dělají hry s milionovým rozpočtem a s týmem, který má přes sto lidí. Máme v plánu v projektu pokračovat a je moţné, ţe propracovanější verze bude naší příští OPPA.
4.1 Budoucí úpravy Zde je seznam úprav, které by hru mohly v budoucnosti čekat: ● Lepší animace postav. Pohyby hlavního hrdiny a NPC budou detailnější a rychlejší. ● Větší databáze úkolů, které se budou zobrazovat náhodně. ● Umělá inteligence bude vyvinutější. To znamená, ţe nepřítel bude schopen honit studenta, i kdyţ bude mezi nimi překáţka. Navíc bude schopen si určit nejrychlejší moţnou cestu k němu. ● Otázky budou ve všech předmětech a ročnících početnější. Počet předmětů bude také navýšen. ● Potřeba zlepšit detaily postav a mapy. Je to časově náročné, ale v PyxelEditu moţné. ● Přídání zvukových efektů.
12
“GameJN”
Tushigbayar Tseveenbayar, Vojtěch Karen
5. Zdroje Jako zdroje jsme pouţívali Manuál k Unity3D: http://docs.unity3d.com/Manual/ Pak také některé otázky na fórech: http://www.answers.unity3d.com/ A také stránky programu PyxelEdit: http://www.pyxeledit.com/
6. Přílohy Seznam příloh, které by měly k projektu být přiloţeny. Pokud některá z nich chybí, lze o ni zaţádat na email
[email protected].
6.1 Prohlášení ● soubor ve formátu pdf.
6.2 Seznam úkolů ● soubor ve formátu pdf.
6.3 Hra GameJN ● Hra ve verzi 1.1 Alpha pro Windows (archiv ve formátu rar).
6.4 Aktuální verze ● aktuální verze pro prohlíţeč bude vţdy dosaţitelná na odkazu: www.bit.ly/gamejnweb.
13