Jakub Melka Štěpán Poljak Martin Růžička Martin Urza

Podobné dokumenty
Úvod do počítačových sítí

Experimentální systém pro WEB IR

MOBILNÍ SKLADNÍK. Příručka k základnímu ovládání. Beta verze popisu produktu Aktualizace dokumentu: z 10

VÝVOJ POČÍTAČOVÝCH HER

Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací.

Softwarový projekt 2008/2009 MFF UK

TÉMATICKÝ OKRUH Softwarové inženýrství

CÍLOVÝ KONCEPT. Ghoul Wars. pro. Jihočeskou univerzitu Pedagogickou fakultu Předmět: TDSA

Specifikace projektu Ocerus

Úvodem... 9 Kapitola 1 Karetních

Wonderware Information Server 4.0 Co je nového

Paralelní výpočty ve finančnictví

MBI - technologická realizace modelu

MOBILNÍ MULTIPLAYEROVÁ HRA THE HUNT. Y39PDA, školní rok 2010/2011 Ondřej Šíma

2. úkol MI-PAA. Jan Jůna (junajan)

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

modrana: flexibilní navigační systém Martin Kolman

Matematika v programovacích

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

Projekt. Jan Outrata. listopad Jan Outrata (KI UP) Projekt - analýza a návrh listopad / 13

Stručný obsah. K2118.indd :15:27

Microsoft Windows Server System

Obsah. Proč právě Flash? 17 Systémové požadavky 17. Jak používat tuto knihu 18 Doprovodný CD-ROM 19

Instalace MS SQL Serveru 2012

GPGPU Aplikace GPGPU. Obecné výpočty na grafických procesorech. Jan Vacata

Systémy pro tvorbu digitálních knihoven

RadioBase 3 Databázový subsystém pro správu dat vysílačů plošného pokrytí

Trosečník v džungli, adventura

Základní informace. Operační systém (OS)

Diplomová práce Prostředí pro programování pohybu manipulátorů

Sdílení a poskytování dat KN. Jiří Poláček

Vyšší odborná škola a Střední průmyslová škola, Šumperk, Gen. Krátkého 1

Meo S-H: software pro kompletní diagnostiku intenzity a vlnoplochy

Vypracoval: Ing. Antonín POPELKA. Datum: 30. června Revize 01

Specifikace vybavení pro výběrové řízení

Herní engine. Co je Engine Hotové enginy Jemný úvod do game designu

OPS Paralelní systémy, seznam pojmů, klasifikace

5. Umělé neuronové sítě. Neuronové sítě

Load Balancer. RNDr. Václav Petříček. Lukáš Hlůže Václav Nidrle Přemysl Volf Stanislav Živný

Obsah. 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody

Úvod. Programovací paradigmata

Gymnázium, Praha 6, Arabská 14. předmět Programování, vyučující Tomáš Obdržálek. Počítačová hra Fotbalový Manažer. ročníkový projekt.

Staňte se bodem zájmu!

Návod k použití softwaru Solar Viewer 3D

Moderní systémy pro získávání znalostí z informací a dat

Bc. Martin Majer, AiP Beroun s.r.o.

Měření teploty, tlaku a vlhkosti vzduchu s přenosem dat přes internet a zobrazování na WEB stránce

Přidělování paměti I Mgr. Josef Horálek

Obsah. O autorech 9 Earle Castledine 9 Myles Eftos 9 Max Wheeler 9 Odborný korektor 10. Předmluva 11 Komu je kniha určena 12 Co se v knize dočtete 12

VY_32_INOVACE_1_16 Programy pro Windows Jednoduché aplikace

Vybraná zajímavá Lotus Notes řešení použitelná i ve vašich aplikacích. David Marko TCL DigiTrade

Software Základní pojmy a rozdělení. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1123_Software Základní pojmy a rozdělení_pwp

Úvod do programovacího jazyka Python

SUPERPOČÍTAČE DANIEL LANGR ČVUT FIT / VZLÚ

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ

Architektura Intel Atom

Elektronická technická dokumentace Bc. Lukáš Procházka

Hospodářská informatika

CEITEC a jeho IT požadavky. RNDr. Radka Svobodová Vařeková, Ph.D.

Source Defender. PPJ semestrální projekt. Martin Přeták, ARI

ACV-Wars... The racing strategy Game design

Dokumentace programu piskvorek

Témata profilové maturitní zkoušky

Programátorská příručka

Implementace MES systému HYDRA Případová studie

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Peklák (PKK) interní rezervační systém

Agenda rady a zastupitelstva Ústeckého kraje elektronicky

Práce s texty, Transformace rastru, Připojení GPS

POKROČILÉ POUŽITÍ DATABÁZÍ

Vývoj moderních technologií při vyhledávání. Patrik Plachý SEFIRA spol. s.r.o.

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Wonderware Historian. Příklady vícevrstvých architektur. Jiří Nikl, Tomáš Mandys Pantek (CS) s.r.o.

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Real Time programování v LabView. Ing. Martin Bušek, Ph.D.

Pohled na svět dalekohledem i mikroskopem.

CZ.1.07/2.2.00/ )

F A,B = Vektory baze vyjádřete jako aritmetické vektory souřadnic vzhledem

ArcGIS Server 10.1/10.2

7.Vesmír a Slunce Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky

POSTUP NAHRÁNÍ SOFTWAROVÝCH ROZŠÍŘENÍ DO OBCHODNÍ PLATFORMY METATRADER 4 PRO UŽIVATELE MS WINDOWS

Úvod do programovacího jazyka Python

INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE

Lekce 4 - Vektorové a rastrové systémy

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21

NÁVRH EFEKTIVNÍ STRATEGIE MOBILNÍHO BANKOVNICTVÍ: NALEZENÍ SPRÁVNÉHO OBCHODNÍHO MODELU Mobile tech 2014

1 Nejkratší cesta grafem

Měření vzdáleností, určování azimutu, práce s buzolou.

Teorie her a ekonomické rozhodování. 2. Maticové hry

Implementace systémů HIPS: historie a současnost. Martin Dráb

Paralelní programování

BIG DATA. Nové úlohy pro nástroje v oblasti BI. 27. listopadu 2012

Martin Lísal. Úvod do MPI

Wolfram Alpha. v podobě html stránky, samotný výsledek je často doplněn o další informace (např. graf, jiné možné zobrazení výsledku a

Časová složitost / Time complexity

AGP - Accelerated Graphics Port

Evidence městského mobiliáře v GIS Kompas 3.2

Magic Power vzdálené sledování finančních dat. Popis a funkce systému. Strana: 1 / 6

Transkript:

Jakub Melka Štěpán Poljak Martin Růžička Martin Urza

Online hra určená pro mnoho dlouhodobě hrajících hráčů (MMOG massively multiplayer online game). Odehrává se ve sci-fi vesmíru, který obsahuje mnoho hvězd, slunečních soustav, planet i měsíců. Strategie s prvky RPG navíc obsahuje z herního hlediska nepostradatelné simulace. Hráči ovládají základny a lodě, provádí výzkum, těží, bojují, obchodují, vyrábí, prozkoumávají vesmír. Cíl hry může být pro každého hráče jiný.

O MMOG obecně Určeny pro 64 a více hráčů - drtivá většina MMOG navržena pro tisíce až desetitisíce, nejúspěšnější hry hrají miliony. Dva zásadní rozdíly oproti klasickým krabicovým hrám: Nemusí mít a většinou nemívají AI hráče živí hráči soupeří se živými hráči. Potřebují velmi výkonný server - musí postačovat desítkám tisíc registrovaných hráčů a stovkám až tisícovkám online hráčů.

Výkon serveru Data nejsou pro každé použití vyžádána z databáze; server uchovává vhodná data v paměti; přístup k nim zajišťují speciální struktury v konstantním čase. Většina výpočetně náročných operací probíhá paralelně. Méně náročné operace jsou sériové kvůli ušetření implementačního času. Hra není řízena spojitou simulací; přepočítávání herních dějů jen při změně stavu - čas změny se spočítá předem. Kladli jsme důraz na efektivní kód - implementace v C++.

Architektura serveru Engine serveru řízen požadavky online klientů a událostmi na časové ose. Požadavky hráčů jsou přijímány po síti. Události na časovou osu si ukládá server sám; jedná se o kroky simulace s jednotlivými objekty. Data se v enginu nezískávají přímo SQL dotazy - databáze schovaná za cachelisty - data drží v sobě nebo je načtou z DB. Pro server je to nerozlišitelné.

Cache listy Třídy zajišťující přístup k datům - přijímají ID a vrátí objekt. Objekty mohou být uloženy v paměti (listy na ně mají ukazatele), nebo v databázi. Listy načtou data z databáze do paměti a nechají si ukazatel. Zapouzdřují databázi a odstiňují engine od toho, kde a jak jsou data uložena. Umožňují případně snadno přejít na jinou databázi. Implementace listů umožňuje přístup v konstantním čase, jsou-li data v paměti (jinak záleží na databázi). Každý typ dat má vlastní cachelist (základny, lodě, hráči, předměty,.).

Koherence cache listů Existuje mnoho způsobů nastavení pro čtení i zápis. Čtení: veškerá data jsou stále v paměti (a v databázi) žádná data v paměti nejsou (vše je pouze v databázi) data jsou v paměti od prvního použití (a zůstávají tam) při nedostatku paměti jsou uvolněna nepoužívaná data při nalogování hráče se načtou jeho objekty (lodě,.) Zápis: jednou za čas se do databáze zapíší všechna data jednou za čas se zapíší pouze změněná data při každé změně jsou data ihned propsána do databáze data se nezapisují (např. hvězdná mapa je konstantní)

Časová osa Mnoho dějů ve hře probíhá v čase - je třeba simulací. Např.: pohyby lodí, těžba surovin, oprava poškozených předmětů, výroba předmětů,. Spojitá simulace by příliš zatěžovala server. Server pro každý děj spočítá čas příští změny. Následně do časové osy zanese událost zkontroluj děj. Události na ose vždy typu zkontroluj, zda nemá být něco uděláno. Tedy nikdy ne typu udělej něco.

Problémy s událostmi V některých případech velmi obtížné spočítat čas následující změny. Závisí-li na sobě cyklicky několik jevů, je těžké s nimi počítat a stanovit čas příští změny. Př.: Androidi opravují rozvod energie, nicméně pro svou činnost sami energii potřebují (a čím opravenější rozvod je, tím více androidů jej může opravovat). Pohyby lodí ve vesmíru jsou ovlivněny mnoha různými faktory (gravitačními poli, stavem motorů,.). Kvůli složitosti fyziky jako takové je počítání časů změn dějů obtížné. Například hledání vhodného kořenu polynomu osmého stupně, vektorové a maticové výpočty a tak dále.

Paralelismus Architektura serveru umožňuje, aby jedna instance aplikace umožňovala běh více herních světů nad více různými databázemi. V případě více procesorů a/nebo jader jsou tyto světy plně paralelní. V rámci jednoho světa je paralelismus jen částečný. Výpočetně náročné operace probírají paralelně (tvorba zpráv, operace s textem,.) Aritmetické výpočty paralelizované nejsou. Je to implementačně snazší. Výkon to moc neovlivní (jedná se cca o 5% výpočetního času).

Architektura klienta Klient slouží čistě k zobrazování toho, co mu server pošle, nemá sám ničemu rozumět, nic ověřovat, nic počítat. Klientskou část aplikace lze rozdělit na: GUI okna a dialogy, slouží k zobrazování a nastavování techničtějších dat hry, naprogramovaný v Qt. Render hvězdná mapa obsahující modely různých vesmírných objektů i hráčských lodí a základen. Tato část přesahuje rámec původní specifikace, podle které mělo jít jen o symbolické zobrazení, ne OpenGL modely. Komunikace zvláštní vlákno určené pro komunikaci se serverem.

Problémy s hvězdnou mapou Implementace hvězdné mapy klienta byla z několika důvodů velmi náročná. Herní vesmír je obrovský; čtverec se stranami o délce cca 2000 světelných let (2 54 km), pozice všech objektů jsou uloženy s přesností nejhůře na 0,5 km. Knihovní typy OpenGL mají přesnost mnohem menší - vyřešeno zavedením lokálního souřadného systému. Velikosti a vzdálenosti v rámci herního vesmíru jsou realistické, což je pro zobrazování velmi nevhodné. Řešení problému: Obrovský (exponenciální) zoom. Možnost zvýrazňovat vesmírné objekty a lodě bez ohledu na měřítko (zvětšením na nějakou konstantní velikost).

Problémy s modely Modely, které jsou volně ke stažení, typicky nemají osekané verze s menším počtem polygonů. Což neumožňuje škálovatelnost grafických detailů. Vyřešeno používáním modelů, které rovnou obsahují relativně málo polygonů. Většina z modelů hvězdných lodí, které lze bezplatně legálně použít, není otexturována. Výsledkem je, že máme celkem málo (šest) tříd lodí. Pro přidání dalších modelů není ani třeba modifikovat kód serveru (stačí pozměnit číselníkové tabulky v db). Definitivně by problém řešil profesionální modelář

Parametrizace hry Na rozdíl od krabicových her, které si hráči koupí, zahrají a odloží, jsou online hry úspěšné a dobré jen tehdy, když u nich hráči zůstávají. Žádná hráčská základna nezůstane moc dlouho u hry, která se nevyvíjí (mnohokrát empiricky ověřeno). Online hry je nutno tvořit snadno modifikovatelné. Hru samotnou lze do značné míry parametrizovat jen změnami číselníkových tabulek databáze. Ještě větších změn lze dosáhnout modifikací konstant. Objektový model je lehce rozšiřitelný o nové předměty. Engine je navržen dokonce tak, že by jej šlo relativně snadno přepsat na úplně jinou hru podobného typu.

Ladící prostředky Koncepce hry předpokládá dlouhodobé hraní (plný rozvoj hráče trvá dlouhé měsíce, možná krátké roky). Tolik času pochopitelně při testování není. Herní čas běží defaultně 30x rychleji než reálný, je však možné ho ještě urychlit (změnou konstanty). Přílišné urychlení ale neřeší vše - čas ve hře sice uplyne, ale hráč nestihne vykonat tolik akcí, kolik se předpokládá. Hra umožňuje založení nových hráčů, kteří už mají rozvinutou vědu, bohaté vybavení, mnoho lodí i základen. To lze dělat pohodlně přes administrátorské rozhraní.

Technické detaily Programovací jazyk serveru Programovací jazyk klienta C++ C++ Programovací jazyk administrátorského rozhraní C# Řádek kódu 127 181 Vývojové prostředí Visual Studio 2010 Platforma Databáze Síťová komunikace MS Windows Firebird TCP sockety

DĚKUJEME ZA POZORNOST Rádi zodpovíme vaše dotazy?