slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · slovenská...

74
Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova 3, 842 19 Bratislava 4 VREducation Dokumentácia k inžinierskemu dielu Názov a číslo tímu: enViRea (tím 17) Členovia tímu: Bc. Roman Hroš, Bc. Kristína Knapová, Bc. Adam Puškáš, Bc. Štefan Šebeň, Bc. Jicchág Šoltés, Bc. Patrik Vlk, Bc. Richard Žikla E-mail: [email protected] Názov projektu: VREducation Vedúci projektu: Ing. Juraj Vincúr Spolupráca: Moving Medical Media, s. r. o. Akademický rok: 2018/2019 (zimný semester)

Upload: others

Post on 30-Jun-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Slovenská technická univerzita Fakulta informatiky a informačných technológií

Ilkovičova 3, 842 19 Bratislava 4

VREducation

Dokumentácia k inžinierskemu dielu

Názov a číslo tímu: enViRea (tím 17)

Členovia tímu: Bc. Roman Hroš, Bc. Kristína Knapová, Bc. Adam Puškáš, Bc. Štefan

Šebeň, Bc. Jicchág Šoltés, Bc. Patrik Vlk, Bc. Richard Žikla

E-mail: [email protected]

Názov projektu: VREducation

Vedúci projektu: Ing. Juraj Vincúr

Spolupráca: Moving Medical Media, s. r. o.

Akademický rok: 2018/2019 (zimný semester)

Page 2: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

1

Obsah

1 Úvod ............................................................................................................................................. 2

2 Globálne ciele projektu (zimný semester) ................................................................................... 3

3 Celkový pohľad na systém ........................................................................................................... 4

3.1 Architektúra ................................................................................................................................ 4

3.1.3 Herný engine ........................................................................................................................... 6

3.1.4 Vývojová sada pre virtuálnu realitu ........................................................................................ 6

3.2 Vysokoúrovňová štruktúra ......................................................................................................... 6

3.3 Riadenie ..................................................................................................................................... 8

4 Moduly systému ........................................................................................................................... 9

4.1 Návrh .......................................................................................................................................... 9

4.1.1 Kontrola hry .......................................................................................................................... 10

4.1.2 Hlavná herná slučka .............................................................................................................. 10

4.1.3 Zber odpadkov ...................................................................................................................... 11

4.1.4 Počítanie skóre ...................................................................................................................... 13

4.1.5 Úprava stavu prostredia ........................................................................................................ 16

4.1.6 Ovládanie linky a generátoru ................................................................................................ 18

4.1.7 Generovanie odpadu ............................................................................................................. 21

4.1.8 Triediaca linka ....................................................................................................................... 25

4.1.9 Vysypávanie odpadkových košov ......................................................................................... 25

4.1.10 Ničenie odpadu ................................................................................................................... 27

4.1.10 Zvuky .................................................................................................................................. 28

4.2 Implementácia .......................................................................................................................... 28

4.3 Testovanie ................................................................................................................................ 29

5 Záverečné zhodnotenie .............................................................................................................. 30

Príloha A ............................................................................................................................................ 31

Príloha B ............................................................................................................................................ 32

Page 3: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

2

1 Úvod

Obsahom tohto dokumentu je technická dokumentácia projektu vypracovaného v rámci predmetu

Tímový projekt na tému Škola hrou vo virtuálnej realite – VREducation. Náplňou projektu

VREducation je vytvorenie edukačnej hry pre virtuálnu realitu (VR), ktorej cieľom bude oboznámiť mladšie

generácie (predovšetkým žiakov základných škôl) s určitým environmentálnym problémom zábavnou

a dynamickou formou, nabádajúc hráča na rozhodnutia, ktoré budú voči životnému prostrediu čo najšetrnejšie.

Po konzultácii s vedúcim projektu, ako aj zástupcami spolupracujúcej firmy (Moving Medical Media, s.r.o.),

sme sa rozhodli zamerať na problém separovania odpadu, zdôrazňujúc negatívny dopad na životné prostredie

v prípade nesprávnych hráčových rozhodnutí.

Aktuálna iterácia konceptu hry, ktorú náš tím vyvíja, zahŕňa prostredie recyklačnej linky, v rámci ktorej

je primárnou úlohou hráča triediť odpad (prichádzajúci po dopravníkovom páse) do niekoľkých druhov

kontajnerov na základe druhu konkrétneho odpadku (plast, papier, sklo a i.). Za správne rozhodnutia je hráč

odmeňovaný bodmi, vyjadrujúcimi jeho úspešnosť v hre, pričom nesprávne rozhodnutie, resp. nedostatočne

včasná reakcia má (odhliadnuc od úbytku bodov) za následok hromadenie odpadu na skládke, nachádzajúcej

sa vo vonkajšom prostredí v blízkosti separačnej linky. Zatiaľ čo v prvotných iteráciách hry je vonkajšie

prostredie „statické“ (hráčovi je umožnený iba pohľad doň skrz dvere budovy triediacej linky), vo finálnej

verzii počítame s možnosťou vyjdenia von z budovy, umožňujúc hráčovi vykonávať rôzne doplnkové aktivity

(napr. zbierať rozhádzaný odpad), ako aj vidieť dopad svojich rozhodnutí na vlastné oči (v podobe veľkosti

skládky či celkového znečistenia prostredia).

Tento dokument približuje celkovú víziu, architektúru a technickú časť projektu. V

jednotlivých kapitolách sú popísané globálne ciele projektu (kapitola 2), celkový pohľad na systém

(kapitola 3) a opis jednotlivých modulov systému (kapitola 4). Piatu časť dokumentu tvorí Záverečné

zhodnotenie po prvej fáze riešenia projektu. V rámci prílohy A uvádzame niekoľko obrázkov,

zachytávajúcich prostredie vyvíjanej hry, pričom príloha B obsahuje vygenerovanú technickú

dokumentáciu k implementácii a formálne záznamy z testovania produktu.

Page 4: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

3

2 Globálne ciele projektu (zimný semester)

Cieľom tímového projektu na zimný semester je vytvorenie hrateľného prototypu navrhovanej hry,

reflektujúceho základné požiadavky objednávateľa projektu na výsledný produkt.. Pre zabezpečenie

tohto globálneho cieľu je nutné vytýčiť si menšie ciele, na ktorých budeme následne stavať.

Prvým z cieľov je ujasniť si celkový koncept hry s partnerom (Moving Medical Media, s. r.

o.), pretože zadanie nešpecifikuje konkrétny environmentálny problém, žáner hry ani úroveň

grafickej hodnovernosti. Požiadavky na funkcionalitu sú diskutované vždy pri stretnutí s product

ownerom a menia sa na základe spätnej väzby, získanej prezentáciou aktuálnej verzie prototypu.

Po prvom stretnutí s partnerom bol ako cieľ špecifikovaný environmentálny problém –

triedenie odpadu na triediacej linke, kladúc dôraz na čo najvyššiu úroveň realizmu. Pre jej docielenie

je nutné nájsť a analyzovať vhodné, realistické modely a grafické prvky, ktoré budú tvoriť scénu hry.

Tieto modely budú delené na tri časti; prvou z nich sú modely pre vnútorné prostredie triediacej linky

(napr. dopravníkový pás, regály, rôzne potrubia, odpadkové koše atď.) Druhou časťou sú prírodné

prvky, ktoré budú tvoriť vonkajšiu scénu (sú to napr. stromy, kríky, tráva a pod.). Tretiu časť tvorí

samotný odpad. Pre každý typ odpadu (sklo, papier, plast atď.) je potrebné nájsť dostatočný počet

realistických modelov, následne je potrebné tieto modely vhodne kategorizovať, aby systém

zaznamenával správnosť vhodenia typu odpadu do správneho koša.

Ďalším z cieľov je vytvorenie vhodnej hernej mechaniky, tá musí byť navrhnutá tak, aby bola

hra zábavná, ale aby taktiež poukazovala na zvolený environmentálny problém. Aby mohol

používateľ triediť odpad, musí mu byť umožnená interakcia s objektami; ďalej je nutné, aby sa mohol

v prostredí pohybovať, čiže bude mať možnosť používať teleport, pretože prirodzený pohyb

v prostredí virtuálnej reality je vo všeobecnosti veľmi obmedzený.

Ďalším cieľom je s vhodnými, realistickými grafickými modelmi vytvoriť samotnú scénu –

triediacu linku a jej okolie, v rámci ktorej bude hráč triediť odpad. S týmto je spojená potreba vytvoriť

dynamický dopravníkový pás a náhodný generátor odpadu, ktorý bude na pás generovať odpad

rôzneho typu.

Pre zobrazenie úspešnosti triedenia je nutné vytvoriť indikátor hráčovho skóre, čo znamená

vytvoriť modul, ktorý bude zaznamenávať a následne zobrazovať správnosť triedenia. Pri

nesprávnom triedení sa bude skóre odpočítavať, pri správnom pričítavať.

Keďže koše, do ktorých bude používateľ odpad z pásu triediť, majú obmedzenú kapacitu, je

taktiež vhodné vytvoriť automatické rameno, ktoré bude koše s vytriedeným odpadom v pravidelných

intervaloch vysýpať.

Ako ďalší cieľ sme si zvolili poukázanie na zvolený environmentálny problém priamo v hre,

čiže aby ho hráč zažil “vlastnej koži” počas hrania. Zvolili sme vizualizáciu dynamickej skládky, tá

Page 5: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

4

sa pri správnom triedení zmenšuje a pri nesprávnom zväčšuje.

3 Celkový pohľad na systém

V rámci tejto kapitoly poskytujeme celkový pohľad na systém z pohľadu architektúry.

3.1 Architektúra

Náš systém je z podstaty projektu navrhnutý ako samostatná desktopová aplikácia, v ktorej sú

zahrnuté všetky údaje aj správanie systému a v ktorej komunikácia prebieha výhradne lokálne na

jednom počítači. Za jediné fyzicky oddelené časti systému sa dajú považovať rôzne periférne

zariadenia ako napríklad VR headset, avšak aj tieto sú súčasťou jedného výpočtového stroja, takže

ich nebudeme považovať za samostatné komponenty, čo je v súčasnosti bežná prax.

Samotná logika hry, ktorú my tvoríme, je pritom len jednou z viacerých súčastí

komplexnejšieho systému, v ktorom možno zo softvérového pohľadu určiť viacero softvérových

komponentov, z ktorých každý tvorí systém na inej úrovni abstrahovania funkcionality.

Takéto komponenty sme definovali 4:

• Logika hry

• Nadstavby enginu s nástrojmi pre virtuálnu realitu

• Herný engine

• Vývojová sada pre virtuálnu realitu

Ako piatu vrstvu by bolo možné zadefinovať vrstvu samotného hardvéru, ale tá z pohľadu softvéru

nie je zaujímavá a jej existencia je implicitná pre každý softvérový systém.

V našom projekte vytvárame iba komponent logiky hry a do ostatných komponentov nezasahujeme,

iba využívame funkcionalitu, ktorú poskytujú.

Vizualizáciu architektonického pohľadu na hru zachytávame na Obrázku 1.

Page 6: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

5

Obrázok 1: Vysokoúrovňový pohľad na architektúru hry.

3.1.1 Logika hry

Tento komponent zahŕňa predovšetkým konkrétnu logiku a audio-vizuálnu časť hry a stojí v hierarchii

architektúry systému na najvyššej úrovni abstrakcie. Je to v podstate to, čo hráč vníma ako hru.

Na logiku hry sa dá nazerať len ako na rozšírenie funkcionality herného enginu, ktorý jej

poskytuje vopred pripravené rozhrania na konkrétnu realizáciu. Zatiaľ čo sa teda logika hry zaoberá

tým, čo sa kedy zobrazí, vykoná a ozve, nijako sa už nestará o samotnú implementáciu zobrazovania,

fyzikálnej simulácie, či ozvučenia.

Mimo toho logika hry využíva aj nadstavbu enginu s nástrojmi pre virtuálnu realitu, ktoré jej

poskytujú hotové funkcie pre vysokoúrovňovú prácu s virtuálnou realitou. Avšak k enginu

nepristupuje výhradne cez túto nadstavbu a využíva aj priamo samotný engine.

3.1.2 Nadstavba enginu s nástrojmi pre virtuálnu realitu

Tento komponent je súborom knižníc pre prácu s virtuálnou realitou na veľmi vysokej úrovni.

abstrahovanej do realizácie typických herných prvkov a problémov, ktoré sa pri tvorbe VR hier tvoria

a riešia – napríklad interaktivita objektov, teleportácia, pohyb.

Knižnice boli tvorené podobne ako logika hry, rozširovaním funkcionality, týkajúcej sa

Page 7: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

6

virtuálnej reality, ktorá je už poskytovaná herným enginom, ibaže neboli určené na to, aby ony samy

predstavovali nejakú hru.

3.1.3 Herný engine

Herný engine je masívny komponent, ktorý z hľadiska programovania vo svojom vnútre drží

množstvo vlastných podsystémov, z ktorých sa každý stará riešenie iných typických,

nízkoúrovňových problémov, ktoré treba pri vytváraní videohier riešiť. Jedná s predovšetkým o také

problémy, ktorých riešenie je nezávislé od konkrétnej logiky hry ako napríklad renderovanie, tvorenie

3D scén, ozvučenie, fyzikálna simulácia, networking a pod. Vnútornú štruktúru tohto komponentu

však nemožno ďalej znázorniť, pretože sa jedná o komerčný projekt, ktorý utajuje informácie o

svojom architektonickom návrhu a svojom programovom kóde.

Herný engine taktiež zo svojej úrovne kontroluje celkové riadenie systému. Logika hry pritom

kontroluje iba logiku konkrétnej hry.

O hernom engine ako takom však nie je možné hovoriť ako iba o nejakom programovacom

„frameworku“, pretože podobne ako samotná hra presahuje programátorský rozmer a zahŕňa aj

nástroje na tvorbu multimediálneho obsahu, napríklad editory pre vytváranie 3D scény, animovanie

modelov a podobne.

3.1.4 Vývojová sada pre virtuálnu realitu

Vývojová sada pre virtuálnu realitu sú hardvérovo-závislé knižnice, ktorý sa nachádzajú veľmi blízko

hardvéru a ich úlohou je najmä komunikácia s týmto hardvérom. Knižnice tvoria tú najnižšiu úroveň,

na ktorej možno vyvíjať softvér pre rôzne headsety pre virtuálnu realitu. V našom prípade sa jedná

o knižnicu VRTK v spolupráci s platformou SteamVR.

3.2 Vysokoúrovňová štruktúra

Štruktúra tried systému na najvyššej úrovni odpovedá vzťahom vyjadrenými prostredníctvom

komponentov.

V diagrame (Obrázok 2) sú vyňaté z modelu iba tie triedy, ktoré sme vytvárali my a ktoré

majú významnú a aktívnu rolu na realizovaní logiky hry.

Page 8: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

7

Obrázok 2: diagram tried hry.

Rozširovanie logiky hry prebieha takmer výlučne využívaním predpripravených rozhraní a tried v

Unity Engine. Je to zapríčinené spôsobom, akými sa objekty v hre (herné objekty), s ktorými

prichádza do kontaktu hráč, komponujú z objektov - z inštancií tried.

Herný objekt je v UnityEngine samostatná trieda (GameObject), ktorá je komponovaná z tzv.

komponentov, čo sú triedy dediace od Component, resp. MonoBehaviour. Metódy týchto tried ako

Awake, Start, Update a iné definujú správanie týchto komponentov, pričom každá z metód dostáva

riadenie v inej časti slučky obnovovania hry. Skrz ich kompozíciu v triede GameObject je potom

definované správanie objektu.

V tohoto dôsledku sú predovšetkým triedy, ktoré sú zodpovedné za vykonávanie odlišných

herných mechanizmov hry navzájom pomerne nezávislé a taktiež možno vravieť o tom, že riadenie

medzi nimi je na konceptuálnej úrovni distribuované.

Page 9: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

8

3.3 Riadenie

Ako bolo už spomenuté, celkové riadenie systému kontroluje Unity Engine.

Unity Engine nemá zverejnenú dokumentáciu svojho návrhu, či kód a tak okrem

konštatovania, že všetko riadenie vychádza práve z herného enginu nemožno explicitne zaznačiť, ako

sa celkovo toto riadenie posúva v rámci komponentu, či naprieč komponentami. Taktiež nemožno

explicitne vyjadriť, ako sa posúva riadenie v rámci logiky hry, teda komponentu, ktorý tvoríme my.

Unity Engine má však predsa pre účely vývojárov videohier zverejnený diagram aktivít, ktorý

aspoň konceptuálne zaznamenáva, ako sa v Unity Engine predáva riadenie do rozšíriteľných metód

tried, ktoré sa používajú na tvorbu logiky hry. Tento diagram teda v princípe znázorňuje hlavnú slučku

riadenia, ktorá sa po spustení v hre točí, až dokiaľ nie je hra vypnutá.

Page 10: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

9

4 Moduly systému

V tejto časti zachytávame našu hru v rámci konkrétnych „modulov“, ktoré ju tvoria..

4.1 Návrh

Počítačová hra je špecifický softvérový systém, u ktorého tvorby nie je často možné, alebo vhodné

použiť metódy, ktoré sa používajú pri iných typoch softvéru. Od toho sa vyvíja aj spôsob, akými sme

zaznamenávali návrh systému na najvyššej úrovni.

Pri návrhu sme nepoužívali bežný spôsob zaznamenávania požiadaviek na hru

prostredníctvom prípadov použitia a príbuzných metód a to aj preto, lebo sme sa obávali, že by bolo

nutné poupraviť nám známe postupy a pravidlá tvorby prípadov použitia, čo by sa nemuselo stretnúť

s pochopením u prípadného čitateľa tohto dokumentu. Na druhú stranu sa ale táto technika ani

nezvykne pri tvorbe viedohier používať (http://homepages.inf.ed.ac.uk/perdita/guide.pdf), snáď i pre

vágnosť a generickosť požiadaviek na hru, s čím sme sa stretli aj my.

Namiesto prípadov použitia sme teda radšej použili priamo na zachytenie mechaník hry

diagramy aktivít, ktoré sa zdajú byť pre takýto softvér prirodzené. Videohru sme navrhovali najprv

skrz definovanie očakávaného správania, čiže herných mechaník, a z tohto správania sme sa následne

snažili odvodiť štruktúru, ktorá by očakávané správanie napĺňala, najčastejšie odvodením od partícií,

ktoré sa v diagramoch aktivít vyskytovali.

Pre zachytávanie návrhu, ktoré sa už blížilo samotnej implementácii sme používali sekvenčné

diagramy, ktoré očakávané správanie definovali konkrétnejšie a vedeli teda lepšie vyjadriť kontrakt

medzi návrhom a implementáciou.

Pri zaznamenávaní štruktúry vznikla malá komplikácia, keďže Unity Engine kladie veľký

dôraz na komponovateľnosť herných prvkov z nezávislých komponentov. Jeden herný prvok nie je v

hre vyjadrený iba inštanciou nejakej triedy, ale kompozíciou viacerých inštancií odlišných tried. Aby

sme nestratili aj tento holistický pohľad na štruktúru, zaznamenávali sme štruktúry takýchto herných

objekty pomocou diagramu objektov.

Poznámka 1: Nie vždy sme návrh zaznamenali, týka sa to najmä prípadov, keď sa to javilo zbytočné

(jediná aktivita v diagrame správania, jediný stav v stavovom diagrame..).

Poznámka 2: Videohra je ešte stále v procese vývoja, takže nie každý herný mechanizmus je rovnako

bohato popísaný, i vzhľadom na úroveň, v akom stave sa nachádza jeho návrh či implementácia.

Poznámka 3: keď sa v nižšie uvedených diagramoch vraví o komponentoch, myslia sa tým triedy

dediace od triedy Component, resp. MonoBehaviour.

Page 11: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

10

4.1.1 Kontrola hry

Tento diagram (Obrázok 3) vyjadruje na najvyššej úrovni ako hra prebieha od spustenia až po koniec.

Jedná sa len o konceptuálne znázornenie, nakoľko aj kontrola hry je podriadená riadeniu od herného

enginu.

Najprv dôjde k inicializácii scény a herných prvkov - spustí sa triediaca linka, generátor

odpadu, automatický „vysypávač“ smetí a inicializuje sa hráčovo skóre. Až následne sa spustením

hry pre hráča začne hlavná herná slučka, kde hráč hrá hru.

Kontrolór hry odpočítava čas do konca hry a po naplnení času je hra ukončená.

Obrázok 3.

4.1.2 Hlavná herná slučka

Tento diagram aktivít (Obrázok 4) vyjadruje činnosti, ktoré hráč opakovane vykonáva v hre. Tieto

činnosti predstavujú hrateľnosť hry.

Nateraz je stav návrhu našej hry taký, že hlavná herná slučka je tvorená len zberom odpadkov

a zastavovaním triediacej linky a generátora odpadkov. Tieto činnosti hráč vykonáva podľa ľubovôle,

až pokiaľ herný kontrolór nezastaví hru a hráč je donútení hru ukončiť.

Page 12: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

11

Obrázok 4.

4.1.3 Zber odpadkov

Tento diagram (Obrázok 5) vyjadruje ako by mal hráč vykonávať zber odpadkov v hre. V podstate sa

jedná o to, že hráč nachádza a následne sa presúva k danému odpadku, zdvíha ho a hádže do nejakého

zberača odpadu. Po dopade odpadku do zberača dochádza na základe správnosti separácie k

prepočítaniu hráčovho skóre.

V úrovni v továrni, ktorá je nateraz jediná v hre, pritom prichádzajú odpadky po triediacej

linke priamo k štartovnej pozícii hráča, takže hráč nemusí odpadky aktívne hľadať odpadky po

úrovni. V tejto úrovni je taktiež hra prispôsobená tak, že hráč zo svojej štartovnej pozícii pri triediacej

linke neslúžia ako zberač odpadu priamo odpadkové koše, ale pomocné pásy, ktoré smerujú k

samotným košom. Hráč hádže odpadky na tieto pomocné pásy, pričom už tieto pomocné pásy počítajú

hráčovo skóre. Z týchto pomocných pásov už hráč odpadky zbierať nemôže.

Page 13: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

12

Obrázok 5.

Tento diagram (Obrázok 6) predovšetkým ukazuje všetky typy odpadu, ktoré boli pre potreby hry

zadefinované a taktiež približuje aj ich objektovú kompozíciu.

Obrázok 6.

Page 14: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

13

Tento diagram (Obrázok 7) znázorňuje objektovú kompozíciu, ktorá v hre prestavuje odpad.

Obrázok 7.

4.1.4 Počítanie skóre

Tento diagram (Obrázok 8) znázorňuje všetky činnosti v hre, ktoré upravujú hráčovo skóre.

Momentálne to je len vloženie odpadku do zberača odpadu, ale nie je vylúčené, že s ďalším vývojom

pribudnú ďalšie takéto činnosti

Dobré body sa teda hráčovi pričítavajú, ak vkladá od zberačov odpadu odpad takého typu,

ktoré odpovedá typu zbieraného do daného zberača. Zlé body sa potom pričítavajú v opačnom

prípade, teda ak je do zberaču odpadu vložený odpad iného typu, než by sa mal doňho zbierať. V

prvej úrovni sa pritom pripočítavajú zlé body aj v prípade, ak hráč nechá prejsť odpadok po triediacej

linky až po jej koniec. Toto je však taktiež interne realizované cez zberače odpadov. Na konci linky

je jednoducho zberač odpadu, ktorého typ sa nezhoduje s typom žiadneho odpadku.

Mimo toho v hre je ešte aj percentuálne vyjadrenie úspešnosti hráča pri zbieraní odpadkov -

tzv. skóre. Táto miera sa mení pri každom pripočítaní dobrého, či zlého bodu, pričom platí, že pri

pričítaní dobré bodu skóre rastie, pri pripočítaní zlého bodu skóre klesá. Na základe hodnoty tohto

skóre sa potom vykonáva úprava stavu životného prostredia.

Pri každej úprave skóre sa taktiež obnovuje zobrazenie skóre, aby bolo v každom momente

aktuálne.

Page 15: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

14

Obrázok 8.

Diagram na Obrázku 9 približuje konkrétnu implementáciu počítania skóre v hre.

Page 16: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

15

Obrázok 9.

Tieto diagramy (Obrázok 10a, 10b) znázorňujú komponenty, ktoré sa podieľajú na tvorení logiky

počítanie skóre v hre.

Obrázok 10a.

Page 17: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

16

Obrázok 10b.

4.1.5 Úprava stavu prostredia

Tento diagram (Obrázok 11) vyjadruje návrh, akým spôsobom prebieha zmena životného prostredia

v hre, ktoré v hre zároveň vyjadruje hráčovej úspešnosť v hre.

Pri každej úprave stavu prostredia sa overuje, či bola prekročená niektorá zo zadefinovaných

hraníc jednotlivých úrovní prostredia. Pri prekročení hranice sa zmení úroveň a s ňou aj grafické

vyjadrenie životného prostredia. Pri zhoršovaní prostredie pôsobí viac skazene, pri zlepšovaní pôsobí

čistejšie a prirodzenejšie.

V hre je úprava stavu životného prostredia zadefinovaná tak, že sa mení spolu s výškou

hráčovho skóre.

Page 18: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

17

Obrázok 11.

Tento diagram sekvencií (Obrázok 12) približuje konkrétnu implementáciu menenia stavu životného

prostredia v hre.

Page 19: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

18

Obrázok 12.

Tento diagram (Obrázok 13) znázorňuje komponenty, ktoré sa podieľajú na tvorení logiky

upravovania stavu životného prostredia v hre.

Obrázok 13.

4.1.6 Ovládanie linky a generátoru

Tento diagram sekvencií (Obrázok 14) predstavuje návrh, akým spôsobom je realizované

zastavovanie a spúšťanie triediacej linky a generátora odpadu.

Page 20: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

19

Hráč sa v hre kedykoľvek môže pokúsiť zastaviť generátor odpadu. Musí sa však presunúť k

ovládaniu generátora a aktivovať ho. Hráč má v však v hre len obmedzený čas, po ktorý môže

udržiavať generátor a triediacu linku zastavenú. Ak už hráčovi tento čas uplynul, hráč už nemôže viac

zastavovať generátor a pás a pri aktivovaní ovládacieho prvku sa nič nevykoná. Ak hráč ale ešte

nevyčerpal všetok čas na zastavenie, po aktivovaní ovládacieho prvku sa pás a generátor zastaví,

pričom sa začne odpočítavať z času, ktorý ma hráč k dispozícii na ich zastavenie. Po jeho uplynutí sa

generátor a pás samy spustia. Ak je už pás a generátor zastavený, keď hráč aktivuje ovládací prvok,

pás a generátor sa znova pustia a čas sa prestane odpočítavať.

Obrázok 14.

Tento diagram sekvencií (Obrázok 15) predstavuje konkrétnu implementáciu ovládania hlavného

pásu prostredníctvom páčky.

Page 21: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

20

Obrázok 15.

Tento diagram tried (Obrázok 16) znázorňuje komponenty, ktoré sa podieľajú na tvorení logiky

ovládania hlavnej linky a generátoru odpadu.

Obrázok 16.

Page 22: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

21

Tento diagram sekvencií (Obrázok 17) predstavuje konkrétnu implementáciu zastavovania pásov,

ktoré smerujú ku košom, keď sa koše vysýpajú.

Obrázok 17.

Tento diagram (Obrázok 18) znázorňuje komponenty, ktoré sa podieľajú na tvorení logiky

zastavovania pásov pri vysýpaní košov.

Obrázok 18.

4.1.7 Generovanie odpadu

Tento diagram sekvencií (Obrázok 19) vyjadruje, akým spôsobom pracuje generátor odpadu. Od

momentu, kedy je generátor spustený, generátor cyklí medzi čakaním na čas generácie a následným

generovaním odpadu, keď nastane čas generácie, a to až pokiaľ nie je generátor znova zastavený.

Page 23: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

22

Obrázok 19.

Tento stavový diagram (Obrázok 20) vyjadruje stavy generátora odpadu. Generátor je buď v stave,

keď aktívne generuje odpad - t.j. je schopný generovania odpadu tak ako je to popísané v príslušnom

diagrame aktivít, alebo je v stave, keď je zastavený a tak ani nie je schopný generovať odpad.

Page 24: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

23

Obrázok 20.

Tento diagram (Obrázok 21) predstavuje konkrétnu implementáciu generovania odpadu

prostredníctvom generátora, ktorý odpad generuje podľa vopred daného poradia.

Obrázok 21.

Tento diagram (Obrázok 22) predstavuje konkrétnu implementáciu generovania odpadu

prostredníctvom náhodného generátora, keď sa odpad na generovanie vyberá z dostupných možností

Page 25: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

24

náhodne.

Obrázok 22.

Tento diagram (Obrázok 23) znázorňuje komponenty, ktoré spolu vytvárajú logiku generovania

odpadkov v hre.

Obrázok 23.

Page 26: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

25

4.1.8 Triediaca linka

Tento diagram (Obrázok 24) znázorňuje stavy, v akých sa môže nachádzať v hre triediaca linka.

Obdobne ako generátor, triediaca linka môže prechádzať 2 stavmi: buď sa posúva, alebo je zastavená.

Obrázok 24.

4.1.9 Vysypávanie odpadkových košov

Tento diagram aktivít (Obrázok 25) vyjadruje návrh na realizáciu automatu na priebežné vysypávanie

košov.

Vysypávanie odpadkových košov sa vykonáva rovnakým princípom ako generovanie odpadu,

teda po spustení sa cyklí čakanie na čas vysypávania a samotná rotácia - vysypávanie košov, keď čas

vysypávania uplynie a takto až po moment, keď je automat na vysypávanie zastavený.

Page 27: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

26

Obrázok 25.

Tento stavový diagram (Obrázok 26) znázorňuje stavy automatu na vysypávanie odpadu.

Automat môže prechádzať 3 stavmi. Prvý stav je, keď je nečinný a čaká na čas vysypávania.

Po uplynutí času čakania na vysypávanie prejde do stavu vysypávania, v ktorom sa pohybuje. Pokiaľ

je automat nečinný a čaká na vysypávanie, môže byť ešte dodatočne celkom zastavený.

Page 28: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

27

Obrázok 26.

4.1.10 Ničenie odpadu

Tento diagram (Obrázok 27) znázorňuje komponenty, ktoré spolu vytvárajú logiku ničenia odpadkov

v hre.

Obrázok 27.

Page 29: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

28

4.1.10 Zvuky

Tieto komponenty sa starajú o dotváranie atmosféry hry pomocou zvukov. Diagram na Obrázku 28

znázorňuje komponent, vďaka ktorému je počuť zvuk triediacej linky na pozadí.

Obrázok 28.

Tento diagram (Obrázok 29) znázorňuje komponent, vďaka ktorému je počuť zvuk triediacej linky

na pozadí.

Obrázok 29.

Tento diagram (Obrázok 30) znázorňuje komponenty, ktoré sa podieľajú na prehrávaní zvuku pásu a

stlmovaní zvuku ked je hlavný pás vypnutý.

Obrázok 30.

4.2 Implementácia

Technická dokumentácia k implementácii sa nachádza v prílohe B.

Page 30: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

29

4.3 Testovanie

Pretože náš projekt je hra, čiže vysoko špecifický druh softvéru, testovanie nebolo možné vykonávať

klasickým spôsobom. Automatické testy sú v tomto prípade problematické, pretože je menený

dynamický koncept produktu; testy by bolo zložité vytvoriť a nezaručovali by funkcionalitu.

Testovanie preto prebiehalo manuálne (integračné testy) na VR headsete; nová funkcionalita

bola odsúhlasená až keď fungovala so SteamVR. Do 3. šprintu boli testy vykonávané neformálne:

tester spustil projekt vo VR a manuálne testoval požadovanú funkciu, v našom prípade to bol prevažne

reviewer. Od ďalšieho šprintu boli vykonávané aj formálne testy s presne definovanou požadovanou

funkcionalitou, stále sa ale jedná o manuálne testovanie. V rámci zachovania kvality vytvárame

regresné testy, ktoré pokrývajú už vytvorenú funkcionalitu. V praxi sú tieto testy automatizované, ale

pretože je automatizácia v našom prípade vysoko netriviálna a časovo náročná, aj na základe

odporúčania oboch mentorov (počas diskusie v rámci fakultou organizovaného mentoringu) sme sa

rozhodli pokračovať v manuálnom testovaní.

Do budúcna plánujeme vykonať testy so skutočnými používateľmi, od ktorých budeme

očakávať spätnú väzbu v podobe celkového pohľadu na projekt, poprípade vytýčenie nedostatkov

alebo špecifických potrieb jednotlivých používateľov.

Formalizovaný záznam z manuálnych testov sa nachádza v prílohe B.

Page 31: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

30

5 Záverečné zhodnotenie

V rámci prvej etapy riešenia projektu navrhol náš tím koncept edukačnej hry pre virtuálnu realitu,

ktorej cieľom je oboznámiť žiakov základných škôl s problematikou separovania odpadu hravou a

zábavnou formou. Výstupom prvých piatich šprintov tímu bolo 5 vydaní prototypu navrhnutej hry,

pričom doposiaľ posledný z nich mal k úspešnému naplneniu očakávaní zákazníka najbližšie.

Z pohľadu vytýčených cieľov pre zimný semester v korelácii s aktuálnou podobou nami

implementovaného produktu si dovoľujeme konštatovať, že sa nám stanovené ciele podarilo naplniť

v súlade s očakávaniami. Svedčí o tom nielen skutočnosť, že súčasný prototyp hry predstavuje

rozpracovanie výsledného produktu na pomerne vysokej úrovni hodnovernosti, ale predovšetkým

pozitívna spätná väzba, ktorú sme v rámci záverečnej prezentácie v tomto semestri obdržali od

zástupcov partnerskej firmy Moving Medical Media, s. r. o., ktorí boli so súčasným smerovaním

projektu nadmieru spokojní (podrobnosti možno nájsť v rámci sumarizácií šprintov, ktoré sú súčasťou

Dokumentácie k riadeniu projektu).

Z uvedených dôvodov existuje opodstatnený predpoklad, že výsledný produkt sa nášmu tímu

v rámci nadchádzajúcej etapy riešenia projektu podarí dodať v súlade s požiadavkami objednávateľa

a na čo najvyššej úrovni kvality.

Page 32: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

31

Príloha A

V nasledovnej sekcii uvádzame 2 obrázky, zachytávajúce súčasnú podobu prostredia hry, ktorú

v rámci nášho projektu vyvíjame. Obrázok A1 obsahuje pohľad na dopravníkový pás v rámci

triediacej linky, pričom v pozadí možno vidieť tabuľu s aktuálnym skóre, ako aj skládku odpadu vo

vonkajšom prostredí. Obrázok A2 zachytáva generátor odpadu, pákový mechanizmus pre

manipuláciu s pásom a hodiny, indikujúce čas, v rámci ktorého je hráčovi dovolené ponechať pás

zastavený.

Obrázok A1.

Obrázok A2.

Page 33: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

32

Príloha B

Prvá časť tejto sekcie obsahuje vygenerovanú technickú dokumentáciu k implementovanému

produktu. Druhá časť obsahuje formálne záznamy z manuálnych testov produktu.

Page 34: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 1 of 38

Technická dokumentácia (VREducation)

Page 35: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 2 of 38

BeltTimer Menný priestor: '' Rozširuje

Kontroluje cas, na ktorý môžu byt zastavené pásy a kedy hrác presiahne casový limit, tak zaistí že sa všetko

spustí a už sa nebude môcž dat zastavit.

Atribút clock

clock : GameObject Public

Reprezentuje objekt hodín

[ Is static True. ]

Atribút clockScript

clockScript : ClockInterface Private

Drží objekt skriptu, ktorý je naviazaný na hodinách a stará sa o casovanie

[ Is static True. ]

Atribút sBeltControl

sBeltControl : SingletonBeltControl Private

inštancia singletona

[ Is static True. ]

Metóda SeltBeltPause

SeltBeltPause (bp : float ) : void Public

informuje o tom ci je pás zastavený alebo nie

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda Start

Start () : void Protected

inicializácia atribútov

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda Update

Update () : void Protected

Page 36: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 3 of 38

Metóda Update

Tu sa kontroluje dodržanie limitu, updatovanie casu na hodinách

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

BinRotator

Menný priestor: '' Rozširuje MonoBehaviour

Slúži na upovedomenie pásov ci majú stát alebo nie, taktiež slúži na rotovanie košov

Atribút singletonBeltStop

singletonBeltStop : BeltStop Private

inštancia singletona BeltStop-u

[ Is static True. ]

Metóda RotateOverTime

RotateOverTime () : IEnumerator Protected

Metóda, ktorá rotuje koše a notifikuje pásy kedy majú stát prostredníctvom singletona

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda Start

Start () : void Protected

Inicializácia statickej inštancie singletona

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Page 37: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 4 of 38

Clock1 Menný priestor: '' Rozširuje

Trieda, ktorá sa stará o ukazovanie správneho casu na hodinkách

Metóda SetClockState

SetClockState (dt : float ) : void Public

sa stará o ukazovanie casu na hodinkách(presúvanie rucicky/prehadzovanie digitalnych cisiel)

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Page 38: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 5 of 38

Conveyor sound Menný priestor: '' Rozširuje

Zvuk pásov

Atribút volume

volume : float Public

Výška hlasitosti zvuku

[ Is static True. ]

Page 39: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 6 of 38

DropSound Menný priestor: '' Rozširuje

Trieda, ktorá sa stará, že ked dopadne objekt na pás tak vydá zvuk, je to komponent na páse

Atribút dropSound

dropSound : GameObject Public

GameObject s komponentom Audio Source, kde je nahrávka buchnutia objektu

[ Is static True. ]

Metóda OnCollisionEnter

OnCollisionEnter () : void Protected

Prehrá sa zvuk buchnutia, ked pás aznamená kolíziu

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Page 40: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 7 of 38

Environment Menný priestor: '' Rozširuje MonoBehaviour

Komponent slúži na menenie grafickej podoby životného prostredia, ktoré sai mení spolu s hráčovým skóre.

V hre by mala by existovať iba jedna inštancia tejto triedy. Odkaz k tejto inštancii je uložený ako statický

atribút triedy.

Atribút currTrashLevel

currTrashLevel : int Private

Aktuálna úroveň znečistenia prostredia.

[ Is static True. ]

Atribút envObjects

envObjects : LeveledMesh Private

Zoznam objektov, ktoré tvoria životné prostredie a menia svoju grafickú podobu v závislosti od aktuálnej úrovne

znečistenia prostredia.

[ Is static True. ]

Atribút envUpdateCoroutine

envUpdateCoroutine : Coroutine Private

Korutina, ktorá aktuálne vykonáva menenie podoby objektov životného prostredia.

[ Is static True. ]

Atribút instance

instance : Environment Private

Statický odkaz na poslednú vzniknutú inštanciu triedy.

[ Is static True. ]

Atribút trashLevelBoundaries

trashLevelBoundaries : int Private

Hranice jednotlivých úrvoní znečistenia prostredia.

[ Is static True. ]

Page 41: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 8 of 38

Metóda Awake

Awake () : void Public

Metóda, ktorá sa spustí po inicializácii komponentov, ešte pred spustením hry.

Vyhľadá všetky objekty tvoriace životné prostredie, ktoré sa mení s úrovňou odpadu a nastaví im počiatočnú

úroveň.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda getTrashLevel

getTrashLevel () : int Public

Vráti aktuálnu úroveň znečistenia prostredia.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda setTrashLevel

setTrashLevel () : void Private

Nastavý aktuálnu úroveň znečistenia prostredia. Ak sa úroveň zmení, zároveň sa spustí korutina, ktorá postupne

vykonáva zmenu podoby jednotlivých objektov životného prostredia.

Ak už beží korutina obnovovania podoby prostredia, zastaví sa, aby sa mohla spustiť nová.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda Start

Start () : void Public

Metóda, ktorá sa volá tesne po spustení hry, tesne pre prvým volaním Update.

Priradí túto inštanciu triedy do odkazu v atribúte instance.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda UpdateEnvironment

UpdateEnvironment () : IEnumerator Public

Metóda, ktorá postupne mení grafické vyjadrenie ovjektov životného prostredia v dávkach akceptovateľnej

veľkosti.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda UpdateTrashLevel

UpdateTrashLevel (scorePecentage : float ) : void Public

Page 42: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 9 of 38

Metóda UpdateTrashLevel

Podľa zadanej výšky skóre sa zistí odpovedajúca úroveň životného prostredia a nastaví sa cez setTrashLevel().

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Page 43: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 10 of 38

GameManager Menný priestor: '' Rozširuje

Manažér hry

Atribút AudioSource

AudioSource : Public

[ Is static True. ]

Page 44: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 11 of 38

HitSound Menný priestor: '' Rozširuje

Metóda Play

Play () : void Public

prehrá zvuk

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Page 45: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 12 of 38

ChildControlReactor Menný priestor: '' Rozširuje ControlReactor

Trieda zdedená od ControlReactor Z VRTK a slúži na notifikovanie observerov, ked sa zmení hodnota/poloha

pácky

Atribút SBeltControl

SBeltControl : SingletonBeltControl Private

inštancia singletona kvôli notifikácií observerov

[ Is static True. ]

Metóda HandleChanged

HandleChanged (sender : object , e : Control3DEventArgs ) : void Protected

reauguje na zmenu polohy pácky

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda UpdateText

UpdateText (speed : float ) : void Protected

notifikuje observerov ked sa zmeni pácka

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda ValueChanged

ValueChanged (sender : object , e : ControllableEventArgs ) : void Protected

reauguje na zmenu hodnoty pácky

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Page 46: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 13 of 38

LeveledMesh Menný priestor: '' Rozširuje

Komponent vyjadruje všetky objekty v hre, ktoré majú zadefinovaných pomocou shape keys viac úrovni

svojej grafickej podoby.

Skrz tento komponent sa realizuje dynamická úprava životného prostredia.

Atribút canIncrease

canIncrease : boolean Private

Príznak, ktorý určuje, či sa môže údroveň objektu zlepšovať.

[ Is static True. ]

Atribút changeTime

changeTime : float Private

Dĺžka trvania zmeny podoby z jednej úrovne do inej.

[ Is static True. ]

Atribút isChangingMesh

isChangingMesh : boolean Private

Vyjadruje, či aktuálne dochádza k zmene grafickej podoby objektu.

[ Is static True. ]

Atribút maxLevels

maxLevels : int Private

Maximálny počet úrovni grafickej podoby objektu.

[ Is static True. ]

Atribút meshLevel

meshLevel : int Private

Aktuálna úroveň grafickej podoby objektu.

[ Is static True. ]

Page 47: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 14 of 38

Atribút nextMeshLevel

nextMeshLevel : int Private

Ďalšia požadovaná úroveň objektu. Slúži na to, že ak sa už mení grafická úroveň objektu a príde ďalšia

požiadavka na zmenu, uloží sa do tohto atribútu, aby nebola prerušená už prebiehajúca zmena grafickej podoby a

vykoná sa až po jej ukončení.

[ Is static True. ]

Atribút remainingChangeTime

remainingChangeTime : float Private

Zostávajúci čas do ukončenia zmeny grafickej podoby objektu.

[ Is static True. ]

Metóda Awake

Awake () : void Public

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda Update

Update () : void Public

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda UpdateMesh

UpdateMesh () : void Public

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda UpdateMeshLevel

UpdateMeshLevel (level : int ) : void Public

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Page 48: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 15 of 38

LinearConveyor Menný priestor: '' Rozširuje

Trieda, ktorá sa stará o pohyb pásu

Atribút oldSpeed

oldSpeed : float Private

Pamätá si pôvodnu rýchlost pásu

[ Is static True. ]

Atribút speed

speed : float Public

aktuálna rýchlost pásu, dokáže zastavit a spustit pás

[ Is static True. ]

Metóda upgradeSpeed

upgradeSpeed (s : float ) : void Public

Zmena rýchlosti pásu

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Page 49: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 16 of 38

PlayerScore Menný priestor: '' Rozširuje MonoBehaviour

Komponent slúži na počítanie a zaznamenávanie aktuálneho stavu hráčovho skóre a dobrých a zlých

hráčových bodov.

V hre by mala by existovať iba jedna inštancia tejto triedy. Odkaz k tejto inštancii je uložený ako statický

atribút triedy.

Atribút bad

bad : int Private

Počet zlých hráčových bodov.

Vyjadruje počet hráčových chýb, ktoré urobil pri separovaní odpadu - koľko krát hráč vložil odpadky do

nesprávneho koša.

[ Is static True. ]

Atribút badText

badText : TextMesh Private

Odkaz na text v scéne, na ktorom sa zobrazuje počet zlých hráčových bodov.

[ Is static True. ]

Atribút good

good : int Private

Počet dobrých hráčových bodov, teda koľkokrát hráč vložil odpadky do správneho koša.

[ Is static True. ]

Atribút goodText

goodText : TextMesh Private

Odkaz na text v scéne, na ktorom sa zobrazuje počet dobrých hráčových bodov.

[ Is static True. ]

Atribút instance

instance : PlayerScore Private

Statický odkaz na poslednú vzniknutú inštanciu tejto triedy. Iba táto inštancia sa používa na počítanie bodov.

[ Is static True. ]

Page 50: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 17 of 38

Atribút instance

Atribút score

score : int Private

Výška hráčovho skóre.

[ Is static True. ]

Atribút scoreText

scoreText : TextMesh Private

Odkaz na text v scéne, na ktorom sa zobrazuje hráčovo skóre.

[ Is static True. ]

Metóda Awake

Awake () : void Protected

Metóda, ktorá sa spustí po inicializácii komponentov, ešte pred spustením hry.

Priradí túto inštanciu triedy do odkazu v atribúte instance.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda getBad

getBad () : int Public

Vráti počet hráčových zlých bodov.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda getGood

getGood () : int Public

Vráti počet dobrých hráčových bodov.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda getInstance

getInstance () : PlayerScore Public

Vráti odkaz na prvú vzniknutú inštanciu tejto triedy.

[ Is static True. Is abstract False. Is return array False. Is synchronized False ]

Page 51: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 18 of 38

Metóda getInstance

Metóda getScore

getScore () : int Public

Vráti výšku hráčovho skóre.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda incBad

incBad () : void Public

Inkrementuje počítadlo hráčových zlých bodov o 1 a aktualizuje zobrazenie počtu zlých bodov v badText.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda incGood

incGood () : void Public

Inkrementuje počítdalo hráčových dobrých bodov o 1 a aktualizuje zobrazenie počtu dobrých bodov v goodText.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda incScore

incScore () : void Public

Inkrementuje skóre o 1 bod a aktualizuje zobrazenie výšky skóre v scoreText.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda Start

Start () : void Protected

Metóda, ktorá sa volá tesne po spustení hry, tesne pre prvým volaním Update.

Metóda inicializuje počítadlá hráčových bodov a skóre na 0.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Page 52: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 19 of 38

PlayerScorePercentual Menný priestor: '' Rozširuje MonoBehaviour

Komponent slúži na pocítanie a zaznamenávanie aktuálneho stavu hrácovho skóre a dobrých a zlých

hrácových bodov.

V hre by mala by existovat iba jedna inštancia tejto triedy. Odkaz k tejto inštancii je uložený ako statický

atribút triedy.

Atribút bad

bad : int Private

Pocet zlých hrácových bodov.

Vyjadruje pocet hrácových chýb, ktoré urobil pri separovaní odpadu - kolko krát hrác vložil odpadky do

nesprávneho koša.

[ Is static True. ]

Atribút badText

badText : TextMeshPro Private

Odkaz na text v scéne, na ktorom sa zobrazuje pocet zlých hrácových bodov.

[ Is static True. ]

Atribút environment

environment : Environment Public

[ Is static True. ]

Atribút good

good : int Private

Pocet dobrých hrácových bodov, teda kolkokrát hrác vložil odpadky do správneho koša.

[ Is static True. ]

Atribút goodText

goodText : TextMeshPro Private

Odkaz na text v scéne, na ktorom sa zobrazuje pocet dobrých hrácových bodov.

[ Is static True. ]

Page 53: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 20 of 38

Atribút instance

instance : PlayerScorePercentual Private

Statický odkaz na poslednú vzniknutú inštanciu tejto triedy. Iba táto inštancia sa používa na pocítanie bodov.

[ Is static True. ]

Atribút score

score : int Private

Výška hrácovho skóre.

[ Is static True. ]

Atribút scoreCoefficient

scoreCoefficient : int Private

o kolko chceme inkrementoat alebo dekrementovat skore

[ Is static True. ]

Atribút scoreText

scoreText : TextMeshPro Private

Odkaz na text v scéne, na ktorom sa zobrazuje hrácovo skóre.

[ Is static True. ]

Metóda Awake

Awake () : void Protected

Metóda, ktorá sa spustí po inicializácii komponentov, ešte pred spustením hry.

Priradí túto inštanciu triedy do odkazu v atribúte instance.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda DecScore

DecScore () : void Public

Dekrementuje score o koeficient a upravi environment

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Page 54: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 21 of 38

Metóda getBad

getBad () : int Public

Vráti pocet hrácových zlých bodov.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda getGood

getGood () : int Public

Vráti pocet dobrých hrácových bodov.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda getInstance

getInstance () : PlayerScorePercentual Public

Vráti odkaz na prvú vzniknutú inštanciu tejto triedy.

[ Is static True. Is abstract False. Is return array False. Is synchronized False ]

Metóda getScore

getScore () : int Public

Vráti výšku hrácovho skóre.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda incBad

incBad () : void Public

Inkrementuje pocítadlo hrácových zlých bodov o 1 a aktualizuje zobrazenie poctu zlých bodov v badText.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda incGood

incGood () : void Public

Inkrementuje pocítdalo hrácových dobrých bodov o 1 a aktualizuje zobrazenie poctu dobrých bodov v goodText.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Page 55: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 22 of 38

Metóda IncScore

IncScore () : void Public

Inkrementuje skóre o koeficient a. takisto upravuje aj environment.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda Start

Start () : void Protected

Metóda, ktorá sa volá tesne po spustení hry, tesne pred prvým volaním Update.

Metóda inicializuje pocítadlá hrácových bodov a skóre na 0 a updatuje environment.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda UpdateScoreTable

UpdateScoreTable () : void Public

upravuje text na tabuli

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Page 56: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 23 of 38

QueueTrashGenerator Menný priestor: '' Rozširuje TrashGenerator

Komponent, ktorý generuje odpadky v určenom poradí podľa usporiadaného zoznamu odpadkov na

generovanie.

Atribút trashQueue

trashQueue : QueuedTrash Public

Usporiadaný zoznam odpadkov, ktoré bude generátor postupne do scény generovať.

[ Is static True. ]

Metóda CanGenerate

CanGenerate () : bool Public

Vracia príznak značiaci, či generátor môže generovať odpad.

Okrem podmienky zadefinovanej v triede TrashGenerator tiež platí, že generátor nemôže generovať pokiaľ je

trashQueue prázdny.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda GenerateTrash

GenerateTrash () : IEnumerator Protected

Metóda, v ktorej dochádza k samotnému generovaniu odpadu do scény.

Odpad je generovaný takým spôsobom, že sa z usporiadaného zoznamu trashQueue vyberie prvý objekt na

generovanie v rade (triedy QueuedTrash), vygeneruje sa do scény, vymaže sa zo zoznamu a počká sa daný čas

(zadefinovaný atribútom waitTime v triede QueueTrash). Potom sa pokračuje v generovaní ďalšieho odpadu,

ktorý je v zozname na rade.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda getWaitTime

getWaitTime () : float Public

Metóda, ktorá vracia čas, ktorý generátor čaká pred vykonaním ďalšieho generovania v metóre GenerateTrash().

Tento čas je definovaný v atribúte generationDelay.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Page 57: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 24 of 38

RandomTrashGenerator Menný priestor: '' Rozširuje TrashGenerator

Komponent, ktorý generuje odpadky do scény náhodným výberom a inštancovaním odpadu zo zoznamu

odpadov, ktoré sú k dispozícii na generovanie.

Atribút batchSize

batchSize : int Public

Počet kusov odpadu, ktorý sa vygeneruje naraz na jedno generovanie do scény.

[ Is static True. ]

Atribút currGeneratedItems

currGeneratedItems : int Private

Počet už vygenerovaných odpadkov generátora.

[ Is static True. ]

Atribút generatableTrashList

generatableTrashList : GeneratableTrash Public

Zoznam odpadkov (triedy GeneratableTrash), z ktorého môže generátor náhodne vyberať odpadky na

generovanie.

[ Is static True. ]

Atribút generationDelay

generationDelay : float Public

Dĺžka času, ktorý generátor čaká po vygenerovaní dávky odpadkov než znova vygeneruje ďalšiu dávku

odpadkov.

[ Is static True. ]

Atribút maxDelaySpread

maxDelaySpread : float Public

Maximálna časová dĺžka náhodnej odchýlky, ktorá sa pripočítava ku generationDelay.

Konkrétna odchýlka sa náhodne určí po každej vygenerovanej dávke.

[ Is static True. ]

Page 58: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 25 of 38

Atribút maxGeneratedItems

maxGeneratedItems : int Public

Maximálny počet kusov odpadkov, ktorý môže generátor vygenerovať.

Dá sa dynamicky meniť aj počas generovania.

Hodnota menšia ako nula znamená, že nie je limit.

[ Is static True. ]

Metóda CanGenerate

CanGenerate () : bool Public

Vracia príznak značiaci, či generátor môže generovať odpad.

Okrem podmienky zadefinovanej v triede TrashGenerator tiež platí, že generátor nemôže generovať pokiaľ už

vyčerpal limit na celkový počet vygenerovateľných odpadkov zadefinovaný v maxGeneratedItems, alebo je

zoznam generovateľného odpadu generatableTrashList prázdny.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda GenerateTrash

GenerateTrash () : void Protected

Metóda, v ktorej dochádza k samotnému generovaniu odpadu do scény.

Odpad je generovaný inštancovaním náhodne vybranej položky zo zoznamu generatableTrashList. Algoritmus

výberu je zadefinovaný v metóde ChooseRandomGeneratableTrash.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda getWaitTime

getWaitTime () : float Public

Metóda, ktorá vracia čas, ktorý generátor čaká pred vykonaním ďalšieho generovania v metóre GenerateTrash().

Tento čas je definovaný v atribúte generationDelay.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda ChooseRandomGeneratableTrash

ChooseRandomGeneratableTrash () : GeneratableTrash Protected

Náhodne vyberie položku zo zoznamu generatableTrashList, pričom pri výbere uvažuje preferencie generovania

jednotlivých položiek definované ako generationPreference v triede GeneratableTrash.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Page 59: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 26 of 38

SingletonBeltControl Menný priestor: '' Rozširuje MonoBehaviour

Táto trieda sa stará o komunikáciu medzi všetkými objektami, ktoré potrebujú byt upozornené na zmenu

pácky(pácka hore - objekty pracujú, pácka dole - nepracujú)

Atribút belts

belts : GameObject Public

Zoznam pásov, ktoré pozorujú pácku

[ Is static True. ]

Atribút beltTimer

beltTimer : GameObject Private

Objekt hodiniek, ktorý pozoruje zmenu pácky

[ Is static True. ]

Atribút conveyorSound

conveyorSound : GameObject Public

Objekt Zvuku, ktorý pozoruje pácku

[ Is static True. ]

Atribút instance

instance : SingletonBeltControl Private = null

Statická inštancia, slúži na komunikáciu medzi objektami

[ Is static True. ]

Atribút limitOut

limitOut : boolean Private

Nastavuje limit pre státie pásu

[ Is static True. ]

Page 60: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 27 of 38

Atribút trashGenerator

trashGenerator : GameObject Private

Objekt generátora, ktorý pozoruje zmenu pácky

[ Is static True. ]

Metóda attacchTrashGenerator

attacchTrashGenerator (trashG : GameObject ) : void Public

Pripína objekt generátora ako observera

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda attachBeltTimer

attachBeltTimer (timer : GameObject ) : void Public

Pripína objekt hodiniek ako observera

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda Awake

Awake () : void Protected

nastavenie statickej inštancie

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda getInstanceBeltControl

getInstanceBeltControl () : SingletonBeltControl Public

vracia statickú inštanciu

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda notifyObservers

notifyObservers (speed : float ) : void Public

Upozornuje observerov na zmenu pácky

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda SetLimitOut

Page 61: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 28 of 38

Metóda SetLimitOut

SetLimitOut (lim : boolean ) : void Public

Slúži na dodržanie casového limitu na státie pásov

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Page 62: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 29 of 38

TemporaryObject Menný priestor: '' Rozširuje MonoBehaviour

Komponent, ktorý dáva objektu obmedzenú dĺžku života v scéne. Po uplynutí životnosti objektu sa objekt zo

scény vymazáva, či už náhle, alebo postupným miznutím.

Atribút fadeOutTime

fadeOutTime : float Public Const

Určuje, ako dlho trvá postupné miznutie objektu zo scény.

[ Is static True. ]

Atribút initialColor

initialColor : Color Private

Farba, ktorú má Renderer objektu pred začatím miznutia zo scény.

[ Is static True. ]

Atribút lifeTime

lifeTime : float Public

Dĺžka života objektu. Po naplnení sa objekt zo scény vymaže.

[ Is static True. ]

Metóda FadeOut

FadeOut () : void Public

Metóda, v ktorej sa vykonáva postupné miznutie objektu zo scény úpravou jeho priehľadnosti v Renderer

komponente.

Miznutie sa spustí len ak zostavajúca dĺžka života objektu vyjadrená atribútom lifeTime je nižšia ako časová

dĺžka postupného miznutia objektu zo scény vyjadrená atribútom fadeOutTime.

Funguje správne len ak materiál objektu nie je Opaque (nepriehľadný).

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda FixedUpdate

FixedUpdate () : void Protected

Vykoná sa aktualizácia s pevne daným časom aktualiácie.

Page 63: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 30 of 38

Metóda FixedUpdate

Aktualizuje životný cyklus objektu.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda UpdateLifecycle

UpdateLifecycle () : void Public

Aktualizuje dĺžku života odpočítaním posledného deltaTime od atribútu lifeTime.

Ak objekty naplnil svoju dĺžku života, vymaže sa zo scény.

Spúšťa aj postupné miznutie objetku zo scény.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Page 64: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 31 of 38

Trash Menný priestor: '' Rozširuje MonoBehaviour

Tento komponent predstavuje v hre odpad.

Odpad je hlavným prvkom hry, ktorý využívajú najmä ostatné komponenty pre realizáciu hernej logiky.

Každý odpadok je určitého typu.

Atribút trashType

trashType : TrashType Public

Odkazuje na typ odpadku.

[ Is static True. ]

Page 65: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 32 of 38

TrashBin Menný priestor: '' Rozširuje MonoBehaviour

Tento komponent predstavuje v hre odpadkový kôš, do ktorého sa zbiera odpad.

Každý kôš má označený typ odpadu, ktorý sa do daného koša separuje. Kôš na základe toho vyhodnocuje, či

objekty odpadu, ktoré sú do neho vkladané, do neho aj patria a podľa toho upravuje hráčovo skóre.

Atribút score

score : PlayerScore Private

Odkaz na počítadlo hráčovho skóre.

[ Is static True. ]

Atribút trashType

trashType : TrashType Public

Odkaz na typ odpadkov, ktorý sa zbiera do určitého koša.

[ Is static True. ]

Metóda OnTriggerEnter

OnTriggerEnter (col : Collider ) : void Private

Volá sa pri vstupe komponentu triedy Collider do priestoru spínača triedy Collider tohto komponentu.

V metóde dôjde k rozpoznaniu, či vstupujúci objekt je aj odpadkom, čiže má komponent triedy Trash a ak áno,

tak sa následne porovná, či typ (vyjadrený skrz odkaz na inštanciu triedy TrashType) daného odpadu odpovedá

typu odpadu, ktorý sa zbiera v tomto koši. Na základe toho sa pridelí hráčovi v komponente PlayerScore dobrý,

alebo zlý bod.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Page 66: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 33 of 38

TrashBinPercentual Menný priestor: '' Rozširuje

Tento komponent predstavuje v hre odpadkový kôš, do ktorého sa zbiera odpad.

Každý kôš má oznacený typ odpadu, ktorý sa do daného koša separuje. Kôš na základe toho vyhodnocuje, ci

objekty odpadu, ktoré sú do neho vkladané, do neho aj patria a podla toho upravuje hrácovo skóre a

percentami vyjadruje ako dobre na tom hrác je.

Atribút score

score : PlayerScorePercentual Private

Odkaz na pocítadlo hrácovho skóre, kde sa rátajú aj percentá "úspechu".

[ Is static True. ]

Atribút trashType

trashType : TrashType Public

Odkaz na typ odpadkov, ktorý sa zbiera do urcitého koša.

[ Is static True. ]

Metóda OnTriggerEnter

OnTriggerEnter (col : Collider ) : void Private

Volá sa pri vstupe komponentu triedy Collider do priestoru spínaca triedy Collider tohto komponentu.

V metóde dôjde k rozpoznaniu, ci vstupujúci objekt je aj odpadkom, ciže má komponent triedy Trash a ak áno,

tak sa následne porovná, ci typ (vyjadrený skrz odkaz na inštanciu triedy TrashType) daného odpadu odpovedá

typu odpadu, ktorý sa zbiera v tomto koši. Na základe toho sa pridelí hrácovi v komponente PlayerScore dobrý,

alebo zlý bod a upravia sa percentá úspešnosti. Nakoniec sa updatuje skore na tabuli.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Page 67: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 34 of 38

TrashDestructor Menný priestor: '' Rozširuje MonoBehaviour

Komponent slúži na vymazávanie odpadkov zo scény. Vymazávanie sa spúšťa pri kontakte odpadku so

spínačom tohto komponentu.

Atribút destructionDelay

destructionDelay : float Public

Oneskorenie, s akým deštruktor vymazáva objekty zo scény potom, čo aktivujú jeho spínač.

[ Is static True. ]

Atribút objectsFadeOut

objectsFadeOut : boolean Public

Príznak, ktorý určuje, či

objekty zmiznú zo scény náhle, alebo postupným spriehľadňovaním.

[ Is static True. ]

Metóda MakeObjectFadeOut

MakeObjectFadeOut (col : Collider ) : void Private

Spúšťa postupné miznutie objektu s daným Collider komponentom zo scény tak, že nastaví lifeTime komponentu

TemporaryObject toho objektu na dĺžku destructionDelay.

Ak objekt s Collider komponentom, nemá komponent TemporaryObject, tento komponent sa pridá tomuto

objektu.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda OnTriggerEnter

OnTriggerEnter (col : Collider ) : void Protected

Volá sa pri vstupe komponentu triedy Collider do priestoru spínača triedy Collider tohto komponentu.

Ak je príznak objectsFadeOut nastavený ako pravdivý, spustí sa postupné miznutie kolidovaného objektu. Ak nie,

zavolá sa funkcia na deštrukciu kolidovaného objektu so scény s oneskorením, ktoré má deštruktor zadefinované.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Page 68: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 35 of 38

TrashGenerator Menný priestor: '' Rozširuje MonoBehaviour

Abstraktná trieda, ktorá predstavuje generátor slúžiaci na vytváranie odpadu do scény.

Atribút stop

stop : boolean Public

Označuje, či je generátor momentálne zastavený.

Skrz tento atribút sa dá priamo generátor zastaviť. Ak je hodnota premennej pravdivá, generátor nebude

generovať odpad.

[ Is static True. ]

Metóda CanGenerate

CanGenerate () : bool Public

Vracia príznak značiaci, či generátor môže generovať odpad.

Generátor nemôže generovať odpad, pokiaľ je atribút stop nastavený ako pravdivý.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda GenerateTrash

GenerateTrash () : void Protected

Metóda, v ktorej dochádza k samotnému generovaniu odpadu do scény.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda getWaitTime

getWaitTime () : float Public

Abstraktná metóda, ktorá by mala vraciať čas, ktorý generátor čaká pred vykonaním ďalšieho generovania v

metórde GenerateTrash().

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda Start

Start () : void Protected

Page 69: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 36 of 38

Metóda Start

Metóda, ktorá sa volá tesne po spustení hry, tesne pre prvým volaním Update.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda StartTrashGeneration

StartTrashGeneration () : void Public

Metóda začne v pravidelných intervaloch spúšťať generovanie odpadu v metóde GenerateTrash().

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Metóda StopTrashGeneration

StopTrashGeneration () : void Public

Metóda, ktorá zastaví pravidelné spúšťanie generovania odpadu.

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Page 70: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 37 of 38

TrashType Menný priestor: '' Rozširuje MonoBehaviour

Komponent označuje najmä materiál, z ktorého je určitý odpad vyrobený.

Atribút trashName

trashName : string Public

Názov, ktorým sa označuje určitý typ odpadku.

[ Is static True. ]

Page 71: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova

Software documentation 13 decembra, 2018

Page 38 of 38

ClockInterface Menný priestor: '' Rozširuje

Interface, ktorý definuje metódu aby sa zobrazovali "animacie" na hodinkach

Metóda SetClockState

SetClockState (dt : float ) : void Public

sa stará o ukazovanie casu na hodinkách(presúvanie rucicky/prehadzovanie digitalnych cisiel)

[ Is static False. Is abstract False. Is return array False. Is synchronized False ]

Page 72: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova
Page 73: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova
Page 74: Slovenská technická univerzitateam17-18.studenti.fiit.stuba.sk/new/inzinierske... · Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova