1 / 6

World Piece 1

Group of players. Player object 1. Player object. Player object n. RPG timeSC. Sposti NPC podle daneho stredu a polomeru. Ranged AI. Rules Layer. Tohle u ž téměř neplatí necháno jen pro představu. Terrain Quad-tree. World Piece 1. Global World. Global Scene. World Piece. Controls.

Télécharger la présentation

World Piece 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. Vytvoření sctruktury prázdného engine Zapojení a vlastnosti Objektu Okna Window X Window 1 • 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 Graphics Layer Window Y Keyboard Přesměrování myši do okna Input Layer Simulace myši Nezaleží na poloze kde se myš nachází All times Mouse Window 1 Window X Child Siebling hierrarchie Window X a Window Y jsou okna již dříve vytvořená Window 1 World Object Window X Windows Window Y Virtual Player Obj • 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 • 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 • 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

  4. Sim Cal FIFO Sim Cal FIFO 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 Nová stuktura Sim. Layeru Seznam SC Simualtion Layer • 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 • 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 • 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

  5. Sim Cal FIFO Sim Cal FIFO Sim Cal FIFO Vytvoření a zapojení GlobalWorld objektu • 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 Schéma zapojení GW Terrain Quad-tree World Piece 1 GlobalWorld Global Scene Terrain Quad-tree Controls World Piece N Graphics Layer … Inventory Čárkovaně jak budou zapojeny později vytvoř. obj. do GW Child Siebling hierrarchie Terrain Quad-tree World Piece 1 World Object Objs. Container Sim. Calendar GlobalWorld World Piece N Terrain Quad-tree Objs. Container Sim. Calendar Sim. Calendar Windows Stejný objekt Virtual Player Obj Seznam SC Simualtion Layer • 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) • 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 • } • }

  6. Sim Cal FIFO Přidání globalního WorldPiece EXTERIER Terrain Quad-tree Global World World Piece 1 Global Scene Šipky odpovídají posloupnosti volání metody Render z RenderIfc co se bude rendrovat si WP rozhoduje sám v metodě Render Controls Graphics Layer … Inventory Child Siebling hierrarchie Global World World Piece 1 World Object Terrain Quad-tree Windows WP address Objs. Container Virtual Player Obj Sim. Calendar WorldPiece High Address Hexa Space Layer WorldPiece LowAddress Seznam SC Simualtion Layer • 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 • 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á • WP z hldiska Scriptu • Podobně jako Global_World má i předprogramovaný a do skriptu „zadrátovaný“ atomický objekt

More Related