Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

World Piece 1 Graphics Layer World Piece.. World Piece n Terrain Quad Tree Global Scene Controls Inventory Input Layer Keyboard Mouse All times Window.

Podobné prezentace


Prezentace na téma: "World Piece 1 Graphics Layer World Piece.. World Piece n Terrain Quad Tree Global Scene Controls Inventory Input Layer Keyboard Mouse All times Window."— Transkript prezentace:

1 World Piece 1 Graphics Layer World Piece.. World Piece n Terrain Quad Tree Global Scene Controls Inventory Input Layer Keyboard Mouse All times Window 1 Window.. Posílá informace o stisku tlačítek, změny polohy atd. do cílového objektu Nezaleží na poloze kde se myš nachází Virtual Player Obj Výsledné akce stisku tlačítek rozešle VPO do správných objektů Simualtion Layer Hexa Space Layer Obj Container. World Piece 1 World Piece.. World Piece n World Object Child Siebling hierrarchie Terrain Quad-tree Pozice kurzoru my3i Simulace myši Game Cycle World Object Ovlada celou hru, řádí čas pravidel, nastavuje objekty které ovládá AI etc. Group of players Player object 1. Player object.. Player object n. Ranged AI Sposti NPC podle daneho stredu a polomeru Předává řízení pro zpracování kvanta času RPG tahového systému, opětné zařazení do fronty se provádí přes GCO Rules Layer Žádost o zařazení zpracování dalšího časového kvanta RPG tahového systému do Sim Cal Přesměrování myši do okna Group of Active NPCs / Creatures Player object 1. Player object.. Player object n. some NPCs Director SubNPC1 SubNPC.. SubNPC n House Pub Workers Direcotor SubNPC1 SubNPC.. SubNPC n Tyto NPC se mohou pohybovat přes celou mapu Tyto NPC jsou pouze částí World Piece 1, při swapu se swapnou sním, obecně se ale mohou pohybovat kde chtějí. RPG timeSC Barter Window Director Ranged AI SubNPC1 SubNPC.. SubNPC n SubNPC1 SubNPC.. SubNPC n is WorldPiece High Address Script Layer WorldPiece LowAddress Loaded Modules (Scripts) script Methods Obj Definitions Properties Virtual Player Obj GlobalWordl Tohle už téměř neplatí necháno jen pro představu Global World Možná nebude ještě nerozhodnuto Windows Global Scene Controls Inventory Barter Window

2 Graphics Layer Global Scene Controls Inventory Input Layer Keyboard Mouse All times Nezaleží na poloze kde se myš nachází Virtual Player Obj Simualtion Layer Hexa Space Layer World Object Child Siebling hierrarchie Pozice kurzoru my3i Simulace myši GameCycle World Object Ovlada celou hru, řádí čas pravidel, nastavuje objekty které ovládá AI etc. Group of players Ranged AI Sposti NPC podle daneho stredu a polomeru Předává řízení pro zpracování kvanta času RPG tahového systému, opětné zařazení do fronty se provádí přes World Rules Layer Žádost o zařazení zpracování dalšího časového kvanta RPG tahového systému do Sim Cal Přesměrování myši do okna Group of Active NPCs / Creatures RPG timeSC Barter Window Director Ranged AI WorldPiece High Address Script Layer WorldPiece LowAddress Loaded Modules (Scripts) Methods Obj Definitions Properties Inventory Inventory screen Barter Window Controls Global Scene Virtual Player Obj Windows Global Scene Controls Inventory Barter Window Prázdný engine Odpovída metodě FrameMove Metoda Render …….. List of SCs

3 Graphics Layer Input Layer Keyboard Mouse All times Nezaleží na poloze kde se myš nachází Simulace myši Přesměrování myši do okna Window 1 Vlastní konstrukce objektu Okna Okno potřebuje dva plugy do vrstev jeden do GraphicsLayer a druhý do InputLayer GL •x,y,width,height,zmin,zmax •Render_Interface • priority ( kolikáté se má okno rendrovat ) IL – • x,y,with,heigh •Input_Akceptable_Interface • priority ( pozice okna ve frontě IL) WORLD • World_Interface Render_Interface Set_Render_Flags // Nastavení priznaku renderingu do DX UnSet_Render_Flags // Vraci do podoby před Set_Render_Flags Render ( bool OnlyVer) // Only vert renderuje pouze vrcholy a jejich normaly žádná informace o texturach se neposilá Render_Identif // rendering pro indetifikci objektu Hide, UnHide Input_Akceptable_Interface Send_Mouse_Button (tMouseBtn button,bool Up, tPoint Mouse EventPos ) // zaznamenává i změnu pozice kurzoru bez zmačknutí tlačítek Mouse_Enter_Area // kurzor vstoupil do oblasti okna Mouse_Exit_Area // kurzor opustil oblast okna Send_Key_State (tKey key, bool Up ) Gain_Focus // IL zděluje oknu že bylo vybraná jako zaměrěné Lost_Focus // IL zděluje oknu že ztratilo zaměření LockFocus Hide, UnHide Postup konstrukce Okna •Okno muže být i v jedné vrstvě např pouze grafické •GL okno vložíme do seznamu oken GL a nastavíme příslušnou prioritu, tedy kolikáté má pořadí v renderingu oken •IL okno též vložíme do seznamu, priorita zde znamená pořadí zkoušení poslání zpráv o kliknutí (tj. jeho výška, pokud zpráva zaslána mimo meze okna je rovnou zkoušeno další okno dle seznamu priorit) •WORLD zapojíme okno do CH-S hierarchie jako potomka uzlu WORLD.WINDOWS Zapojení a vlastnosti Objektu Okna Window X Window Y Vytvoření sctruktury prázdného engine World Object Child Siebling hierrarchie Windows Window 1 Window Y Window X Window X a Window Y jsou okna již dříve vytvořená Virtual Player Obj

4 Simulation Layer (SL) Důvod změny Protože v každém WorldPiece (WP) bude mnoho objektů a WP bude mnoho, tedy též akcí vkládaných do sim. kalendáře (SC) bude také mnoho a při swapu jednoho WP by se museli jeho události ze SC vyjmout a při nahrání zase vložit. Pro řešení tohoto problému bude lepší zavést SL jako seznam SC, tedy každý WP bude mít jeden SC a ještě bude jeden globální SC pro celý svět, musí být možnost z jednoho WP přidat nějaký event do SC jiného WP. Pokud se WP swapne je jeho SC swapnut sním, při loadningu se zpracují eventy v jeho SC jako kdyby dostal kvantum času délky doby co byl WP swapnut Simualtion Layer Seznam SC Sim Cal FIFO Nová stuktura Sim. Layeru Pozn. Při vytváření kalendáře je mi jedno jakou pozici bude mít v seznamu kalendářů SL, ten konkrétní kalendář si zjistím z objektu ke kterému je připojen (WorlPiece, GlobalWorld) World Object World_Interface GetSubNode // Vrací uzel generovaný posloupností jmen ve tvaru name1.name2….namen pro niž platí namei je otec namei+1, name1 je jméno uzlu z kt. Je metoda volána (C++ this pointer) GetMyName SetMyName // nastaví jméno objektu, přes jméno se adresuje objekt ve world hierarchi Add_Child Get_1stChild Get_nextSiebling DeleteMe // zruší celý podstrom v hierarchii generovaný tímto uzlem Co to je? Je to Základní objetk Enginu Tento objekt implementuje pouze dvě zaákladní interface a jedno manipulační a to : World_Interface Implemetace CH-S hierarchie, WO je její kořen a nic víc. Temp_Interface Umožnuje kopletní řešení SAVE/LOAD operací World_Manipulate Přes to to interface se dělají operace jako pause game, NEW GAME Temp_Interface Save //vytvoří swap file a uloží do něho data Restore //obnoví data ze swap file

5 Graphics Layer Global Scene Controls Inventory … World Object Child Siebling hierrarchie World Piece 1 Objs. Container Terrain Quad-tree Vytvoření a zapojení GlobalWorld objektu GlobalWorld World Piece N Objs. Container Význam GlobalWorld •GW je konteiner všech WorldPieces •Má globální simulační kalendář pro celý svět •má schopnost renderingu kde se stará o zobraznení oblohy a zjištění, kt. WP se budou rendrovat •zná pozici všech WP v célém světě • stará se o TEMP operace nad world pieces (tzn. Kdy se daný WP má uvolnit a kdy nahrát) •Objekt nikdy není ve swapnutém stavu •Obsahuje všechny informace pro konkrétní hru •tedy NEW GAME je vytoření toho objektu z příslušného scriptu (toto je pouze část celé reš. Ve World_Object) •Hra končí destrukcí GW objektu Konstrukce GlobalWorld •Seznam WorldPiece •Render_Interface •World_Interface •Vytváří jeden Simulační kalendář v SimLayeru •Temp_Interface (tydy vlastně save/load game) (toto je pouze část celé reš. Ve World_Object) Sim. Calendar Simualtion Layer Seznam SC Sim Cal FIFO Připojení GlobalWorld ze scriptu Aby byly možné funkce hry jako např. příběh definovaný ze scriptu musí být ve scriptu implementovaný základní mód Definice tridy Global_World pro použití ve skriptu (Global_World je atomický objekt skriptu ) Def Global_World { virual Mode Default virtual Method Init } Ex: Def Moje_Hra : Global_World { Mode Default {// script pro příběh } Method Init {//inicializace při volani Temp_Interface::Init } Stejný objekt Virtual Player Obj Windows Schéma zapojení GW Čárkovaně jak budou zapojeny později vytvoř. obj. do GW Terrain Quad-tree

6 Graphics Layer Global Scene Controls Inventory … Hexa Space Layer World Object Child Siebling hierrarchie WorldPiece High Address WorldPiece LowAddress World Piece 1 Terrain Quad-tree Objs. Container Vlastní konstrukce objektu WOLRD_PIECE_EXTERIOR (WP) Objekt se skladá z několika částí, každá nutná pro chod nějaké vrstvy GL -bounding box celého WP -seznam grafických child objektů v nějaké struktuře nejspíše octtre -implementace Render_Intrface HSL -HexaGrid -WoldPieceAddresu (game world unique) -impl. Hexa_Interface WORLD -jméno objektu pro přístup ze skriptu -struktura pro chield-siebling hierarchii -impl. World_Inerface SIM -simulační kalendář Plus vlastní data jako je objekt terraina objekt konteiner v němž budou další data jež WP používá Šipky odpovídají posloupnosti volání metody Render z RenderIfc co se bude rendrovat si WP rozhoduje sám v metodě Render Postup Konstrukce WP •GL zapojíme jako child do struktury GlobalScene • WORLD zapojíme jako přímý child Global_world jako jeho chlidy zapojíme terrain, octtree a kontejnerobjektů (pozn. V této sekci nesmí mít žádný siebling objektu stejné jměno) •HL na místě jeho high adresy musí být volné místo (nestačí aby tam přítomný objekt byl swapnutej, protože jeho HighAdresa je unikítní), jelikož je to hlavní WP je jeho low adresa rovna nule •SIM objekt přidá svůj simulační kalendář do seznamu kalendářů sim. vrstvy WP address Přidání globalního WorldPiece EXTERIER Global World Simualtion Layer Seznam SC Sim Cal FIFO Sim. Calendar WP z hldiska Scriptu Podobně jako Global_World má i předprogramovaný a do skriptu „zadrátovaný“ atomický objekt Virtual Player Obj Windows Terrain Quad-tree


Stáhnout ppt "World Piece 1 Graphics Layer World Piece.. World Piece n Terrain Quad Tree Global Scene Controls Inventory Input Layer Keyboard Mouse All times Window."

Podobné prezentace


Reklamy Google