Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
documentation:user_documentation [2013/01/09 17:55]
admin
documentation:user_documentation [2014/12/04 10:40] (current)
Line 1: Line 1:
 +====== Uživatelská dokumentace ======
  
 +Program pro spuštění vyžaduje .NET Framework 4 (plná verze) a XNA Framework 4. 
 +Pro přidání obsahu do editoru a následného použití ve hře musí být nainstalované XNA Game Studio 4.
 +Vytvořená hra potřebuje pouze XNA Framework 4. Editor i vytvořená hra vyžadují grafickou kartu podporující minimálně Shader Model 2.0.
 +
 +
 +===== Fyzika =====
 +
 +Ve hře probíhá fyzikální simulace pevných těles v rovině.
 +Každé těleso je složeno z kolizních tvarů, což jsou geometrické
 +tvary jako např. kruh nebo polygon. Každé těleso má jisté vlastnosti,
 +především materiální vlastnosti jako je hustota, tření a pruživost
 +(restituce). ​
 +
 +Ve fyzikální simulaci se mohou nacházet následující typy těles:
 +
 +  * **Statické (Static)** - Statické těleso se v simulaci nepohybuje, má nulovou rychlost a chová se jako by mělo nekonečnou hmotnost. Může být manuálně posunuto. Statická tělesa nekolidují s dalšími statickými nebo kinematickými tělesy.
 +  * **Kinematické (Kinematic)** - Kinematické těleso se pohybuje podle své rychlosti a chová se jako by mělo nekonečnou hmotnost. Nereaguje na žádné síly. Kinematická tělesa nekolidují s dalšími statickými nebo kinematickými tělesy.
 +  * **Dynamické (Dynamic)** - Dynamické těleso je plně simulované. Koliduje se všemi typy těles.
 +
 +Fyzikální simulace probíhá v metrech, kilogramech a sekundách a používá
 +radiány pro úhly. Nejlépe pracuje s pohybujícími se tělesy velikosti
 +mezi  a  metrů. Statická tělesa mohou být velké až  metrů.
 +Toto je velice důležité vzít na vědomí při vytváření aktérů na scéně.
 +
 +Tělesa jsou ovládány pomocí sil a impulsů.
 +Není doporučeno tělesa manuálně přesouvat nebo nastavovat dynamickým tělesům rychlost, protože tyto akce mohou vyvolat nefyzikální chování.
 +
 +
 +===== Projekt =====
 +
 +Hra je definovaná pomocí projektu.
 +
 +Po spuštění programu ​ můžeme vytvořit nový projekt, otevřít projekt nebo otevřít naposledy otevřený projekt. Soubor s projektem má koncovku //​.pgcproject//​.
 +
 +{{:​documentation:​editor_intro.png?​direct|Úvodní okno programu pro výběr projektu}}
 +
 +Hierarchie projektu na disku:
 +
 +  * **Content** - Složka obsahuje herní obsah a důležité soubory pro spuštění hry z editoru.
 +  * **Publish** - Složka obsahuje spustitelnou hru po publikaci.
 +  * **Jméno projektu.cs** - Zdrojový kód hry, který je vygenerován při každém spuštění nebo publikování hry.
 +  * **Jméno projektu.pgcproject** - Soubor představující projekt.
 +
 +
 +===== Herní obsah =====
 +
 +==== Textura ====
 +
 +Lze vložit obrázek ve formátu PNG, JPEG nebo BMP. Po správném zpracování
 +obrázku se vytvoří nová textura. Pro lepší přehlednost je dobré název
 +textury vhodně pojmenovat, abychom později poznali podle jména, o
 +jakou texturu se jedná. Veškeré nastavení textury najdeme v jejím editoru ​
 +
 +^Ovládání^^
 +|Pravé tlačítko myši|pohyb po ploše|
 +|Kolečko myši|přiblížení nebo oddálení zobrazení textury|
 +|Klávesa Delete|smazání kolizního tvaru po jeho výběrů na seznamu kolizních tvarů|
 +
 +{{:​documentation:​editor_textureeditor.png?​direct|Nastavení textury}}
 +
 +=== Bod Origin ===
 +
 +Poloha bodu Origin, který definuje střed textury, má velký význam při vytváření animace nebo při použití v aktérovi jako jeho grafika.
 +Tento bod se umístí do bodu Origin animace nebo na pozici aktéra, poté představuje pozici aktéra.
 +Aktér se otáčí kolem tohoto bodu.
 +
 +=== Kolizní tvary ===
 +
 +Textura může obsahovat libovolné množství kolizních tvarů, které ​
 +budou použity ve hře pro fyzikální simulaci tělesa. Není doporučeno používat velké množství tvarů. Počet tvarů přímo ovlivňuje rychlost fyzikální simulace.
 +Kolizní tvary jsou v editoru rozlišeny pomocí barev.
 +Podporované jsou následující tvary:
 +
 +== Mnohoúhelník (Polygon) ==
 +
 +Podporován je pouze konvexní polygon. Je možné vložit konkávní
 +polygon, ale před použitím ve hře bude konkávní polygon rozložen na
 +konvexní polygony stejným způsobem, který je možný v editoru zobrazit
 +(Convex Decomposition). Není možné vytvořit
 +polygon, kterému se protínají hrany. Není doporučeno používat složité
 +polygony (více jak 8 vrcholů).
 +
 +^Ovládání^^
 +|Levé tlačítko myši|přidání nového vrcholu|
 +|Pravé tlačítko myši / klávesa Delete|smazání myší označeného vrcholu|
 +
 +== Hrana (Edge) ==
 +
 +Hrana resp. množina hran jsou jednotlivé úsečky, které se mohou protínat.
 +Lze si je představit jako neuzavřený polygon, kterému se mohou protínat
 +hrany.
 +
 +Použití ve hře má jistá omezení. Pro správné fungovaní tohoto kolizního
 +tvaru je nutné, aby aktér byl statické nebo kinematické těleso. Při
 +použití v dynamickém tělese nebude tento kolizní tvar fungovat, protože
 +tento tvar není uzavřen, takže v rovině nemá žádnou plochu ani objem.
 +
 +^Ovládání^^
 +|Levé tlačítko myši|přidání nového vrcholu|
 +|Pravé tlačítko myši / klávesa Delete|smazání myší označeného vrcholu|
 +
 +== Kruh (Circle) ==
 +
 +^Ovládání^^
 +|Levé tlačítko myši|vybrání středu kružnice|
 +|Pravé tlačítko myši|nastavení poloměru kružnice podle vzdálenosti od středu kružnice ke kurzoru myši|
 +
 +==== Animace ====
 +
 +Vytvoření jednoduché animace po sobě jdoucích textur. ​
 +
 +U animace se nenastavuje bod Origin. Ten je pevně určený. Do něj
 +se umisťují body Origin jednotlivých textur. Proto je potřeba vhodně
 +zvolit body Origin jednotlivých textur.
 +
 +Animace může obsahovat libovolné množství kolizních tvarů, které ​
 +budou použity ve hře pro fyzikální simulaci tělesa. Stejné vlastnosti
 +a ovládání jako u editace textury.
 +
 +==== Zvuk ====
 +
 +Lze vložit zvuk ve formátu WMA, MP3, nebo WAV. Po vložení do editoru je možné si ho přehrát.
 +
 +
 +===== Scéna (Scene) =====
 +
 +Hra se skládá z minimálně jedné scény. Scéna představuje jednu logickou
 +obrazovku ve hře. Např. každé kolo ve hře je samostatná scéna, ale
 +je také možno udělat více kol na jedné scéně. To už záleží na návrhu hry.
 +
 +{{:​documentation:​editor.png?​direct&​800| Hlavní okno editoru}}
 +
 +Kromě samotné scény se na ploše scény zobrazují tři důležité informace.
 +V pravém horním rohu je aktuální FPS, ve kterém se scéna vykresluje,
 +a především ikonka dvou šipek. Když se scéna vykresluje, tak se ikonka
 +otáčí. Tedy když se ikonka neotáčí, tak se scéna nevykresluje,​ takže
 +aktuální stav scény může být jiný, než je zobrazeno. Scéna se vykresluje
 +pouze tehdy, když je okno se scénou aktivní. V levém dolním rohu je měřítko
 +jednoho metru. Hodí se kvůli dodržování rozumných velikostí aktérů.
 +V pravém dolním rohu je aktuální pozice kurzoru myši na scéně.
 +
 +Každý objekt na scéně je ohraničen obdélníkem. U aktéra se ohraničují
 +kolizní tvary jeho grafiky a u cesty samotná cesta. Tento obdélník představuje
 +aktivní oblast objektu. Pokud chceme objekt vybrat nebo na něm provádět
 +nějakou akci, tak musíme pracovat s jeho aktivní oblastí.
 +
 +Při vybrání jednoho objektu na scéně se zobrazí jeho vlastnosti v
 +pravém sloupci editoru v tabu Vlastnosti (Properties).
 +
 +^Ovládání^^ ​
 +|Levé tlačítko myši|vybírání objektů na scéně|
 +|Levé tlačítko myši + Ctrl|přidání / odebrání objektu z vybraných objektů na scéně|
 +|Levé tlačítko myši + Alt|vybírání objektů na scéně pomocí obdélníku|
 +|Pravé tlačítko myši / Kurzorové šipky|pohyb po scéně|
 +|Kolečko myši|přiblížení nebo oddálení scény|
 +|Ctrl + C|kopírování vybraných objektů do schránky scény (kopírovat)|
 +|Ctrl + V|vložení objektů na scénu ze schránky scény (vložit)|
 +|Ctrl + Z|vrácení poslední akce (zpět)|
 +|Ctrl + Y|znovu provedení poslední akce (znovu)|
 +|Delete|smazání vybraných objektů na scéně|
 +
 +Stavy pro editaci objektů na scéně:
 +
 +=== Vybírání (Select State) ===
 +
 +Nepřidává žádnou další funkčnost. Velice se hodí, když
 +procházíme scénu nebo pouze upravujeme nastavení objektů, ale nechceme
 +omylem nic na scéně změnit.
 +
 +=== Přesun (Move State) ===
 +
 +Posun vybraných objektů na scéně.
 +
 +^Ovládání^
 +|Stiskem levého tlačítka myši nad některým z vybraných objektů a následným posunem myši lze přesouvat dané objekty na scéně|
 +
 +=== Otáčení (Rotate State) ===
 +
 +Otáčení vybraných objektů na scéně. Aktér se otáčí kolem svého bodu
 +Origin. Cesta se otáčí kolem prvního vrcholu cesty.
 +
 +^Ovládání^ ​
 +|Stiskem levého tlačítka myši nad některým z vybraných objektů a následným posunem myši kolem středu vybraného objektu se budou otáčet všechny objekty o stejný úhel.|
 +
 +=== Změna velikosti (Scale state) ===
 +
 +Změna velikosti vybraných objektů na scéně. ​
 +Upozornění k aktérům: Změna velikosti se aplikuje na grafiku aktéra (textura nebo
 +animace) a ne na jeho ohraničující obdélník. Toto chování se může
 +zdát malinko divné, když se upravuje otáčený aktér. Není podporována ​
 +změna velikosti, která mění originální poměr stran aktéra, kolizního tvaru kruhu (z kruhu by vznikla
 +elipsa). Aktérovi lze libovolně změnit velikost, ale na kruh se bude
 +aplikovat pouze X-ová část koeficientu pro změnu velikosti.
 +
 +^Ovládání^ ​
 +|Stiskem levého tlačítka myši nad některým z vybraných objektů a následným posunem myši se bude měnit velikost všech objektů o stejný koeficient. Při stisku levého tlačítka Shift se bude zachovávat původní poměr stran objektu (uniform scale).|
 +
 +
 +===== Vrstva (Layer) =====
 +
 +
 +Scéna se skládá z libovolného počtu vrstev. Do vrstvy se přidávají ​
 +jednotliví aktéři. Vždy je vybraná jedna vrstva, do které
 +se aktéři budou přidávat. Hra se vykresluje po jednotlivých vrstvách
 +odspoda nahoru a ve vrstvě se taktéž vykreslují aktéři odspoda nahoru.
 +
 +=== Parallax vrstva) ===
 +
 +Speciální vrstva simuluje 3D hloubku pohyblivého obrazu ve 2D.
 +Aktéři nemají pevnou pozici na scéně, ale jejich pozice záleží na aktuální pozici
 +kamery. Lze vložit pouze aktéry, kteří se nevyskytují ve fyzikální
 +simulaci. Nastavení vrstvy (zobrazení pomocí pravého tlačítka myši):
 +
 +  * **Parallax Coefficient** - Koeficient pro ovlivňování pozice aktérů na scéně. K pozici aktéra se přičte součin pozice kamery a tohoto koeficientu.
 +  * **Graphics Effect** - Efekt, který se bude aplikovat na grafiku aktérů.
 +    * **Repeat Horizontally** - Grafika aktérů se bude horizontálně opakovat vedle sebe.
 +    * **Repeat Vertically** - Grafika aktérů se bude vertikálně opakovat vedle sebe.
 +    * **Fill** - Grafika aktérů se bude opakovat do všech směrů tak, že vyplní celou viditelnou část scény.
 +
 +
 +===== Cesta (Path) =====
 +
 +Scéna obsahuje libovolné množství cest.
 +Například nepřítel ve hře se bude moci pohybovat po předem vytvořené cestě.
 +
 +Vybráním cesty na scéně se zobrazí její vlastnosti a nastavení.
 +Opět je velice doporučeno cestu vhodně pojmenovat, abychom ji později
 +poznali pouze podle názvu. Cestu lze uzavřít pomocí možnosti //Loop//.
 +Při samotné editaci cesty ji není možné uzavřít tím, že bychom dali
 +vrcholy začátku a konce přes sebe.
 +
 +^Ovládání^^
 +|Levé tlačítko myši|přidání nového vrcholu na cestu|
 +|Delete|smazání myší označeného vrcholu na cestě|
 +|Esc / Enter|ukončení editace cesty|
 +
 +
 +===== Aktér (Actor) =====
 +
 +Aktér představuje herní objekt ve hře. Může to být např. hráč,
 +nepřítel, střela hráče nebo nepřítele a dokonce země i pozadí. Jednoduše
 +řečeno to je cokoliv, co chceme zobrazit, použít nebo detekovat ve
 +hře.
 +
 +Přetažením textury nebo animace na scénu se vytvoří nový aktér do
 +aktuálně vybrané vrstvy. Aktér se vytvoří na pozici kurzoru myši.
 +Pozici aktéra udává bod Origin jeho grafiky. Tedy na pozici
 +kurzoru myši bude bod Origin přenášené textury nebo animace.
 +
 +Vybráním aktéra na scéně se zobrazí jeho vlastnosti a nastavení (viz obrázek Hlavní okno editoru).
 +Opět je velice důležité vhodně aktéra pojmenovat, aby byla scéna přehledná a abychom ho poznali podle
 +názvu. Textura nebo animace, pomocí které
 +jsme aktéra vytvořili lze změnit. Stačí přetáhnout novou texturu nebo
 +animaci do políčka, kde je uveden název aktuální grafiky aktéra. Je
 +možné grafiku aktéra nezobrazovat. Vhodné pro aktéry,
 +kteří budou představovat roli senzorů. (Aktuálně není možné
 +vytvořit aktéra přímo na scéně tak, že bychom ho definovali pomocí
 +kolizních tvarů. Ale pouze přes texturu nebo animaci. Tedy pro senzor
 +musíme použít texturu s vhodným kolizním tvarem a nezobrazovat jeho
 +grafiku.) ​
 +Nastavení fyzikálního typu aktéra představuje jeho typ tělesa
 +ve fyzice popsané v . Aktéra můžeme vyloučit z fyzikální simulace možností
 +//None//. Po vybrání konkrétního fyzikálního typu máme možnost nastavit ​
 +vlastnosti, které se použijí ve fyzikální simulaci. Možné vlastnosti:
 +
 +  * **Hustota (Density**) - Hustota slouží ke spočítání hmotnosti tělesa z jeho kolizních tvarů. Implicitní hodnota je 1.
 +  * **Tření (Friction)** - Tření se používá, aby po sobě mohli tělesa realisticky klouzat. Jeho hodnota je obvykle mezi 0 a 1, ale může být i záporná. Hodnota 0 tření vypne a naopak hodnota 1 způsobí silné tření. Implicitní hodnota je 0,2.
 +  * **Pruživost (Restitution)** - Pruživost (restituce) se používá, aby mohli tělesa skákat. Jeho hodnota je obvykle mezi 0 a 1. Uvážíme-li,​ že upustíme míč na stůl, tak hodnota 0 znamená, že se míč neodrazí, naopak hodnota 1 způsobí, že míč se odrazí stejně jako je jeho rychlost dopadu. Implicitní hodnota je 0.
 +  * **Linear Damping** - Redukuje pohybovou rychlost tělesa. Implicitní hodnota je 0, tedy nic se neredukuje.
 +  * **Angular Damping** - Redukuje rotační rychlost tělesa. Implicitní hodnota je 0, tedy nic se neredukuje.
 +  * **One Way Platform** - Z tělesa udělá plošinku, která se velmi používá ve 2D hrách, na které je možné stát, ale lze zespoda proskočit. Taková plošinka rozhodně porušuje fyzikální simulaci, protože se jedná o nereálné těleso. Díky tomu  je tato možnost velice omezená. Funguje pouze pro plošinky, které mají jako kolizní tvar jeden polygon, a gravitace je v implicitním směru (směrem dolů). Další tělesa, která tuto plošinku budou ve hře používat, by měli obsahovat pouze jeden kolizní tvar. I při dodržení těchto pravidel se může stát, že plošinka nebude vždy fungovat správně. To vše je důsledkem nereálností tohoto tělesa ve fyzikální simulaci a obecnosti hry. Nastavení lze aplikovat pouze na statické nebo kinematické těleso.
 +  * **Fixed Rotation** - Zakáže rotaci tělesa. Těleso se nebude otáčet ani pod velkým zatížením. Velice se hodí se pro hráče a nepřátele. Nastavení lze aplikovat pouze na dynamické těleso, protože u ostatních nemá smysl.
 +  * **Bullet** - Je velice doporučeno,​ aby rychle pohybující se tělesa měli toto nastavení povolené. Fyzikální simulace, pak bude takovým tělesům věnovat více pozornosti, aby se náhodou nestalo, že těleso proletí jiným tělesem. Vhodné např. pro střely hráče nebo nepřátel. Nastavení lze aplikovat pouze na dynamické těleso.
 +  * **Senzor (Sensor)** - Z tělesa se stane senzor. Těleso normálně zaregistruje kolizi, ale nebude se na ní odpovídat, jak by se normálně stalo. Logika hry někdy potřebuje zjistit, jestli jsou dvě tělesa v kolizi, ale nechce na kolizi nijak fyzikálně reagovat.
 +
 +Aktér může obsahovat děti resp. další aktéry. Tzn. že aktér může být
 +složen z více samostatných aktérů, kteří dohromady vytvářejí jeden
 +logický celek. Např. hráč může obsahovat jako dítě pohyblivou ruku.
 +Aktéři mohou být libovolně zanoření. Výsledný aktér (celek) bude
 +ve fyzikální simulaci pouze jako jedno těleso, resp. všichni aktéři
 +se sloučí do jednoho tělesa. U dětí je omezen výběr fyzikálního typu.
 +Děti mohou mít pouze stejný fyzikální typ jako jejich rodič nebo nemusí
 +být ve fyzikální simulaci (typ None). Tím se zamezí vzniku nelogických
 +situací. Při vykreslování je nejdříve vykreslen rodič a pak jeho děti
 +opět odspoda nahoru.
 +
 +Aktér převezme kolizní tvar ze své grafiky (textury nebo animace).
 +Tento tvar již není možné více upravovat. Aktér nemůže změnit svůj
 +kolizní tvar ani pomocí skriptování. Pomocí skriptování může aktér
 +změnit svojí grafiku, ale tím se nezmění jeho kolizní tvar. Tzn. 
 +aktér bude mít po celou dobu svojí existence kolizní tvar, který můžeme
 +vidět v editoru na scéně. Jediná akce, která má za následek změnu
 +kolizního tvaru aktéra, je pouze tehdy, když aktér obsahuje nějaké
 +dítě. Když se jeho dítě ve hře zničí, tak se zničí i jeho kolizní
 +tvar. Tedy z kolizních tvarů aktéra se odebere kolizní tvar dítěte.
 +
 +
 +===== Vizuální skriptování (Visual Scripting) =====
 +
 +Bez možnosti skriptování by bylo možné vytvořit pouze statickou scénu. Tzn. scénu, na které pouze
 +uvidíme fyziku v praxi. Například jak aktéři padají na zem nebo
 +si vyzkoušet různá fyzikální nastavení. ​
 +
 +Vizuální skriptování obsahuje každý aktér ale i každá scéna. V
 +dalším textu bude popsáno skriptování především z pohledu aktéra. Vizuální
 +skriptování aktéra otevřeme v jeho vlastnostech po vybrání aktéra na
 +scéně.
 +
 +{{:​documentation:​editor_vs.png?​direct&​800|Okno vizuálního skriptování}}
 +
 +==== Spojování uzlů (Nodes) ====
 +
 +Na plochu přetahujeme z pravého sloupce jednotlivé uzly a pak je logicky propojujeme. ​
 +Propojení uzlů musí být vytvořeno tak, aby nezáviselo na pořadí vykonávání jednotlivých sekvencí uzlů. Tzn. nezáleží na pořadí vyvolání jednotlivých událostí a při připojení více uzlů na jeden výstup nezáleží v jakém pořadí budou uzly vykonány.
 +Skriptování obsahuje následující typy uzlů:
 +
 +=== Událost (Event Node) a Akce (Action Node) ===
 +
 +Typy uzlů jsou rozlišeny pomocí barev.
 +Levá strana uzlu obsahuje vstupy (signal in sockets), pravá výstupy (signal out sockets) a dolní strana proměnné (variable sockets). Výstupní proměnná je zobrazena jako trojúhelník.
 +Ukázka uzlů je zobrazena na obrázku.
 +
 +{{:​documentation:​editor_vs_nodes.png?​direct|Událost a akce ve vizuálním skriptování}}
 +
 +=== Proměnná (Variable Node) ===
 +
 +Proměnné umožňují uložit hodnotu daného typu. Nejdůležitější typy
 +jsou rozlišeny pomocí barev. Barvy pomáhají propojování uzlů.
 +Typy proměnné:
 +
 +  * **Bool** - Hodnota ano (//true//) / ne (//false//)
 +  * **Int** - Celé číslo. Např. 5; 42; 897; 0
 +  * **Float** - Číslo s plovoucí desetinnou čárkou. Např. 5; 42; 789,78; 42.987; 8E+5
 +  * **Vector2** - Dvourozměrný vektor. Souřadnice jsou oddělené středníkem a každá část je typu Float. Např. 0;0 nebo 42;789,78
 +  * **String** - Řetězec resp. text omezený pouze na ASCII znaky
 +  * **Actor** - Aktér na scéně. Nastavení obsahuje tři tlačítka. První se symbolem ​ nastaví aktuálně vybraného aktéra na scéně, pokud je na scéně vybrán jeden aktér. Prostřední se symbolem X vymaže aktuální hodnotu. Poslední tlačítko zobrazí aktuální hodnotu aktéra na scéně. Některé akce a události mají proměnnou implicitně nastaveny jako Owner. Tzn. jako jeho hodnota bude nastaven aktér, ve kterém se příslušný uzel nachází. Velice zjednodušuje práci.
 +  * **Actor Type** -  Typ aktéra
 +  * **Path** - Cesta
 +  * **Texture** - Textura
 +  * **Animation** - Animace
 +  * **Sound a Song** - Oba typy označují zvuk z editoru, ale každý má jiné použití. //Sound// (zvuk) se používá pro krátký zvuk, který bude použit ve hře. Např. zvuk výstřelu. Z interních záležitostí je důležité vědět, že tento zvuk bude při hře uložen v nekomprimovaném formátu a ve hře bude celý načten do paměti. ​ Naopak //Song// (píseň) se používá pro delší zvuky resp. písně. Tento typ bude především použit pro přehrávání hudby na pozadí hry. Písně budou při hře uloženy ve formátu WMA a ve hře se budou pouze streamovat, takže nebudou zabírat velké množství paměti.
 +  * **Scene** - Scéna
 +  * **Key** - Klávesa
 +
 +Po vybrání uzlů na ploše se zobrazí jejich vlastnosti v pravé dolní
 +části editoru v tabu Nastavení (VS Settings).
 +
 +^Ovládání^^
 +|Levé tlačítko myši|vybírání uzlů na ploše|
 +|Levé tlačítko myši + Ctrl|přidání / odebrání uzlu z vybraných uzlů na ploše|
 +|Levé tlačítko myši + Alt|vybírání uzlů na ploše pomocí obdélníku|
 +|Pravé tlačítko myši|pohyb po ploše|
 +|Kolečko myši|přiblížení nebo oddálení zobrazení|
 +|Ctrl + C|kopírování vybraných uzlů do schránky ​ (kopírovat)|
 +|Ctrl + V|vložení uzlů na plochu ze schránky (vložit)|
 +|Ctrl + X|kopírování do schránky a následné smazání vybraných uzlů na ploše (vyjmout)|
 +|Ctrl + Z|vrácení poslední akce (zpět)|
 +|Ctrl + Y|znovu provedení poslední akce (znovu)|
 +|Delete|smazání vybraných uzlů na ploše|
 +
 +==== Konečný automat (State Machine) ====
 +
 +Konečný automat obsahuje alespoň jeden stav.
 +Hrana automatu se skládá ze dvou částí. Stavu, do kterého se přejde, a jména
 +hrany (event in). Jména hran se definují v levé
 +dolní části editoru v tabu Názvy hran (Events In). Zde definujeme
 +názvy hran, které budeme používat. Samotné změny stavů se vykonávají
 +pomocí uzlů, kde v akci pouze určíme název hrany. Potom
 +se zjistí, jestli v aktuálním stavu existuje hrana s daným názvem
 +a pokud ano, tak se změní stav automatu. Z tohoto důvodu je velice
 +důležité vhodně a výstižně zvolit název hrany.
 +
 +^Ovládání^^
 +|Levé tlačítko myši|vybrání stavu na ploše nebo definování hrany mezi stavy|
 +|Dvojklik na stav|zobrazení uzlů vybraného stavu|
 +|Pravé tlačítko myši|pohyb po ploše|
 +|Delete|smazání vybraného stavu na ploše|
 +
 +==== Definovaná událost (Event Out) ====
 +
 +V levé dolní části editoru v tabu Definované události (Events Out)
 +si můžeme definovat vlastní události. Je velice vhodné zvolit výstižné
 +jméno, aby bylo zřejmé, co událost znamená. Pomocí uzlů
 +můžeme tyto události vyvolat. Jiný aktér pokud má zájem, tak může
 +reagovat na tuto událost. A to tak, že ve svém vizuálním skriptování
 +použije událost, která čeká na konkrétní definovanou událost jiného
 +aktéra.
 +
 +==== Proměnná aktéra (Actor Variable) ====
 +
 +Proměnnou aktéra definujeme v pravé dolní části editoru v tabu Proměnné
 +aktéra (Actor Variables). Zde je opět vhodné zvolit výstižné jméno
 +a typ proměnné. Po definování proměnné ji můžeme použít na aktuální
 +ploše uzlů pomocí tlačítka se symbolem ​ vedle proměnné. ​
 +
 +Proměnné ostatních aktérů nebo globální proměnné vložíme na plochu uzlů 
 +pomocí nabídky Vložit proměnnou (Add variable), kde zvolíme
 +globální proměnnou nebo proměnnou aktuálně vybraného aktéra na scéně.
 +
 +==== Vizuální skriptování scény (Scene Scripting) ====
 +
 +Skriptování scény se otevře z hlavního okna editoru (viz obrázek ), kde se edituje scéna.
 +Skriptování scény je úplně stejné jako skriptování v aktérech. Jediný
 +přídavek je, že proměnným ve skriptování scény se říká globální proměnné
 +a aktéři mají k těmto proměnným jednoduší přístup.
 +
 +Velice se hodí pro nadefinování většiny logiky hry a pomocí automatu
 +se dají jednoduše vytvořit různé části kola ve hře.
 +
 +
 +===== Prototyp aktéra (Prototype) =====
 +
 +Pokud aktéra dobře vytvoříme,​ především jeho vizuální skriptování,​
 +můžeme z něj vytvořit prototyp. Prototyp aktéra slouží už podle názvu
 +jako prototyp a můžeme ho používat mezi různými scénami. Normálního
 +aktéra na scéně nemůžeme nijak přenést ani zkopírovat na jinou scénu,
 +protože může mít závislosti na scénu, ve které se nachází.
 +
 +Prototyp vytvoříme ve vlastnostech aktéra po jeho vybrání na scéně.
 +Pokud aktér obsahuje nějakou závislost na scénu, především hodnoty
 +aktérů ze scény v proměnné typu //Actor//, tak na to budeme upozorněni
 +a budeme mít možnost automaticky zrušit takové závislosti. Tedy aktér
 +se zkopíruje a pokud obsahuje zmíněné závislosti,​ tak proměnné, jejichž
 +hodnoty mají závislost na scénu, budou nastaveny na implicitní hodnotu.
 +Jediné povolené odkazy na jiné aktéry jsou odkazy na svoje děti nebo
 +rodiče. Tedy aktér jako prototyp může v proměnných typu //Actor// mít
 +hodnoty svých dětí nebo rodičů a taktéž může používat jejich proměnné.
 +
 +
 +===== Nastavení hry (Game Settings) =====
 +
 +  * **Velikost okna hry (Game Window)** - Velikost (rozlišení) okna hry.
 +  * **Simulation Units** - Přepočet na metry ve fyzikální simulaci. Číslo udává kolik pixelů odpovídá jednomu metru. Implicitní hodnota je 100, tedy 100 pixelů je 1 metr. Toto číslo je mít vhodně nastavené tak, aby byli dodrženy doporučené velikosti aktérů. Změna nastavení vizuálně neovlivní pozice objektů na scéně ani kolizní tvary aktérů, ale pouze veškeré hodnoty ve skriptování,​ které se týkají fyziky a pozice na scéně, a také nastavení gravitace. Resp. jejich hodnoty se nezmění, ale jejich vizuální význam ano. Pokud například na aktéra působíme nějakým impulsem a změníme hodnotu z 50 na 100, tak impuls bude mít ve hře vizuálně dvojnásobnou velikost (účinnost) oproti původnímu nastavení. ​
 +  * **Gravitace (Default Gravity)** - Gravitace ve hře. Pomocí skriptování lze změnit.
 +  * **Barva pozadí (Background Color)** - Barva pozadí ve hře. Hodnota je v RGB. Barva se zobrazuje pouze ve hře ale ne v samotném editoru.
 +  * **Continuous Collision Detection** - Přesnější kontrola kolizí, aby rychle se pohybující těleso neproletělo jiným tělesem. Při vypnutém nastavení je hra výrazně rychlejší,​ ale může se stát, že rychlé těleso proletí jiným tělesem. ​
 +
 +
 +===== Testování hry (Run Game) =====
 +
 +Hra lze přímo spustit z editoru a otestovat. Hra bude začínat aktuálně
 +otevřenou scénou. Tímto způsobem spuštěná hra obsahuje pár vlastností
 +navíc, které slouží k testování. Vykreslují se kolizní tvary aktérů
 +a cesty. Kolizní tvar má odlišnou barvu, pokud je aktér v kolizi. Scénu lze oddálit nebo přiblížit,​ abychom
 +měli celkový přehled o scéně. Tyto možnosti nebudou obsaženy v publikované hře.
 +
 +^Ovládání^^
 +|F1|vypnutí zobrazování kolizních tvarů aktérů a cest|
 +|Kolečko myši|přiblížení nebo oddálení scény|
 +
 +
 +===== Publikování hry (Publish Game) =====
 +
 +Pro získání hry se v adresáři projektu vytvoří složka
 +//​Publish//,​ kde se bude nacházet spustitelná hra se vším potřebným pro
 +svůj běh. Stačí publikovat obsah této složky. Hra začíná aktuálně otevřenou scénou. ​
 +
 +Při každém publikování hry se složka //Publish//
 +smaže, takže není doporučeno do ní nic ukládat. Nelze
 +vygenerovat hru, pokud se nepodaří složku smazat.
 +
 +===== Klonování aktérů =====
 +
 +Při kopírování skupiny objektů na scéně přes schránku se zkontroluje jejich propojení a u kopií se vytvoří stejná propojení.
 +Skupina objektů se zkopíruje. Poté se zkontroluje,​ jestli neobsahují objekty, které se kopírovali. Pokud ano, tak se jejich hodnoty nastaví na nové hodnoty.
 +
 +Mějme aktéry A a B. B ve svém vizuálním skriptování obsahuje hodnotu A.
 +Při klonování samotného B bude kopie B obsahovat ve svém vizuálním skriptování hodnotu A.
 +Pokud klonujeme celou skupinu (A i B), pak vytvořené kopie jsou propojené mezi sebou, resp. kopie B obsahuje hodnotu kopie A.
 +Nechť C má odkaz na svoje dítě. Po klonování C má kopie C odkaz na své nové dítě.
 +Nechť D obsahuje proměnnou dítěte E. Po klonování D i E, bude kopie D obsahovat proměnnou dítěte kopie E.
 +
 +Stejné chování platí i při vytváření aktéra za běhu hry.
 +
 +
 +===== Bezpečné smazání =====
 +
 +Před smazáním objektu z projektu se musí zkontrolovat jeho závislosti,​ jestli je někde použit.
 +
 +{{:​documentation:​editor_safedeleting.png?​direct|Smazání textury z projektu}}
 +
 +Obrázek ​ ukazuje okno při smazání textury z projektu. Zobrazují se místa, kde je objekt použit včetně celé cesty. U každé závislosti můžeme rozhodnout, jak s ní bude naloženo. Jsou na výběr dvě možnosti Vyčistit (//Clear//) a Smazat (//​Remove//​). Každá možnost představuje logickou možnost pro daný typ závislosti. Například na obrázku ​ první závislost představuje použití textury v animaci, tedy textura se může z animace smazat (možnost //​Clear//​) ​ nebo se odstraní animace (možnost //​Delete//​). Textura je použita jako grafika aktéra, tedy aktérovi můžeme grafiku smazat nebo odstranit aktéra. Dále je textura použita v proměnné uzlu. Zde lze proměnnou vyčistit (nastavit implicitní hodnotu) nebo uzel smazat.
 +
 +Smazání může mít více fází. Při odstranění animace na obrázku se opět zkontrolují závislosti animace. Pokud je animace někde použita, tak dostaneme další závislosti pro animaci.
 +
 +Bezpečné smazání je použito všude, kde mohou vznikat závislosti. Smazaní textury, typu aktéra, aktéra ze scény, vrstvy ze scény, proměnné aktéra, apod.
Print/export
QR Code
QR Code documentation:user_documentation (generated for current page)