Šablona Diplomové Práce
Total Page:16
File Type:pdf, Size:1020Kb
Masarykova univerzita Fakulta informatiky Stylizace programovacích jazyků do herních úrovní logické dobrodružné hry Linda Langerová Bakalářská práce Použitá citační norma: ISO 690 Vedoucí práce: MgA. Helena Lukášová, ArtD. Brno 2018 Prohlášení o autorství Prohlašuji, že tato práce je mým původním autorským dílem, které jsem vypracovala samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používala nebo z nich čerpala, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj. _______________________ Linda Langerová Poděkování Považuji za svoji milou povinnost poděkovat vedoucí práce MgA. Heleně Lukášové, ArtD. za velikou podporu a odborné a organizační vedení při zpracování této práce a konzultantům MgA. Kateřině Spáčilové a Mgr. Jiřímu Chmelíkovi, Ph.D. za odborné konzultace k této práci. Abstrakt Počítačová hra je velmi obecné téma, ke kterému se dá přistupovat z různých směrů. Stejně tak programovacích jazyků je veliká spousta. Přestože se v nich dá najít hodně podobností, každý z programovacích jazyků má také svá specifika, hodí se k programování jiných věcí a je spojován s jinými symboly. Lze v nich najít spousta paralel s klasickými herními mechanikami. V této práci se snažím tyto paralely objevit a na základě charakteristiky jednotlivých programovacích jazyků vytvořit herní úrovně logické dobrodružné počítačové hry Furfur The Languagefighter. Informace o jednotlivých programovacích jazycích získávám ze zveřejněného dotazníku, vlastních zkušeností a průzkumu na internetu a v literatuře. Zpracováním těchto informací vytvářím návrhy herních úrovní, které pomocí softwarů Adobe Photoshop, Adobe After Effects a Unity převádím do hratelné digitální podoby. Výsledkem je logická dobrodružná hra, v níž se hlavní hrdina snaží nalézt zápornou postavu a při svém hledání se musí dostat skrze jednotlivé herní úrovně symbolizující programovací jazyky. Hra je originálně propracovaná po grafické stránce a grafické a logické zpracování prvků jednotlivých programovacích jazyků činí programovací jazyky lépe zapamatovatelné pro studenty informatiky a tím splňuje také naučnou podstatu hry. Hra je rozšiřitelná o další programovací jazyky. Klíčová slova hra, počítačová hra, adventura, animace, grafika, kresba, programovací jazyky Obsah 1 Úvod 1 2 Inspirace 3 3 Hry jako umění 5 3.1 Game art 8 4 Edukativní funkce počítačových her 11 4.1 Panika z médií 11 4.2 Opomíjené formy edukace v počítačových hrách 12 4.2.1 Historie 12 4.2.2 Psychologie 13 4.2.3 Simulátory 13 4.2.4 Pravidla a zákony 13 5 Edukativní hry zaměřené na programovací jazyky 14 5.1 ASM HELL 14 5.2 TIS-100 15 5.3 Human Resource Machine 16 5.4 Shenzen I/O 16 5.5 VIM Adventures 17 6 Vývoj hry 19 6.1 Průzkum 19 6.2 Příběh 22 6.3 Animace a grafika 25 6.4 Charaktery 26 6.4.1 Hlavní hrdina 26 6.4.2 Vedlejší postavy 26 6.5 Implementace 38 7 Budoucí rozšíření práce 41 8 Závěr 43 9 Citovaná literatura 45 10 Elektronické přílohy v IS 49 1 Úvod Programovací jazyk je nástroj pro vytváření algoritmů neboli programů, díky nimž mohou počítače provádět různé operace. Programovacím jazykem formuluje programátor řešení daného problému, podle kterého následně počítač postupuje. Programovací jazyk je vlastně soubor pravidel pro zápis algoritmů, odborně řečeno se jedná o formální jazyk. Existuje více verzí a implementací programovacích jazyků a standardů na ně vázaných. Pro každou implementaci je často uvedeno, kterému standardu vyhovuje (1). Tato bakalářská práce se zabývá vývojem počítačové hry z prostředí programovacích jazyků. Co se týče žánru, jedná se o logickou dobrodružnou hru. V ní má hlavní hrdina za úkol překonat překážky jednotlivých úrovní stylizovaných na základě konkrétních programovacích jazyků. Hra je určena především lidem pohybujícím se ve sféře informačních technologií. U těchto lidí plní zejména zábavní funkci, pro širší veřejnost, zejména však studenty informatiky, se potom její funkce mění v edukativní. Programovacích jazyků je přes 2000 a každý má svá specifika a svá pro a proti, avšak pouze několik desítek je široce používáno (2). Já se v bakalářské práci zaměřuji na ty nejpoužívanější programovací jazyky, především z důvodu, aby skupina potenciálních hráčů hry vzešlé z této bakalářské práce znala co možná nejvíce jazyků zpracovaných v této bakalářské práci. Je očekáváno, že většina hráčů nepochopí úplně všechny zpracované prvky, proto jsou na stránkách, na nichž je hra uveřejněna, vypsány, a tak se hráč snadněji dozví nové informace o programovacím jazyce které neznal, a to hravou formou. Se ztvárněním programovacích jazyků v rámci počítačové hry jsem se zatím nesetkala, ačkoliv v programovacích jazycích spatřuji veliký potenciál a spoustu paralel s tématy počítačových her a jejich mechanikami, proto jsem se tomuto tématu rozhodla věnovat. Účelem je stylizovat jazyky tím způsobem, aby nemuselo být explicitně řečeno, o jaký programovací jazyk se jedná, a i přes to to bylo pro hráče, který hraje hru a zná daný programovací jazyk, jasné. Tohoto je dosaženo vhodnou 1 charakterizací a vizualizací prvků obsažených v jednotlivých jazycích, např. charakteristických příkazů, syntaxe, často používaných vývojových prostředí nebo v neposlední řadě období, ve kterém byl jazyk vytvořen a prvků z jeho historie. Součástí této práce je průzkum mezi lidmi, kteří mají jakékoliv zkušenosti s programováním. V průzkumu se vyjádřili, co si myslí o jednotlivých programovacích jazycích a jaké v nich spatřují klady a zápory. V průzkumu nezáleží na znalostech dotazovaných, ale pouze na tom, co si pod jednotlivými jazyky vybaví. Další nedílnou součástí této práce je internetový průzkum zvolených programovacích jazyků a zisk co možná největšího množství informací o jejich specifikách. Některá fakta, jako časté problémy vnímané programátory či používané příkazy, jsou zpracována ve hře v rámci jejího vizuálu. Poslední součástí je samotná implementace hry, která se sestává ze 3 zpracovaných programovacích jazyků, které hlavní hrdina prochází v rámci příběhu. Hra je implementována v herním vývojovém prostředí Unity v jazyce C#. Hra byla poskytnuta zdarma online na webu https://www.fi.muni.cz/~xlanger3/Furfur/. Do budoucna bych chtěla hru rozšířit o více úrovní (resp. více programovacích jazyků) a hru rozšířit o čistě výukový mód. 2 2 Inspirace Prvotním impulsem pro práci na podobné hře mi byly jiné hry, které jsem hrála v minulosti, jejichž atmosféra ve mně zanechala silný dojem. Ačkoliv se jednalo o různé hry, některé věci měly společné. Byly originální v minimálně jednom z atributů – grafice, příběhu, hudbě či tématu. Jednou z nich je The Neverhood (3). Doteď ji řadím mezi své nejoblíbenější hry. Její silnou stránku spatřuji v odlišnosti od ostatních her svojí nezaměnitelnou grafikou – celý svět této hry je vytvořený z plastelíny. Ponurost takto zpracované grafiky technologiemi minulého století kombinovaná s hudbou Terryho S. Taylora tuto hru odlišuje od všech, které jsem dosud hrála a dělá ji výjimečnou. Inspirativní byla také hra Science Kombat (4) ilustrovaná Octaviem Cohenem. Jedná se o bojovou hru, kde hráč hraje za slavné vědce, jejichž útočné schopnosti korespondují s oblastí vědy, ve které se angažovali. Uvedu například Isaaca Newtona, který má schopnost házet jablka, nebo Marii Curie-Sklodowskou útočící radioaktivním zářením. Zde mě zaujal nápad zpracovat oblast vědy jako útočnou schopnost (dvě věci, které spolu zdánlivě nesouvisí), v čemž spatřuji souvislost s tématem své bakalářské práce. Další známou hrou, která se zaměřila na umělecké pojetí, je Samorost. Zde mě zaujala kromě nápadu hlavně nezvyklá grafika a její soulad s hudební stránkou hry. Jedná se o hru o tom, jak se „roztomilý skřítek vydal na svou vesmírnou misi plnou psychedelických rébusů, výtvarně propracovaných postav a scenérií i kvalitní hudby.“ (5) Podobnou originalitu bych ráda vnesla i do své práce. Podobně jako v naposledy zmíněné hře, je v této práci kladen velký důraz na umělecké zpracování, v tomto případě grafické, které podpoří intenzitu prožitku ze hry. Jazyky jsou zpracovány velmi subjektivně, podmínkou však je, že většina hráčů, kteří znají programovací jazyk odpovídající dané hrané úrovni, bezpečně pozná, o který jazyk se jedná. Kromě jiných her jsem se inspirovala přímo při setkání s jednotlivými jazyky. Při diskusích s lidmi, kteří programují (ať už ve svém volném čase, nebo 3 v zaměstnání), ale i z vlastní zkušenosti, jsem si všimla, že snad každý programovací jazyk má své nedostatky, které jsou jeho uživateli považovány za negativní. Naopak však platí totéž – stejně jako nedostatky jsou v každém jazyce obsaženy také prvky, které ho činí užitečným pro ten či onen účel a uživateli tak poskytuje nástroj k dosažení žádaného cíle, tudíž jsou považovány za pozitivní. Tato skutečnost koreluje s podstatou hry, jíž je existence negativních prvků, proti kterým hráč bojuje, využitím těch pozitivních. Ovšem nejen pohled na jazyky z obecného hlediska byl inspirativní – některé jazyky obsahují prvky evokující názvy herních mechanik nebo herních objektů. Můžeme uvést např. nulový terminátor nebo modrou smrt, jako jména pro záporné postavy. 4 3 Hry jako umění V posledních letech rostou tendence spekulovat o tom, jestli může mít počítačová hra uměleckou hodnotu. Na jedné straně stojí spousta odpůrců, opírajících se o názory, že hry, a to nejen ty počítačové, jsou vytvářeny za účelem zisku peněz, odvádění od pozornosti a problémů běžného života a kazí morálku jejich uživatelů. Hlavním argumentem proti tomu, že počítačová hra může být umělecké dílo, je názor, že počítačová hra je pouze nástroj k