Massiv (syst�m pro tvorbu online her)

C�l projektu

V sou�asn� dob� doch�z� spolu s roz�i�ov�n�m internetu k rozvoji tzv. "online her". Jejich spole�n�m znakem je perzistentn� sv�t, ve kter�m se pohybuje v�t�� mno�stv� aktivn� p�ipojen�ch hr���, jejich� po�et m��e j�t ��dov� do tis�c�. Sv�t je simulov�n 24 hodin denn� na jednom nebo v�ce serverech, hr��i se k nim mohou kdykoliv p�ipojit. Po odpojen� hr��e se jeho postava v�t�inou d�n� ve sv�t� ne��astn�, ale zachov�v� si svoje vlastnosti a majetek.

C�lem projektu Massiv je naprogramovat syst�m zalo�en� na architektu�e klient-server, kter� by umo��oval hern�m v�voj���m vytv��et pr�v� takov�to online hry. Syst�m se bude skl�dat z n�kolika komponent. Server�, kter� simuluj� vlastn� hru, staraj� se o spr�vu ��t� hr��� a z�lohuj� hern� data, a klientsk�ho software prezentuj�c�ho stav hry. Sou��st� projektu bude i demonstra�n� online hra.

Architektura syst�mu

Distribuovanost

Hlavn�m probl�mem online her je nutnost plynule simulovat obrovsk� sv�t, po kter�m se voln� pohybuj� tis�ce p�ipojen�ch hr��� a komunikuj� mezi sebou. To p�in�� pocit mnohem v�t�� volnosti a re�lnosti ne� skupina nez�visl�ch ar�n pro p�r lid�. Tak� ale rostou po�adavky na v�kon hardware, a proto je nutno zat�en� rozlo�it mezi n�kolik server�. Ka�d� potom simuluje ur�itou ��st sv�ta a skupinu p�ipojen�ch hr���.

Na rozd�l od standardn�ch implementac� podobn�ch syst�m� nepo��t�me s p�ipojen�m v�ech server� do rychl� lok�ln� s�t�, k takov�mu prost�ed� nejsp� nebudeme m�t nikdy dlouhodob�j�� p��stup. P�edpokl�d�me nasazen� na serverech podobn�ch t�m, na kter�ch se dnes provozuj� neofici�ln� servery pro hry jako je Ultima Online, tedy st�edn� v�konn� stroje rozm�st�n� pom�rn� n�hodn� po sv�t�. Proto p�i vz�jemn� komunikaci mezi servery nelze vylou�it velk� latence. Na druhou stranu v�echny sou�asn� online hry vykazuj� lok�lnost - hr�� vid� a dok�e ovliv�ovat pouze omezenou ��st sv�ta. Proto vhodn� rozdistribuov�n� a zvolen� zp�sobu komunikace zaru�� plynulost hry.

Objektovost

Syst�m je objektov� orientov�n. Ka�d� entita hern�ho sv�ta je reprezentov�na instanc� n�jak�ho objektu. Mimoto obsahuje syst�m dal�� objekty v hern�m sv�t� neviditeln�, kter� spolu interaguj� (datov� struktury, zpr�vy, ...). Objekty jsou jednozna�n� ur�eny sv�m identifik�torem, kter� je glob�ln� mezi v�emi servery. Syst�m zaru�uje p�� vytv��en� objektu unik�tnost jeho identifik�toru. D�le syst�m mus� um�t podle identifik�toru nal�zt (co nejrychleji) server, kde se dan� objekt pr�v� nach�z� - je nutno po��tat s p�id�v�n�m a odeb�r�n�m server� a s p�esunem objekt� mezi servery.

Plocha sv�ta je rozd�lena na p�edem dan� po�et relativn� mal�ch sektor�. Ka�d� server pak spravuje ur�itou podmno�inu, kter� nemus� b�t souvisl�. Ka�d� sektor je spravov�n pr�v� jedn�m serverem. Ten je pak zodpov�dn� za simulaci objekt� pat��c�ch geograficky do dan�ho sektoru. Objekty mohou mezi servery migrovat, co� je ��zeno zm�nou jejich polohy ve sv�t�. Vlastnictv� sektor� servery se t� m��e m�nit. Syst�m bude umo��ovat automatickou zm�nu vlastnictv� sektor� podle z�t�e komunika�n�ch cest mezi servery, alespo� formou rady administr�torsk�m postav�m.

Objekty mezi sebou komunikuj� pomoc� asynchronn�ch zpr�v. Vlastn� zpr�va je speci�ln� objekt, kter� je p�ed�v�n na c�lov� server (je ur�en na z�klad� identifik�toru adres�ta) stejn�mi mechanismy jako p�i migraci objekt�.

V RPG (Role-Playing) hr�ch (a nejenom v nich) je velmi �ast� situace, kdy jeden objekt pot�ebuje ��st data jin�ho objektu, ale nepot�ebuje je modifikovat. Klasick�m p��kladem je um�l� inteligence po��ta�em ��zen�ch postav, kter� pro volbu sv�ho chov�n� v�t�inou zjist� stav sv�ho okol� (�ten�m stavu okoln�ch objekt�) a podle zji�t�n� informace p�ejdou do jin�ho vnit�n�ho stavu. Pro urychlen� operac� jako je �ten� atribut� vzd�len�ch objekt� (tj. t�ch, kter� vlastn� jin� server), se pou��v� replikace. Server si u sebe udr�uje kopii vzd�len�ho objektu (tzv. repliku), vzd�len� �ten� je pak nahrazeno �ten�m hodnot lok�ln� kopie, kter� se pr�b�n� aktualizuj�. V�dy se v�ak kop�ruj� jen zm�n�n� atributy. Syst�m p�est�v� repliku aktualizovat, pokud nebyly po ur�itou dobu zaznamen�ny ��dn� po�adavky na �ten� jej�ch dat. Pokud jsou sousedn� sektory vlastn�n� r�zn�mi servery, zajist� syst�m v nutn�ch p��padech replikace mezi sousedy, nap�. kdy� objekt pobl� hranice zji��uje, co "vid�" ve sv�m okol�.

Hern� objekty obsahuj� atributy, kter� budou implementovan� jako speci�ln� C++ objekty, u kter�ch si server pamatuje �as posledn�ho z�pisu. Pro ka�d� objekt bude existovat popis jeho vnit�n� struktury, d�ky kter�mu bude syst�m schopen automaticky prov�d�t jejich replikace a p�ed�v�n� na jin� servery. Bude tak� p�esn� v�d�t, kter� atributy replikovat, ��m� se sn�� objem p�en�en�ch dat.

Dal�� funkce server�, z�lohov�n�

Krom� simula�n�ch server� bude syst�m obsahovat n�kolik dal��ch typ� server�, kter� budou prov�d�t:

P�i v�padku libovoln�ho serveru by se zbytek m�l sna�it pokra�ovat v simulaci, tedy nap�. p�ed�v�n� objekt� m��e selhat a syst�m s t�m mus� po��tat. Ka�d� objekt mus� b�t v�dy v alespo� jedn� "lok�ln�" z�loze, kterou si servery vytv��ej� pr�b�n� a nez�visle na sob�. Simula�n� server by se m�l sna�it o zotaven� bez ovliv�ov�n� zbytku sv�ta (zotaven� z lok�ln� z�lohy), co� samoz�ejm� m��e v�st k nekonzistenc�m ve sv�t�, kter� ale u m�n� d�le�it�ch objekt� nemus� ve hr�ch vadit. To b�n� u takov�chto her kontroluj� hr��i s vy���mi pr�vy (administr�to�i, game maste�i). V p��pad� fat�ln� chyby lze obnovit sv�t z glob�ln� z�lohy (kter� se ale neprov�d� tak �asto jako lok�ln�). D�le�it� objekty, jako jsou postavy, se z�lohuj� zvl᚝ a �ast�ji.

Klient

Klient komunikuje v�dy s jedin�m simula�n�m serverem. Servery si klienty mezi sebou p�ed�vaj� podobn�mi mechanismy jako norm�ln� objekty. Klient je pro simula�n� server jen dal��m c�lem replikac�, kdy se replikuje aktu�ln� oblast viditelnosti a sly�itelnosti. Ud�losti od klienta k serveru se �e�� standardn�m zas�l�n�m zpr�v. Prezentace sv�ta a u�ivatelsk� rozhran� je z�visl� na vlastn� logice hry.

Demonstra�n� hra

Sou��st� projektu bude i demonstra�n� hra ve stylu RPG. S n� �zce souvis� konkr�tn� implementace ��st� serveru a klienta, p�i�em� n�kter� by m�ly b�t v�ce p�enositeln� do jin�ch her (syst�mov� ��sti), jin� m�n� (reprezentace sv�ta, prezenta�n� ��st klienta) a n�kter� skoro v�bec (logika hry).

Server

Ve h�e budou implementov�ny z�kladn� interakce se sv�tem, jako jsou kolize objekt�, bran� a pokl�d�n� p�edm�t� a komunikace mezi postavami. Hern� syst�m bude umo��ovat roz�i�ov�n� sv�ta za b�hu. Jedn� se o roz�i�ov�n� mapy, zm�ny ji� hotov�ch ��st�, p�id�v�n� a �pravy vlastnost� objekt� (zmutovan� obchodn�k prod�vaj�c� d��ve nev�dan� zbo��, apod.). Nebudou chyb�t jednoduch� hern� pravidla ve stylu RPG (vlastnosti postav, vylep�ov�n�, vybavov�n�).

Klient

Jednoduch� grafick� klient by m�l umo��ovat 3D zobrazen� prost�ed�, objekt� a postav pomoc� OpenGL. Bude umo��ovat dynamick� download grafiky a podobn�ch dat na pozad� b�hem hry, tak�e hr��i s dostate�n� kvalitn�m p�ipojen�m sta�� ke h�e pouze spustiteln� soubory. Pro sn�en� negativn�ho vlivu latenc� na pomalej��ch link�ch bude klient prov�d�t predikci (extrapolaci) pohybu viditeln�ch objekt�.

Sv�t

Vlastn� sv�t (mapa, grafika, ...) pravd�podobn� nebude nijak rozs�hl�. Bude demonstrovat mo�nosti syst�mu a m�l by slou�it jako z�klad pro tvorbu n�koho jin�ho.

Podporovan� platformy

Server bude vytvo�en prim�rn� pro Linux a Windows NT (2000, XP), klient pro Windows a Linux.

Lidsk� zdroje

Vedouc� projektu: Petr T�ma (petr.tuma@mff.cuni.cz)

�e�itel�: