Počítačové hry a animace Cvičení 3. Notová osnova ● Content pipeline ● Úvod do logiky ● Trigger engine ● Skriptování ● Pathfinding a A*

Slides:



Advertisements
Podobné prezentace
(instance konkrétní třídy)
Advertisements

Dynamické systémy.
Stavový prostor. • Existují úlohy, pro které není k dispozici univerzální algoritmus řešení • různé hry • problém batohu, problém obchodního cestujícího.
Zpracování SQL Lubomír Andrle 5. přednáška
Počítačové hry a animace Cvičení 2. (2) Osnova Vstup od uživatele – –Myš – –Klávesnice – –Joystick Content pipeline – –Assety – –Content processory 3D.
HYPERTEXT PREPROCESSOR. PROGRAMOVÁNÍ. DEFINICE POJMŮ Problém Problém nevyřešený, nežádoucí stav obvykle vyžaduje nějaké řešení Neřešitelný problém Neřešitelný.
 Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele, která odhaluje uspořádání, vztahy, tendence a trendy  Existuje celá.
Pole, ukazatele a odkazy
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
Operační systémy. OPERAČNÍ SYSTÉMY pomoc operátorovi, podpora vlastností reálného času, víceuživatelských a více úlohových systémů.
ALGO – Algoritmizace 1. cvičení
C# pro začátečníky Mgr. Jaromír Osčádal
Martin Adam Švadlenka. Úvod Téma Desková aplikace Zadání Vytvořit funkční deskovou aplikaci, která by dokázala spustit hru Lodě, podobnou těm které známe.
Databázové systémy II Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
● SWIG - Simplified Wrapper and Interface Generator ● + google a diskusní fóra ● nástroj zjednodušující (a sjednocující)
UMĚLÁ INTELIGENCE V POČÍTAČOVÝCH HRÁCH
Výpočetní technika Akademický rok 2011/2012 Letní semestr Novák Petr
Algoritmizace 9. Ročník.
Medians and Order Statistics Nechť A je množina obsahující n různých prvků: Definice: Statistika i-tého řádu je i-tý nejmenší prvek, tj., minimum = statistika.
J a v a Začínáme programovat Lucie Žoltá metody, objekty, konstruktor.
LOGISTICKÉ SYSTÉMY 7/14.
Základní škola a mateřská škola Bzenec Číslo projektu: CZ.1.07/1.4.00/ Číslo a název šablony klíčové aktivity: III/2: využívání ICT – inovace Vypracoval/a:
Hana Kotinová Struktura a cíl práce Metody předzpracování dat Systémy předzpracování dat Historie vývoje DPT Jak program pracuje Budoucnost.
State. State – kontext a problém Kontext  chování objektu má záviset na jeho stavu, který se typicky mění za běhu Neflexibilní řešení  metody obsahují.
SÍŤOVÁ ANALÝZA.
Páté cvičení Dědičnost Interface Abstarktní třídy a metody
Podmíněné vykonávání a rozvětvení. Co je to? Podmíněné vykonávání = nechceme provést všechny příkazy, chceme určité části kódu něčím podmínit Rozvětvení.
DATOVÉ MODELY (c) Tralvex Yeap. All Rights Reserved.
TI 7.1 NEJKRATŠÍ CESTY Nejkratší cesty - kap. 6. TI 7.2 Nejkratší cesty z jednoho uzlu Seznámíme se s následujícími pojmy: w-vzdálenost (vzdálenost na.
PB161 Jmenné prostory, I/O proudy PB161 | Jmenné prostory, IO proudy PB161 – Programování v jazyce C++ Objektově Orientované Programování.
Objektové programování
Jaroslav Šnajberk, Přemek Brada
Jedenácté cvičení Vlákna. Java cv112 Vlákna Operační systém Mutitasking – více úloh se v operačním programu vykonává „současně“ Java Multithreading -
Algoritmy vyhledávání a řazení
4IT445 – Testování a ladění v PHP Ing. Jan Mittner
Strategy. Strategy – „All-in-1“ na začátek class AStrategy { public: virtual void Algorithm()=0; protected: AStrategy(); }; class SpecificStrategy: public.
Seminář C++ 4. cvičení Objekty Ing. Jan Mikulka. Co je objekt ► obraz třídy i instance ► třída – definovaná za pomocí klíčového slova class ► instance.
6. cvičení Polymorfismus
Association table mapping Jakub Chalupa Naim Ashhab ČVUT FEL A7B36ASS – Architektura SW systémů LS 2014.
Ing. Jan Mittner Životní cyklus požadavku 2. Moduly 3. Pluginy 4. Jak řešit komponenty typu menu 5. atd. 2.
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
OSNOVA: a) Úvod do OOPb) Třídy bez metod c) Třídy s metodamid) Konstruktory a destruktory e) Metody constf) Knihovní třídy g) Třídy ve tříděh) Přetížení.
Geocaching aneb cesta za poklady.
Dokumentace informačního systému
1 TEORIE HER Nejmenovaná studentka, písemka, 2003: „Teorii her neznám, ale kdo si hraje, nezlobí“ „Teorii her neznám, ale kdo si hraje, nezlobí“
Databázové modelování
Metodika objektového přístupu při tvorbě překladačů. Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
Šesté cvičení Výjimky Balíky.
Algoritmus a jeho vlastnosti
Počítačové hry Cvičení 4.
Základy ekonometrie 4EK211
Programování POCSI. Programovani/POCSI2 Základní pojmy Akce - děj nad objekty, mající začátek a konec, a mající přesně definovaný účinek. Příkaz - popis.
Foreign key mapping Jakub Chalupa Naim Ashhab ČVUT FEL
Windows Presentation Foundation Ovládací prvky. Ovládací prvky Všechny standardní prvky jsou dostupné a některé nové Třídy jsou společné pro WPF System.Windows.Controls,
14. června 2004Michal Ševčenko Architektura softwarového systému DYNAST Michal Ševčenko VIC ČVUT.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
Service layer. Service layer – úvod Problém  Vytvoření API aplikace  Odstínění bussiness logiky a transakčního chování od zbytku aplikace  Kam s aplikační.
Počítačové hry a animace Cvičení 3 – Ttransformace, Camera, 3DModely.
JavaScript úvod. Jazyky webového vývojáře Dynamická stránka  aktivně mění svůj obsah v reakci na činnost uživatele  zpracování na straně serveru (PHP,
Úloha 1 Projekt CZ.1.07/1.1.16/ David Holoubek 2014 Dotykový senzor na vstupu mikrokontroléru NXT.
Template Method. Motivační příklad – reálný svět Čaj 1) Uvař vodu 2) Dej do hrnku sáček čaje 3) Zalij hrnek 4) Přisyp cukr a vymačkej citrón Káva 1) Uvař.
CHRONOPHOBIA Autor: Bc. Michal Jirouš Vedoucí práce: Ing. Petr Felkel Ph.D. (3D akční hra)
NÁZEV ŠKOLY:SOŠ Net Office, spol. s r.o. Orlová Lutyně
C# konzole – Podíl dvou čísel, podmínka IF
Co se dá změřit v psychologii a pedagogice?
Návrhový vzor Flyweight
NÁZEV ŠKOLY: Střední odborná škola Net Office, spol. s r. o
C# přehled vlastností.
Přednáška 9 Triggery.
NÁZEV ŠKOLY: Střední odborná škola Net Office, spol. s r. o
Transkript prezentace:

Počítačové hry a animace Cvičení 3

Notová osnova ● Content pipeline ● Úvod do logiky ● Trigger engine ● Skriptování ● Pathfinding a A*

(3) Content Pipeline Kompilace do assetu pomocí –Content importerů Konverze do XNA nativních DOM pro content processor –Content procesorů Zkompiluje do managed code objectu k přímému použití v XNA

(4) Content Pipeline II Importéry pro 3D modely –Autodesk.FBX –DirectX.X Export FBX –Maya – Nutno zapnout v pluginech –Max – Přímo Export X – pro Maxhttp://

(5) Custom Content Importer Můžeme si napsat vlastní –Namespace Microsoft.Xna.Framework.Content.Pipeline Content Pipeline Extension Library Přetížit fci Import MeshBuilder –Pomocná třída pro načtení a uložení jednoho meshe Custom Model Importer sample na create.msdn.com US/education/catalog/sample/custom_model_importer US/education/catalog/sample/custom_model_importer

Co je herní logika ● Kolektivní název pro spoustu věcí ● Obecně, systém který rozhoduje co herní objekty dělají ● Mnoho možných způsobů implementace

Logické vazby ● Když se něco stane, hra nějak zareaguje ● Když hráč stiskne páku X, otevřou se dveře Y ● Když nepřítel A uvidí hráče, začne dělat B ● Když uplyne nějaká doba, stane se X ● Vazby chceme: ● Konfigurovatelné ● Rozumně flexibilní ● Co možná výpočetně nenáročné

Trigger engine ● Explicitní implementace systému logických vazeb ● Je definována sada triggerů, které lze emitovat ● Objekty se registrují jako posluchačí triggerů ● Emitovaný trigger se předá posluchačům ke zpracování

Co může být trigger? ● Konkrétní input od hráče ● Interakce s herním objektem ● Změna ve vyznačené lokaci ● Akce způsobující zvuk ● Uplynutí určité doby (časový trigger) ● Kolize mezi určitými objekty ● Jiná změna herního stavu

Anatomie trigger enginu ● Každý typ triggeru reprezentován třídou/strukturou ● Pro každý typ seznam zaregistrovaných posluchačů ● Posluchači se registrují a odregistrují ● Emitovaný trigger je distribuován mezi všechny posluchače ● Vložit trigger může kdokoliv zvenčí

Posluchači a synchronizace ● Dědí interface podle typu a exponují funkci na zpracování ● Každý drží dvě fronty na triggery ● Na začátku update cyklu switch ● Triggery se zpracovávají během update posluchače, ne hned při přijetí

Implementační detaily ● Posluchačem může být: ● Přímo herní objekt ● Skriptový objekt ● Je vhodné, aby trigger engine sám implementoval časové triggery

Skriptování ● Součástí popisu herní úrovně může být skript ● Lze v jakémkoliv skriptovacím jazyce který umíme interpretovat ● Skript se obecně spouští ve dvou fázích: ● 1. Inicializace – může umisťovat herní objekty, vypisovat brífing a především registrovat posluchače ● 2. Runtime – kusy skriptu zaregistrované jako posluchači v reakci na události

Skriptovací engine ● V zásadě pouze interpret daného jazyka ● Je třeba mu umožnit: ● Nahlížet na stav hry a měnit jej ● Zjišťovat a upravovat stavy herních objektů ● Registrovat posluchače a být posluchačem ● Ukončit hru ● Komunikovat s hráčem

Skriptovací engine – příklad ● ● Pro C# ECMAScript interpret JINT ● Instance třídy JintEngine obsahuje kontext ● Metoda SetParameter definuje proměnnou ● SetFunction definuje delegáta jako ES funkci ● CallFunction explicitně volá ES funkce

Skriptovací engine – závěr ● Logiku lze řešit jak v herním kódu, tak ve skriptech ● Je třeba zvážit tradeoff ● Vyberte si svůj oblíbený skriptovací jazyk a interpret a vesele skriptujte! ● ● LuaInterface

Triggery/Skripty - implementace Triggery Delegát public delegate void MyEventHandler(object sender, object args); Interface public interface ITriggered { void Fire(object sender, object args); } Skripty Reflection PropertyInfo pi = obj.GetType().GetField(„mVar“); pi.SetValue(obj,val,null); Stejné jako obj.mVar = val; Design patterns Když po nich toužíte, tak si přečtěte Gang of Four...

Code: Triggery Delegáti - delegate retval Name( params, … ); –public delegate void MyDelegate(); –MyDelegate del = new MyDelegate( MyFunction ); –del(); ArrayList – dynamické pole Add(); foreach(element E in ArrayList) { } Trigger má mít –Delegáty pro kontrolní fce –Delegáta pro vykonávací funkci –Funkci pro kontrolu v každém updatu Zkontroluje kontrolní fce Pokud všechny true, tak pustí vykonávací fci

Pathfinding ● „Herní AI je pathfinding“ ● V některých hrách nejviditelnější část AI ● Za splnění určitých předpokladů teoreticky vyřešený problém

Definice problému ● Vím, kde jsem ● Vím, kam se chci dostat ● Vím, kam bezprostředně můžu ● Vím, kolik co stojí ● Chci najít nejlevnější cestu z A do B

Definice problému ● Pozice a její změna mohou mít různé významy ● Lze zohlednit mnohem víc informací ● Možné aplikace později

Algoritmus A* ● Řeší problém pathfindingu ● Pomáhá si heuristikou ● Heuristika = odhad jak daleko je cíl z daného stavu ● Pokud existuje výsledek, vždy nalezne ten optimální pokud je heuristika přípustná – tj. Může odhad podhodnotit, ale nikdy ne nadhodnotit ● Přesnější odhad → kratší runtime

Aktualitka "Introduction to Artificial Intelligence" October 10th to December 18th 2011

A* Engine ● Herní komponenta (ke stažení), která polymorfně řeší pathfinding ● Děděním z AStarJob a AStarNode lze v jednom enginu najednou zpracovávat různé typy úloh ● Každé kolo provede nanejvýš zadaný počet výpočetních kroků

A* engine ● AStarJob: ● Musí umět vrátit prioritu (cykly se jobům rozdělují v poměru priorit) ● Musí umět vrátit startovní stav ● Voliteně inicializace, finalizace ● Má stav – uninitialized, working (počítá), finished (cesta nalezena), failed (cesta nenalezena) ● Na konci je v goal cílový uzel, přes předky dojdeme nejkratší cestou k počátku

A* engine ● AStarNode ● Reprezentuje stav ve stavovém prostoru ● Neměl by se duplikovat ● Musí umět: – Vrátit všechny dostupné sousedy – Spočítat si svou heuristiku – Vrátit vzdálenost k danému sousedovi – Ohlásit se, pokud je cílový

Příklady úloh ● Stavy jsou body v prostoru ● Přístupné jsou stavy do určité vzdálenosti ● Nejkratší cesta euklidovsky ● Heuristika: vzdálenost rovnou čarou k cíli ● Implementováno jako příklad

Příklady úloh ● Váhovaná pravidelná mřížka ● Cena průchodu závisí na typu pole a vlastnostech cestujícího ● Heuristika: přímá vzdálenost best-case rychlostí

Příklady úloh ● Navigace ve spojitém interiéru ● Navigation mesh ● Rozdělení prostoru, pohyb mezi startem a cílem nebo těsně kolem překážek ● Použito v UE3 ● Heuristika: vzdálenost přímou čarou

Příklady úloh ● Lze kromě pozice uvážit i orientaci či rychlost ● Cenou je čas ● Heuristika: ???