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 rekreaci, k poskytnutí zábavy bez nutnosti zamyšlení se nad jejím obsahem a bez nutnosti interpretovat si myšlenku hry vlastním způsobem. Myšlenky her jsou plytké a nenutí hráče zamýšlet se nad životem či nějakým hlubším tématem. Hra má předem daný jasný cíl a vede k němu hráče předem určenou – pevně danou – cestou. Jedním ze zastánců takovýchto názorů je umělecký kritik Jonathan Jones. V reakci na ohlášení výstavy Muzea moderního umění v New Yorku v roce 2013, zaměřenou na slavné počítačové hry, vyjádřil svůj názor: „Světy vytvářené videohrami jsou spíše jako dětská hřiště, na nichž je zážitek zprostředkován interakcí mezi hráčem a programem. Hráč nemůže tvrdit, že mu hra vnucuje osobní vizi na život, zatímco tvůrce hry se této odpovědnosti vzdal. Nikdo hru „nevlastní“, takže neexistuje žádný umělec, tím pádem ani žádná umělecká práce.“ (6) Odkazuje tak také na to, že umělecké dílo by mělo mít jasně stanoveného autora, z jehož nápadu dílo vzejde, kdežto počítačové hry jsou často vytvářeny týmem vývojářů, kterým byla jejich práce zadána. V reakci na Jonese napsal Keith Stuart, novinář zaměřující se na technologie a počítačové hry, článek, ve kterém se pokusil Jonesovy názory názorně vyvrátit: „Samozřejmě se lze hádat, že veškeré umění je interaktivní: celé to je o interpretaci. Umělec není nikdy duševní rozhodce významů a umělci, jako designéři her, budují struktury, skrze které spíše komunikují, než diktují.“ Navazuje slovy Richarda Lemarchanda, herního designéra, který se podílel například na herních sériích Uncharted nebo Legacy of Kain: „Jako někdo, kdo profesionálně navrhuje hry celý svůj dospělácký život, mě pokaždé překvapí, když slyším lidi tvrdit, že ve hrách není „přítomna organizovanost myšlenek“. Hry jsou

5 tvořeny sadami pravidel a cílů dynamicky tvořících systémy, podle toho, jak je hráč začne používat. Tato pravidla jsou vytvořena někým – herním návrhářem – a ohraničují prostor a možnosti, které má hráč možnost prozkoumat. Někdy jsou pravidla přísná a pevně omezující, někdy jsou volná a vyžadují tlumočení – ne více či méně než Mozartova partitura nebo soubory abstraktních instrukcí Johna Cage, Yoko Ono nebo Sol Le Witta“. (7)

Obr. 3.1 Ukázka ze hry Legacy Of Kain – hlavní hrdina Raziel (8)

Nejsou výjimkou názory, že počítačová hra je synonymum ke hře hazardní a je považována za něco škodlivého, nebo naopak názory, že hra je něco infantilního, co nemá v životě rozumného dospělého člověka místo. V takových případech je pochopitelné, že mají od sebe hry a veřejné chápání umění velmi daleko. V roce 2016 napsala Helena Bendová ve své knize Umění počítačových her (9), že existuje zhruba deset anglicky psaných knih, které se snaží různým způsobem obhajovat tezi, že počítačové hry jsou alespoň potenciálně uměním. Pro určení jednoznačné odpovědi na otázku, zdali je počítačová hra uměním, je však zapotřebí jasně definovat, co je chápáno pod pojmem umění. Umění je v různých zdrojích definováno různými způsoby. Například Ottův slovník naučný definuje umění jako úmyslné tvoření nebo konání, jehož výsledek nad jiné výtvory a výkony vyniká jistou hodnotou již při pouhém nazírání a vnímání,

6 tj. hodnotou estetickou (10), Immanuel Kant v 18. století nedává umění povinnost mít praktický užitek, ale tvrdí, že by nás mělo duševně rozvíjet, když ve své knize Kritika soudnosti píše, že umění je „druh představy, který je účelný sám o sobě, a ačkoli je bez účelu, přesto napomáhá kultuře duševních sil k družnému sdílení“ (11). Někteří vědci se však shodují, že je pojem umění tak rozsáhlý, mnohotvárný, proměnlivý a může zahrnovat takovou spoustu různých činností a skutečností, že ho nelze jednoznačně definovat. Ve Stanfordské encyklopedii filozofie je zmíněno: „Pokusy o definici vycházejí buď z vlastností uměleckých děl a činností samých (umění znázorňuje, vyjadřuje, esteticky působí), z jeho historie (původ z kultu a rituálu, společenský význam, umělecké instituce) anebo jen tvrdí, že umění je to, co za ně určitá společnost pokládá (konstruktivismus)“ (12). Mnozí ze zmíněných vědců a filozofů se opírají o fakt, že nelze najít prvky, které by spojovaly všechny typy umění, a tudíž nelze umění generalizovat a globálně ho definovat. Už Morrise Weitze ve svém článku Role teorie v estetice (13) z roku 1956 vyvrací předpoklad, že umělecké dílo musí být artefaktem (názor zastávaný jinými filozofy), tedy umělým lidským výtvorem či výrobkem, vnějším veřejným projevem kultury, zřetelně uvědomovaným (14). Pokud je však definice umění takto volná, nevidím důvod, aby počítačové hry nemohly být chápány jako umělecká díla. Tvorba hry sestává ze spousty činností, jejichž ekvivalenty se dají najít mezi činnostmi běžně chápanými jako umění či k vytvoření uměleckého díla vedoucích. Nelze napsat souhrnný jednoznačný soupis všech činností vedoucích k vytvoření počítačové hry, jelikož existuje nepřeberné množství odlišných her, které jsou založeny na různých principech, jsou různě rozsáhlé a na jejich vzniku pracoval různý počet lidí, od jednotlivců, přes týmy o několika členech až po obří korporace. Uvedu však činnosti a jejich umělecké ekvivalenty, které se typicky objevují ve vývoji počítačových her a většina počítačových her vznikala mimo jiné podskupinou těchto činností:

7

1) Tvorba příběhu hry a scenáristika – psaní filmového scénáře, tvorba literárního díla 2) Herní ilustrace, 2D grafika – malování obrazu, ilustrace knih 3) Tvorba 3D modelů prostředí a herních charakterů – sochařství, architektura 4) Celkové působení hry, pohyby herních charakterů, grafika – estetika

Další disciplíny, které jsou samostatně považovány za umělecké a jsou často zahrnuty ve vývoji hry:

1) Hudba 2) Tanec (taneční počítačové hry, bojové scény) 3) Animace 4) Choreografie

Ačkoliv výsledkem těchto disciplín nemusí nutně být umělecké dílo, jsou v naší kultuře považovány za disciplíny umělecké a je přirozené je takto chápat.

3.1 Game art

Důležitý pojem v této otázce je game art, který se rozvíjel především v letech 1998–2008, tedy, jak definuje italský spisovatel a umělec Matteo Bittanti, „jakékoliv umění, v němž digitální hry sehrály důležitou roli při tvorbě, produkci a/nebo provádění uměleckého díla. Výsledné umělecké dílo může existovat ve formě hry, obrazu, fotografie, zvuku, animace, videa, performance nebo galerijní instalace. […] V game artu mohou být hry použity jako prostředek i jako téma“ (15). Ze začátku jeho existence byla jako game art chápána zejména modifikace již existujících počítačových her. Vznikaly „především mody, tedy hardwarové a softwarové modifikace, jež používaly počítačové hry jako svůj materiál, vystavený často radikálním zásahům a proměnám. […] mod od JODI,

8 nazvaný SOD (1999), proměnil hru Wolfenstein 3D (1992) do černobílého ostře geometrického prostředí, z nějž zmizely všechny násilné elementy, nepřátelé i zbraně, zbyl pouze onen zvláštní, vyprázdněný matoucí architektonický prostor“ (9), uvádí Bendová. Za deset let se pojem game art rozšířil o další významy a nejčastěji se s ním můžeme setkat jako označení tvorby her, příběhu, herní grafiky a hudby.

9

10

4 Edukativní funkce počítačových her

4.1 Panika z médií

Hry jsou považovány za nejdůležitější prostředek, kterým se děti učí. Hraní počítačových her má však stále pověst negativní aktivity vedoucí k závislosti a neschopnosti chápat důsledky agresivního jednání v reálném životě. Panika z počítačových her jako nového média je zde vyvolána způsobem, kterým jsou digitální hry představovány konzumní společnosti a pro spoustu lidí je tak myšlenka edukativní funkce počítačových her nemyslitelná. Archetyp uhrovatého adolescenta permanentně zavřeného ve svém pokoji hrajícím FPS hry (first-person shooter, střílečka z pohledu první osoby) na své konzoli, který má problémy se začleněním do společnosti, se objevuje téměř v každém americkém filmu. Kromě toho se počítačové hry jako takové objevují v ostatních médiích pouze zřídka a většinou ve spojitosti s negativní událostí, například loupeží či ublížením na zdraví spojovaném se skutečností, že pachatel (kterým je ve zprávách často dítě), okoukal agresivní jednání v počítačové hře a přenesl ho do reálného života. Bendová však tvrdí, že neexistuje žádná studie, která by potvrzovala, že agresivní chování v závislosti na hraní počítačových her je kauzalitou: „To, že lidé se zvýšeně agresivním typem osobnosti rádi hrají násilné hry, neznamená, že jim takto osobnost zformovaly hry – možná měli takovou osobnost už předtím, a navíc si tento typ her možná vybírají právě proto, aby se v rámci nich „vybili“. Jinak řečeno to, že existuje určitá korelace mezi agresivní osobností a hraním násilných her, neznamená, že je tam jasná kauzalita.“ (9), zmiňuje ve své knize Bendová. Každopádně ať už existuje spojitost mezi hraním počítačových her a agresivitou v reálném životě, nebo ne, týká se to her akčních či bojových, her z válečného prostředí a her, kde je herní princip založený na násilí. To však splňuje pouze část her a tento názor na hry tedy nelze generalizovat.

11

4.2 Opomíjené formy edukace v počítačových hrách

Existují hry, které se vyloženě zaměřují na výuku konkrétní problematiky, například nástroje na opakování slovíček cizího jazyka, zeměpisné orientace, historických skutečností, ale i pohybových dovedností. Takové hry jsou v dnešní době již na mnoha školách součástí výuky. Já se však v této části práce zaměřuji na hry, jejichž hlavní záměr nebyl čistě edukativní a edukativní funkce jim často není společností přisuzována, ačkoliv je patrná, nebo jim je přisuzována až druhotně.

4.2.1 Historie

Historická doba je v počítačových hrách vyobrazována velmi často. Někdy jsou ve hře převzaty jenom některé prvky, například středověká architektura, společenské pozice či móda doplněné o prvky smyšlené, například magie a draci. Existují však i tituly, které se snaží co nejvěrněji vystihnout konkrétní historické období, nebo civilizaci. Můžeme zmínit například nedávno publikovanou hru Kingdom Come: Deliverance, v níž se čeští vývojáři snažili vystihnou co nejvěrněji historickou dobu, včetně modelování reálných lokací. Ačkoliv někteří historici nesouhlasí s výslednou historickou přesností, na základě hry Kingdom Come vznikne od podzimu 2018 nový předmět na Masarykově univerzitě v Brně a historická hra se tak stane výukovým materiálem. Mgr. Stanislav Bárta, Ph.D. z Ústavu pomocných věd historických a archivnictví Masarykovy Univerzity uvádí k předmětu, že „jeho cílem bude jednak představit dobu, ve které se hra odehrává, ale současně také názorně ukázat rozdíl mezi tím, jak vytváří obraz o minulosti historik a tím, jak dějiny představuje popkultura.“ (16) Typické hry vyobrazující historické prostředí jsou strategické hry. Herní série Age of Empires (17) je založená na historických faktech a poskytuje hráči možnost hrát a rozvíjet konkrétní národ. Obsahuje také sekci s výtažky z historie jednotlivých národů a kampaň obsahující reálné historické postavy. Podobně tahová strategie Civilizace (18) dává hráči obraz o tom, jak se vyvíjela civilizace zhruba od roku 4000 př. n. l. až do současnosti.

12

4.2.2 Psychologie

Příběh počítačové hry může vést k sebereflexi hráče a hlubokému zamyšlení nad tématem. V některých hrách najdeme psychicky narušenou postavu v postavení záporné postavy, v některých se do takové postavy vžíváme a prožíváme s ní její stavy. Zdravá osoba se tak může dostat do prostředí emocionálně silného, které ji vtáhne natolik, že si může vyzkoušet prožívat pocity psychicky narušených jedinců a dostat do svého povědomí informace o konkrétní duševní poruše. Uvedu například hru Hellblade: Senua’s Sacrifice, kde v roli hlavní hrdinky, keltské válečnice Senuy, zažije hráč halucinace a stavy psychózy, pro jejichž přesné vystižení vývojáři konzultovali příběh s neurology. „Téma bylo důvěryhodně přezkoumáno profesionály, ale i lidmi, kteří byli nebo stále jsou v kontaktu s tímto typem onemocnění“ (19).

4.2.3 Simulátory

Některé simulátory jsou vytvářeny primárně pro zábavu, ačkoliv jejich funkce, tedy aby si hráč vyzkoušel, jaké to je provozovat nějakou novou činnost, případně činnost, ke které by se v reálném životě nedostal, je, pokud hráč již nezná všechny možnosti simulátoru nazpaměť, edukativní.

4.2.4 Pravidla a zákony

Naučit se pravidla sportu nebo deskové hry mohou usnadnit sportovní počítačové hry nebo karetní či deskové počítačové hry. Pokud se tedy člověk chce naučit hrát třeba fotbal, může maximalizovat čas strávený nad učením se pravidel, i pokud například venku prší, tak, že si zahraje herní sérii FIFA. Kromě toho některé například závodní nebo RPG hry obsahují policii, se kterou je třeba se vypořádat při porušení zákona ve hře. To může mít za důsledek uvědomění si zákonů v reálném životě.

13

5 Edukativní hry zaměřené na programovací jazyky

Ačkoliv jsem neobjevila hru, která by jakkoliv zpracovávala více programovacích jazyků zároveň1, existuje spousta dalších her, které se zaměřují na právě jeden programovací jazyk, případně na programování jako celek bez zaměření na programovací jazyky. Některé jsou čistě výukové, jiné mechaniky programování využívají pro zábavní účely. Vybrala jsem několik zástupců, které mají kladné recenze nebo mi přišly dobře zpracované a užitečné.

5.1 ASM HELL

Hra simulující programování v assembleru. Hráč se nachází v podzemí uvězněn 13 vrstev hluboko v pekle, odpovídajících 13 herním úrovním. Pomocí příkazů v assembleru, kterým je dáván nový význam, který však logicky koresponduje s reálným významem, se hráč pohybuje a otevírá zamknuté dveře. V pokročilejších úrovních už je potřeba zamyslet se nad vhodným algoritmem a pracovat vhodně s cykly. Hra je velmi chytlavá, učí hráče používat příkazy postupně, proto se hráč snadno dostane do cviku a stráví více času nad promýšlením algoritmů než zjišťování, co který assemblerový příkaz dělá.

1 Objevila jsem však článek, který přirovnává jednotlivé programovací jazyky k Pokémonům, zdroj: https://www.codementor.io/learn-programming/what-if-pokemon- programming-languages. Pokémon je původně slavná videohra společnosti Nintendo, článek tedy hledá podobnosti mezi programovacími jazyky a charaktery z videohry.

14

Obr. 5.1 ASM HELL – ukázka ze hry (20)

5.2 TIS-100

Další hra simulující programování v assembleru. Trochu náročná pro člověka, který nikdy neprogramoval, pro ostatní však může posloužit jako skvělý procvičovací nástroj, případně vyloženě nástroj pro naučení základních příkazů assembleru. Hráč dostane za úkol zpracovat vstup poslaný do počítače TIS-100 na požadovaný výstup. Při tom má k dispozici pouze základní operace jako sčítání, odčítání a předávání čísel, složitější operace si musí sám naprogramovat. Hra je podložená příběhem, který lze najít v manuálu hry, zpracovaném jako tajný vládní dokument.

Obr. 5.2 TIS-100 - ukázka ze hry (21)

15

5.3 Human Resource Machine

Logická hra z prostředí průmyslové továrny. Hráč zde má za úkol „naprogramovat“ úředníky a automatizovat tak provoz. Hra sice nemá hlubší příběh, obsahuje však originální atmosférické prvky jako grafiku spojující vektorovou grafiku a fotografie, která společně s hudbou evokuje mrazivou atmosféru. Pro programátora nabízí hra možnost trénovat schopnost napsat krátký program s co možná nejnižší časovou složitostí. Na druhou stranu ani pro člověka, který nikdy neprogramoval, není příliš složité jednotlivé úrovně dokončit. Příkazy jsou objevovány postupně, vždy s příkladem použití, a tedy se ve hře nenachází žádné složité formulace které by obyčejný člověk měl problém pochopit. Populárně edukativní charakter hry potvrzuje i komentář jednoho z hráčů, vystupujícího na stránce (kde je hra dostupná k zakoupení) pod přezdívkou Lokken: „Programování mě na škole nebavilo. Štvaly mě všechny ty závorky, všechny ty podmínky a vůbec programovací jazyk mi fakticky nic neříkal. Ale tohle! Naprosto promakaná programovací hra, která nejen že naučí programovat jakéhokoliv „lúzra“, ale také ho pro programování nadchne, že nebude moct přestat, dokud mu vedle výtahu nebudou svítit obě tlačítka. (Pochopíte, až hru spustíte) …“ (22).

Obr. 5.3 Human Resource Machine – ukázka ze hry (23)

5.4 Shenzen I/O

Jedná se o nástupce TIS-100 a SpaceChem. Velmi rozsáhlá a zajímavá hra od , ve které se lze stát zaměstnancem obří čínské společnosti a stavět

16 obvody z různých součástek a následně programovat mikroprocesory, opět v jazyce podobném assembleru. Lze plnit úkoly a stavět požadované obvody, nebo v otevřeném módu vytvářet vlastní obvody. „Během hry vytváříte různé obvody za použití kolekce komponent od různých výrobců, jako jsou logické členy, paměti, LCD obrazovky a mnoho dalšího. Hra obsahuje sérii úrovní a každá úroveň vyžaduje dokončení konkrétních úkolů k postoupení do další úrovně. Postupně se hra stěžuje. Shenzen I/O nabízí obsah, jako jsou technické diagramy, psaní kódu, silný assembler, různé výrobce a mnohem více.“ (24) Jedná se o jednu z her reálně používanou ve výuce na některých školách. „Shenzen I/O je stejně tak hra, jako nástroj k učení. Následujíc hry jako SpaceChem, je poskytován zdarma do škol, které o něj zažádají. Na druhou stranu je to komplexní produkt, náročný na pochopení a hraní s velmi strmou křivkou obtížnosti“ (25), napsal Alessandro Mazzega ve své recenzi na tuto hru.

Obr. 5.4 Shenzen I/O – ukázka ze hry (24)

5.5 VIM Adventures

Poslední hra, kterou jsem zařadila, se netýká vyloženě programovacího jazyka, nýbrž textového editoru. Uvádím ji zejména z důvodu, že to byla první hra tohoto charakteru, na kterou jsem při vyhledávání podobných her narazila a velmi mě zaujala. Kromě toho psaní v editoru VIM se dá řídit příkazy přes příkazovou řádku

17 v editoru, případně přes klávesové zkratky charakterizující příkazy, takže hra minimálně povahou do této kategorie spadá. Ve hře má hráč za úkol projít herní úroveň po políčkách které mají různé vlastnosti. Některá políčka nelze překonat jednoduchým posunem, hráč musí použít klávesové zkratky, které by použil ve VIMu pro orientaci v textu.

Obr. 5.5 VIM Adventures – ukázka ze hry (26)

18

6 Vývoj hry

Hlavní částí této bakalářské práce je samotný vývoj hry. Hra sestává ze tří herních úrovní motivovaných programovacími jazyky C, Java a JavaScript. Tyto jazyky jsou vybrány zejména pro jejich popularitu (Java a C jsou podle průzkumu TIOBE Language Community index (27) dlouhodobě na prvních dvou pozicích a JavaScript se dlouhodobě umísťuje v první desítce), vzájemnou odlišnost a velké množství charakteristických prvků. Tvorba hry začala prototypem herní úrovně C, která se pak dále rozvíjela a byla implementována.

Obr. 6.1 Prototyp herní úrovně C

6.1 Průzkum

V rámci inspirace a snahy o pokrytí co největšího množství názorů jsem vytvořila dotazník obsahující několik otázek týkajících se programovacích jazyků. Výsledky dotazníku mi posloužily pro finální výběr použitých jazyků, potvrdily domněnky ohledně vhodnosti obsahu herních úrovní a zviditelnily prvky jazyků, které má cenu vizualizovat. První otázka zjišťovala, s jakými programovacími jazyky má respondent zkušenost. Další otázky navazovaly na odpověď této otázky. Zjišťovaly, v čem tkví

19 výhody a nevýhody uvedených programovacích jazyků, co na nich má respondent rád nebo naopak rád nemá, co mu na kterém programovacím jazyce přijde specifické a v čem se liší od ostatních programovacích jazyků. Dále jsem se ptala, jaká první věc se respondentovi vybaví, když zaslechne název daného programovacího jazyka a se kterou barvou si ho spojuje.

Obr. 6.2 Ukázka dotazníku

20

Dotazník byl veřejný, šířila jsem ho však zejména mezi svými známými informatiky. Dotazník vyplnilo 25 respondentů. U některých se dotazník setkal s nepochopením, jiní uvedli vyčerpávající odpovědi.

S jakými programovacími jazyky máte zkušenosti?

20 15 10 5 0 Programovací jazyky

Assembler Python C C++ Java JavaScript C# Prolog Haskell VisualBasic Pascal Ruby PHP Bash SQL VHDL ABAP GMPL Lisp Perl Groovy

Graf 1 Programovací jazyky, se kterými mají zkušenost respondenti

Dotazník obsahoval otázky dotazující se na subjektivní vjemy každého respondenta. Nebyl tedy zaměřen na dovednosti či zkušenosti s programováním v daném jazyce.

C Java JavaScript

Černá Červená Azurová Žlutá Bílá Žlutá Zelená Bílá Modrá Růžová Oranžová Červená Zelená Šedá Červená

Graf 2 Jaká barva se evokuje respondentům při pomyšlení na daný programovací jazyk

21

6.2 Příběh

Příběh hry se odehrává v počítači. Je poměrně abstraktní a používá veliké množství metafor. Příběh by se měl odvíjet od účelu a od skupiny lidí, pro kterou je obsah určený. V tomto případě je hra přístupná a hratelná pro širokou veřejnost, primárně se však zaměřuje na informatiky, ještě konkrétněji studenty informatiky. Jak napsal a citoval jiné umělce Edgar Dutka ve své knize Scenáristika animovaného filmu, „Adresa příjemce do velké míry ovlivňuje, jak své téma uchopíme. U adresy sobě rovným bezezbytku platí, co řekl Václav Špála o malířství: „Když maluji obraz, tak maluji sebe“. Podobně se vyjádřil skvělý režisér-animátor Chuck Jones, když prohlásil: „Nedělám filmy pro celou rodinu, dělám filmy pro sebe“. Něco podobného řekl o svých filmech i Jiří Trnka.“ (28). S tímto názorem se do veliké míry ztotožňuji a jelikož já spadám do kategorie příjemců, kterým je hra určená, zaměřovala jsem se na věci, které jsou mi blízké a které mi přijdou zábavné. Konkrétní místo, kde se hlavní hrdina nachází, není nijak více definováno. Na začátku se nachází na poklidném místě, spí. Ze spánku ho však probudí svět devastující kreatura a výbuch, který ho pohltí. Hlavní hrdina se objeví v prázdnotě a netuší, co se děje. Tato prázdnota charakterizuje abstraktní místo v počítači, kam se dostanou neuložená data poté, co nastane modrá smrt.

22

Obr. 6.3 Modrá smrt na Windows 8/10 (29)

Obr. 6.4 Modrá Smrt ve hře

Hlavní hrdina se dozví, že jediná možnost, jak se z prázdnoty dostat, je najít a porazit Modrou Smrt. Netuší však o koho nebo o co se jedná, je však odhodlaný na to přijít a Modrou Smrt najít. Hlavní hrdina propadne imaginární

23 počítačovou strukturou až na úroveň programovacích jazyků s nejmenší mírou abstrakce. Dále se příběh odvíjí od jednotlivých herních úrovní. Hrdina prochází dané herní úrovně od jazyků s nejmenší mírou abstrakce až po ty nejabstraktnější. V každé řeší problémy herních charakterů, které se v dané úrovni nacházejí. V současnosti existují 3 herní úrovně, v pořadí C, Java, JavaScript. Ve chvíli, kdy hrdina dokáže projít poslední herní úrovní, JavaScriptem, neobjeví se v nové herní úrovni, ale v prostředí, kde nachází Modrou Smrt, která si užívá svoji nadvládu nad počítačem. Zcela cíleně je zde cíleno na hráčovy emoce, kdy hráč po celém tomto dobrodružství musí pochopit, že hlavní hrdina, charakterizující neuložená data, po útoku Modré Smrti nenávratně zmizí. Jedinou polehčující okolností je, že hlavní hrdina byl před útokem Modré Smrti „automaticky uložen“ a hráč se tedy může vrátit na začátek hry a hrát hru opakovaně.

24

6.3 Animace a grafika

Animace lze ve hře najít v rámci úvodního videa, finálního videa a v jednotlivých herních úrovních jako animace některých charakterů. Kromě toho je naanimován hlavní hrdina, který má specifickou animaci pro pohyb, tedy chůzi, skok a pád. Veškerá grafika ve hře, jak stacionární, tak animovaná, kromě některých geometrických prvků pozadí, je kreslena ručně, tužkou na klasický kancelářský papír gramáže 80 g/m2 formátu A4. Po nakreslení jsou kresby naskenovány a v programu Adobe Photoshop ořezány, aby neobsahovaly pozadí. Pokud je na jednom listě papíru více kreseb, postupuji tak, že všechny kresby oříznu, každou dám do nové vrstvy a poté funkcí Soubor -> Skripty -> Exportovat vrstvy do souborů… vyexportuji jednotlivé obrázky použité ve hře. Ty pak buď přímo použiji, nebo je v programu Adobe After Effects naanimuji.

Obr. 6.5 Ukázka ilustrací

25

6.4 Charaktery

6.4.1 Hlavní hrdina

Hlavním hrdinou je drak Furfur. Jeho věk není definovaný, v samotné hře je vyobrazen jako dračí mládě, je ale možné ho zobrazovat jako dospělého jedince. Furfur má hlavu z jedné strany zakončenou párem malých růžků na každé straně a dvěma dlouhými rohy, z druhé strany zobákem navazujícím na tlamu plnou zubů. Ocas má zakončený krystalem. Jelikož se jedná o křížence draka a koně, má na zadních tlapách kopyta. Jeho podoba je však proměnlivá, proto ho lze vyobrazit i s normálními zadními tlapami. V jednotlivých herních úrovních může mít Furfur různé schopnosti. Speciální schopnost se spouští klávesou C a bez jejího použití není možno úroveň dokončit. Pokud úroveň nemá svoji speciální schopnost, lze úroveň dokončit i bez speciální schopnosti. Furfura je možné zobrazovat s křídly i bez křídel. V některých budoucích úrovních hry bude mít Furfur schopnost magicky si křídla vytvořit a létat.

6.4.2 Vedlejší postavy

Vedlejší postavy jsou jedna z nejdůležitějších součástí práce. Charaktery vedlejších postav ztělesňují konkrétní jevy z programovacích jazyků. Vzhled či charakterové vlastnosti vedlejších charakterů odrážejí jejich podstatu v programovacím jazyce, nebo ztvárňují osobu/věc, jejíž název má jazykovou podobu s daným jevem v programovacím jazyce. S vedlejšími postavami je možno interagovat. Pokud hráč odhalí, jaký jev daná postava ztvárňuje, je pro hráče typicky jednodušší splnit úkol, který mu daná postava zadala. Úkoly zadávané vedlejšími postavami jsou však možné splnit i v případě, že hráč nemá tušení, o jaký jev v programovacím jazyce se jedná. V takovém případě je možné si na stránce, kde je hra zveřejněná, dohledat, o jaký jev se jedná a hráči je tak umožněno získat nové informace, které může zužitkovat i v běžném životě.

26

6.4.2.1 C

6.4.2.1.1 Tučňák Tux

Tučňák Tux je maskot operačního systému . Linux je primárně naprogramován v programovacím jazyce C, což je důvod, proč je Tux zvolen i za maskota úrovně C.

Obr. 6.6 Tučňák Tux

27

6.4.2.1.2 Smutný chlapec

Smutný chlapec, aktivista s tričkem „be Free()“ odkazujícím na metodu používanou k uvolňování paměti, správně nespravoval paměť a nechal si svoji paměť „uniknout“. Dává hráči za úkol najít svoji uniklou paměť.

Obr. 6.7 Smutný chlapec

6.4.2.1.3 Uniklá paměť

Únik paměti je jeden z typických problémů, na které si musíme dávat v jazycích, které nemají garbage collector, pozor. Takovýmto jazykem je i jazyk C. K úniku paměti dochází, pokud programátor alokuje paměť a zapomene ji po jejím využití uvolnit. Jelikož se dá paměť definovat jako ukládání informací k opětovnému využití v mozku, je zde uniklá paměť vyobrazena jako malý mozek.

Obr. 6.8 Uniklá paměť

28

6.4.2.1.4 Primitivní datové typy

Primitivní datové typy jsou v programovacím jazyce elementární datové typy udávající základní stavební jednotku programu. Například typ float nebo dva typy zmíněné ve hře, int a char, zastupující nejmenší adresovatelnou jednotku paměti. Primitivní datové typy jsou zde vyobrazeny jako neandrtálci, které z jejich zaostalosti vysvobodí pouze spojení v textový řetězec, string. To je možné tím, že char je textový znak a hodnota typu int, tedy celé číslo, se dá na textový znak převést.

Obr. 6.9 Primitivní datové typy

6.4.2.1.5 Michal David

Ve hře lze najít i známého českého hudebníka, Michala Davida, jehož hitem se stala píseň Céčka o sběratelství malých plastových písmenek C oblíbených zejména v 80. letech 20. století.

Obr. 6.10 Michal David

29

6.4.2.1.6 Null Terminátor

V programovacím jazyce C jsou textové řetězce takzvaně „null-terminated“, tedy ukončeny nulovým znakem '\0'. Terminátor je také postava ze stejnojmenného filmu z roku 1984, jedná se o zabijácký stroj podobný člověku. Ve hře je do podoby Terminátora ztvárněn Null Terminátor, nacházející se na konci úrovně C. Pro pokračování do další úrovně je potřeba Null Terminátora porazit. Null Terminátora lze porazit odstřelováním textových znaků až do doby, než přeteče a rozplyne se. V reálném životě k přetečení textového řetězce dochází, pokud ho programátor zapomene ukončit nulovým znakem, nebo tento znak nedopatřením přepíše znakem jiným.

Obr. 6.11 Null Terminátor

30

6.4.2.2 Java

6.4.2.2.1 Jawa

Jawové jsou humanoidní rasa z filmové ságy Hvězdné Války, známí sběrem elektroniky, součástek či celých robotů které následně prodávají. V úrovni Java je Jawa maskotem sedícím na začátku úrovně. Za motorku je ochoten prodat pro něj nedůležitý občanský průkaz.

Obr. 6.12 Jawa

6.4.2.2.2 Garbage Collector

Garbage collector je funkce automatické správy paměti, která uvolňuje již nepoužívanou paměť. Java je jeden z programovacích jazyků, pro které je garbage collector typický. Ve volném překladu se jedná o „sběrač odpadu“, je tedy vyobrazen jako uklízeč.

Obr. 6.13 Garbage collector

31

6.4.2.2.3 Silná typová kontrola

Java vyžaduje silnou typovou kontrolu, umožňuje tedy operace nad striktně určenými datovými typy. V této úrovni je vyobrazena jako celník vyžadující identifikaci hlavního hrdiny.

Obr. 6.14 Silná typová kontrola

6.4.2.2.4 Pojídač beránků

V okruzích, kde je Java neoblíbený jazyk, je častým argumentem pro toto stanovisko to, že má velikou spotřebu operační paměti, RAM. Ram, v překladu z angličtiny beran. V jeskyni pod knihovnou v úrovni Java žije tedy monstrum, které pojídá beránka.

Obr. 6.15 Pojídač beránků

32

6.4.2.2.5 JAWA 350

Známá motorka českého výrobce oblíbená v minulém století.

Obr. 6.16 JAWA 350

6.4.2.2.6 CEO

Výkonný ředitel obchodní společnosti, který chce mít vše „právě včas“. Java využívá tzv. just-in-time kompilaci, tedy za běhu programu překládá jeho kód do strojového kódu čímž urychluje běh programu.

Obr. 6.17 CEO

33

6.4.2.3 JavaScript

6.4.2.3.1 MPJ

Mattias Petter Johansson známý jako MPJ je švédský youtuber/programátor zaměřující znatelnou část svých videí na JavaScript. Ve své sérii Fun Fun Functions často používá jako příklad koťátka nebo draky.

Obr. 6.18 MPJ

6.4.2.3.2 Vombat

Npm je největší světový registr softwaru a nejpoužívanější správce balíčků pro JavaScript. Maskot npm je vombat. Proto je zde vyobrazen jako obchodník, který v každé iteraci poskytne k prodeji nějaký balíček.

Obr. 6.19 Vombat

34

6.4.2.3.3 Lukostřelec

Lukostřelec odkazuje na klíčové slovo „this“ a častý problém, který nastává, pokud v JavaScriptu používáme funkci, obsahující toto klíčové slovo, na kterou jsme předtím nepoužili metodu „bind“. Program v takovém případě nemusí vědět, na co se „this“ odvolává. Jedno z dalších řešení tohoto problému je zapsat funkci jako tzv. lambda výraz neboli „arrow function“. Proto když se obyčejný lukostřelec změní na Arrowa z komiksového světa DC, nedělá mu najednou problém vidět plošinku charakterizující objekt, na který je odkazováno pomocí „this“.

Obr. 6.20 Lukostřelec

6.4.2.3.4 Heimdal

Bůh ze severské mytologie, jeden z balíčků npm.

Obr. 6.21 Heimdal

35

6.4.2.3.5 Loki

Bůh ze severské mytologie, jeden z balíčků npm.

Obr. 6.22 Loki

6.4.2.3.6 Zeus

Jeden z nejvyšších bohů řecké mytologie, jeden z balíčků npm.

Obr. 6.23 Zeus

36

6.4.2.3.7 Nodegod

Jeden z balíčků npm umožňující správu balíčků. Proto je jeho název odvozen od boha.

Obr. 6.24 Nodegod

6.4.2.3.8 Drak Flufflekins

Jak je zmíněno u MPJ, rád ve svých videích používá při uvádění příkladů draky. Velmi časté jméno, které svým drakům dává, je Flufflekins. Někdy MPJ uvádí, že Flufflekins je malý elektrický drak, jindy, a podle toho je zde vyobrazen, že Flufflekins je veliký robo-drak.

Obr. 6.25 Flufflekins

37

6.5 Implementace

Pro vytvoření hry byl využit program Unity 2017.3. Hra byla vyexportována pro Web GL, tedy JavaScriptové rozhraní pro zobrazování aplikace na webu. Jelikož tato bakalářská práce není primárně zaměřená na vytvoření hry originální z technického a programátorského hlediska, ale je zaměřená na uměleckou stránku a na výstup, který je viditelný pro uživatele, dovolila jsem si základ hry převzít z volně dostupného tutoriálu Adventure game tutorial (30). Tento tutoriál poskytuje základní strukturu hry, ne zcela uzpůsobenou mým potřebám. Hra vytvořená podle tohoto tutoriálu sice typově mé hře odpovídá a nabízí téměř veškeré potřebné prostředky pro vytvoření mé hry, spoustu částí jsem si i přes to musela přizpůsobit.

Obr. 6.26 Ukázka ze hry podle Adventure Game Tutorial (30)

Základní funkcionalita je v této hře založená na podmínkách a reakcích. Každý objekt, se kterým lze interagovat, obsahuje kolekci podmínek a kolekci kolekcí reakcí. Podle toho, která podmínka je splněna, je zavolána kolekce reakcí, které se mají provést.

38

V původním tutoriálu je reakce spouštěna klikem myši, vytvořila jsem tedy skript, který umožňuje spustit reakci jiným způsobem, a to klávesou X, pokud hráč stojí u objektu, se kterým reaguje. Reakce přejaté z tutoriálu jsem poupravila podle potřeby. U textové reakce jsem například musela vyřešit správnou kontinuitu textů a správce textů tak, aby se text objevoval po písmenku, optimalizovat rychlost psaní textu a umožnit hráči vypsat celý text po stisku akční klávesy X, i pokud je teprve ve fázi vypisování. Také jsem musela správce textů přepsat doplnit o funkci, která zajistí, že se jednotlivé textové zprávy automaticky rozdělí tak, aby se vešly do textového pole. Přidala jsem reakci pro spuštění konkrétní metody, která nebyla mezi reakcemi zahrnuta. Další změna, kterou jsem musela provést, je patrná z obrázku 6.26. Nejpatrnější rozdíl mezi tutoriálovou hrou a hrou Furfur The Languagefighter je, že tutoriál slouží pro vytvoření 3D hry, kdežto má hra je 2D. Proto jsem některé skripty musela upravit, aby se neodkazovali na třídy 3D objektů, ale třídy 2D objektů. Kromě upravené struktury skriptů převzatých z výše uvedeného tutoriálu jsem vytvořila skripty pro ovládání hrdiny, zvuků a scény. Také jsem vytvořila skript na přehrávání videa. Při tvorbě tohoto skriptu jsem se setkala s problémem, že použitá verze Unity nepodporuje video z lokálního zdroje při exportu pro Web GL, Tento problém jsem vyřešila tím, že jsem video nahrála do online adresáře, a na video odkazuji přes jeho URL adresu. Toto řešení je prozatím dostačující, při delší životnosti hry však může dojít k problémům způsobeným tím, že video není přímou součástí hry, a tak se snadněji může stát, že bude nezávisle na hře odstraněno/přesunuto/jiným způsobem nedostupné, a hra k němu ztratí přístup. Proto bych ráda v budoucích verzích hry, jakmile bude Unity podporovat interní zdroje videí, tento zdroj změnila na lokální.

39

40

7 Budoucí rozšíření práce

Jak bylo zmíněno, programovacích jazyků je přes 2000 a v této hře jsou naimplementovány zatím pouze 3. Věřím, že na každém programovacím jazyce se dá najít něco zajímavého a odlišného, a pokud ne, může být zajímavý tím, jak je nezajímavý.

Obr. 7.1 Názvy některých programovacích jazyků (31)

V aktuálním konceptu hry jsou jazyky seřazeny podle míry abstrakce. Ráda bych, aby hlavní hrdina Furfur začínal ve strojovém kódu a assembleru, uvažuji nad úrovní, kde by skákal přes děrné štítky. Seřazení podle míry abstrakce bych ráda zachovala, při větším počtu úrovní by však bylo problematické určit jednoznačné pořadí. Ráda bych proto vytvořila širší mapu, která by se větvila a umožnila tak úplně oddělit například značkovací jazyky, imperativní a neimperativní jazyky, a podobně. Kromě „seriózních“ denně používaných jazyků chci hru rozšířit o bonusové úrovně, k nimž lze získat přístup buď po splnění zvláštního úkolu, nebo posbírání určitého množství speciálních předmětů. V těchto úrovních by mohly být vizualizovány například ezoterické jazyky Brainfuck, Whitespace, OstraJAVA nebo feministický jazyk C+=.

41

Jelikož je hra implementovaná v Unity, nebylo by problematické hru vyexportovat například pro mobilní telefony, v takovém případě by stačilo vhodně změnit ovládání a přizpůsobit rozlišení a hra by se tak stala ještě dostupnější. V kapitole 6.5 uvádím současný problém s interními videi ve Web GL, ve chvíli, kdy bude tento problém v Unity vyřešen, chtěla bych video vyexportovat jako součást hry namísto odkazování na URL, kde je video nahrané.

42

8 Závěr

Cílem práce bylo vytvořit hru, která by v každé herní úrovni vizualizovala jeden programovací jazyk. Praktickým výstupem práce je počítačová hra dostupná na webu. Její zdrojové soubory lze dohledat v příloze. Hra obsahuje příběh s informatickou tématikou a v každé ze tří herních úrovní vizualizuje jeden programovací jazyk, jmenovitě jazyky C, Javu a JavaScript. Hra je vtipně zpracovaná a zachovává si edukativní funkci. Kromě toho tato práce obsahuje teoretický rozbor jednotlivých názorů na otázku, zda lze počítačové hry považovat za umělecká díla. Pojem počítačové hry je natolik široký a názory na samotné umění se různí, tedy na tuto otázku nelze jednoznačně odpovědět. Práce se dále zabývá rozborem edukativních her a konkrétními hrami, které mají za úkol hráče naučit či potrénovat konkrétní programovací jazyk, nebo programování obecně. Takovýchto her můžeme najít více, v rámci průzkumu se mi však nepodařilo najít takovou, která by trénovala více konkrétních programovacích jazyků zároveň. Během práce se mi potvrdilo, že programovací jazyky jsou zdrojem veliké inspirace, pokud se na ně podíváme z jiného hlediska, než je jejich prvoplánový účel. Jejich prvky, principy a příkazy jsou často, buď oficiálně, nebo slangově pojmenovány podle nějaké skutečnosti z běžného života. U těch je vizualizace jednoduchá. Větší výzvou je vizualizace prvků, které nemají s běžným životem mnoho společného. Téměř vždy však lze najít nějakou metaforu, kterou takový prvek ztvárnit. Nejnáročnější na vizualizace jsou ty prvky, které jsou pojmenovány vlastními jmény. Do budoucna bych zejména ráda rozšířila hru o další herní úrovně charakterizující další programovací jazyky a umožnila hru přenést i na jiné platformy, například mobilní zařízení.

43

44

9 Citovaná literatura

1. Programovací jazyk. Wikipedia: the free encyclopedia. [Online] Wikimedia Foundation, 2011. [Citace: 11. 10 2017.] https://cs.wikipedia.org/wiki/Programovac%C3%AD_jazyk. 2. Programovací jazyk. Wikisofia. [Online] https://wikisofia.cz/wiki/Programovac%C3%AD_jazyk. 3. The Neverhood. Dream Works, 1996. 4. Cohen, Fred Di Giacomo and Otavio. Science Kombat. Superinteressante magazine, místo neznámé : autor neznámý. 5. Čikarová, Klára. Recenze: Čeští vývojáři potřetí okouzlují svět Samorostem. Týden. [Online] 9. 5 2016. [Citace: 7. 11 2017.] https://www.tyden.cz/rubriky/kultura/recenze-cesti-vyvojari-potreti-okouzluji- svet-se-samorostem_383003.html. 6. Jones, Jonathan. Sorry MoMA, video games are not art. The Guardian. [Online] 30. 11 2012. [Citace: 13. 6 2018.] https://www.theguardian.com/artanddesign/jonathanjonesblog/2012/nov/30/m oma-video-games-art. 7. Stuart, Keith. Are video games art: the debate that shouldn't be. The Guardian. [Online] 6. 12 2012. [Citace: 13. 5 2018.] https://www.theguardian.com/technology/gamesblog/2012/dec/06/video- games-as-art. 8. Is Crystal Dynamics Teasing A New Legacy Of Kain Game? Gameinformer. [Online] 21. 10 2017. [Citace: 17. 5 2018.] http://www.gameinformer.com/b/news/archive/2017/10/21/is-crystal- dynamics-teasing-a-new-legacy-of-kain-game.aspx. 9. Bendová, Helena. Umění počítačových her. Praha : Akademie múzických umění v Praze, 2016. ISBN 978-80-7331-421-7. 10. Cummig, Robert. Ottův slovník naučný, heslo "Umění". Praha : Slovart, 2007. 11. Kant, Immanuel. Kritika soudnosti. Praha : Oikoymenh, 2015 [1. vyd. originálu 1790]. ISBN 978-80-7298-500-5.

45

12. Adajian, Thomas,. The Definition of Art. Stanford Encyclopedia of Philosophy. [Online] 23. 10 2007. [Citace: 16. 5 2018.] https://plato.stanford.edu/entries/art- definition/. 13. The Role of Theory in Aesthetics. Weitz, Morris. 1, místo neznámé : Wiley, 1956, Sv. 15. 14. MANAGEMENTMANIA.COM LLC. Artefakty (Artifacts). ManagementMania. [Online] 20. 1 2017. [Citace: 16. 5 2018.] https://managementmania.com/cs/artefakty. 15. Bittanti, Matteo. Gamescenes: Art in the Age of Videogames. místo neznámé : Johan & Levi Editore, 2009. ISBN 978-8860100108. 16. Srp, Jan. Česká hra Kingdom Come bude sloužit jako výukový materiál na školách. Bonusweb. [Online] 5. 4 2018. [Citace: 6. 5 2018.] https://bonusweb.idnes.cz/kingdom-come-vyuka-skoly-0xq- /Novinky.aspx?c=A180404_074605_bw-novinky_srp. 17. Ensemble Studios. Age of Empires. místo neznámé : Microsoft Game Studios, 1997. 18. MicroProse. Civilizace. 1991. 19. Bukowski, Maciej. Reprezentacja i dyskusja o problemach społecznych i kulturalnych. Toruň : Uniwersytet Mikołaja Kopernika w Toruniu, 2018. 20. Zouhar, Vilém. ASM Hell. vilix.itch.io. [Online] 22. 4 2018. [Citace: 17. 5 2018.] https://vilix.itch.io/asm-hell. 21. Kinguin. BUY TIS-100 STEAM GIFT. Kinguin. [Online] [Citace: 17. 5 2018.] https://www.kinguin.net/category/18787/tis-100-steam-gift/. 22. Lokken. Human Resource Machine - Recenze. Steam. [Online] 28. 6 2016. [Citace: 16. 5 2018.] https://steamcommunity.com/app/375820/reviews/?browsefilter=toprated&snr =1_5_reviews_. 23. Human Resource Machine. Steam. [Online] 15. 10 2015. [Citace: 17. 5 2018.] https://store.steampowered.com/app/375820/Human_Resource_Machine/. 24. Games Like. 18 Games Like Shenzhen I/O. More Games Like. [Online] 28. 9 2017. [Citace: 16. 5 2018.] https://www.moregameslike.com/shenzhen-io/. 25. Mazzega, Alessandro. SHENZHEN I/O RECENSIONE. Everyeye. [Online] 23. 11

46

2016. [Citace: 16. 5 2018.] https://www.everyeye.it/articoli/recensione- shenzhen-i-o-31585.html. 26. Vim Adventures. alternativeTo. [Online] 23. 3 2017. [Citace: 16. 5 2018.] https://alternativeto.net/software/vim-adventures/. 27. TIOBE Language community index. TIOBE. [Online] 2018. [Citace: 5. 5 2018.] https://www.tiobe.com/tiobe-index/. 28. Dutka, Edgar. Scénáristika animovaného filmu - Minimum z historie české animace. Praha : Nakladatelství AMU, 2006. ISBN 80-7331-069-4. 29. Modrá obrazovka smrti. Wikipedia. [Online] 21. 8 2017. [Citace: 17. 5 2018.] https://cs.wikipedia.org/wiki/Modr%C3%A1_obrazovka_smrti. 30. Unity Technologies. Adventure Game Tutorial. Unity3D. [Online] [Citace: 12. 5 2018.] https://unity3d.com/learn/tutorials/projects/adventure-game-tutorial. 31. Dvořáková, Veronika. Nejoblíbenější programovací jazyky. Časopis FIT ČVUT. [Online] 17. 3 2016. [Citace: 21. 5 2018.] https://casopis.fit.cvut.cz/tema/1-2016- nej-programovacich-jazyku/nejoblibenejsi-programovaci-jazyky/. 32. The Definition of Art. The Stanford Encyclopedia of Philosophy. [Online] Center for the Study of Language and Information, Standford University, 2012. [Citace: 6. 5 2018.] https://plato.stanford.edu/. ISSN 1095-5054. 33. Hubáček, Stanislav. Grant Tavinor: The Art of Videogames [recenze]. Gamestudies. [Online] 15. 8 2013. [Citace: 6. 5 2018.] http://gamestudies.cz/recenze/grant-tavinor-the-art-of-videogames-recenze/.

47

48

10 Elektronické přílohy v IS

Součástí práce je soubor Attachments.zip který obsahuje: 1) Složku ProjectFurfur, obsahující projekt hry v herním prostředí Unity a veškeré zdrojové kódy a grafiku. 2) Složku Build, obsahující vyexportovanou aplikaci. (kromě toho je aplikace dostupná na webu https://www.fi.muni.cz/~xlanger3/Furfur/)

49