[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

pvvmudSrv, WorldSrv and GOS




Nå har jeg vært i tenkeboksen et par dager og gjort en liten design på det
vi diskuterte på møte rundt serveren og gos. Hvordan en kan teke seg å
fordele en del oppgaver ved å lage en ny server som var
ansvarlig for å oppdatere klienten med statusinformasjon om verdenen slik
at dette ikke blir en belastning for serveren.

Har lagt med xfig og ps utgaver av fire figurer:
1. Serverconfig
2. erd_pvvmudsrv
3. erd_worldsrv
4. erd_gos
(Burde så klart vært en erd for pvvmud (clienten ) også, men det får komme
senere)

Serverconfig
=====================================

Systemet er delt opp i 4 deler som har forskellige oppgaver. Dette er
vist i figuren serverconfig som også viser hoveddataflyt mellom disse
enhetene. 

Pvvmud
------

Pvvmud (clienten) har som før kun oppgaven med å vise grafikk og ta i mot
input fra spilleren. Input blir sendt til pvvmudsrv for videre behandling.
Når clienten kobler seg opp mot servern vil den få beskjed om hvor den kan
finne worldsrv og gos for så å koble seg opp mot disse. (På denne måten
blir det ikke no problem å spille fra clienter som sitter bak routere som
maskerer den virklige identiteten til client maskinen.)

GOS
---

GOS (Geometry object server) er en server som bare har til oppgave å
levere geometrien til objektene i spillet når en client spør etter dem.
Med geometri menes i første fase statiske polygon beskrivelser, materialer
og teksturer.


WorldSrv
--------

WorldSrv er en ny server som har til oppgave å holde rede på
status til
alle fysiske objekter og oppdatere alle clientene når statusen forandrer
seg. En kan tenke seg at en kan opprette flere World servere slik at
clienten kan kontakte den nærmeste / den med lavest load.

PvvmudSrv
---------

PvvmudSrv er hoved hjernen i systemet og styrer den logiske delen av
spillet. Det er også denne serveren clienten kontakter førts og som
hånterer alle kommandor som en spiller gir. 

På figuren erd_pvvmudsrv er det vist hvor SrvUpdates skal genereres. Den
delen som er merket WorldSrv kan være en intern del av pvvmudsrv
og en eller flere eksterne servere. I starten tenkte jeg at vi skulle være
fornøyde når vi får eksterne WorldServerene til å oppdatere clientene med
statusinformasjon. Den interne serveren vil da bli brukt til å utføre
kollisjonstester og være en master for å bygge opp nye worldservere. En
kan tenke seg at hvis kollisjonstestene blir for tunnge for pvvmudsrv så
kan dette distribueres til eksterne World servere.

Synkronisering
==============

Det som enda ikke er helt klart er hvordan en skal synkronisere innholde
av de forskjellige worldserverne. Alt går greit så lenge det bare er info
av typen updatePosition og updateDirection som distribueres, men når vi 
begynner med animasjoner så får jeg en dårlig følelse av at det kan føre 
til drifting (objekter som etter hvert får ganske forskellig status).
Ser to hoved problem. 1. Hvordan få alle serverene til å gå like fort.
2. Hvordan få animasjoner til å start og slutte til samme tid.

Anders

 -----------------------------------------------------------
|    ******  Anders Reggestad                               |
|  *   *   *  Norges teknisk-naturvitenskapelige universitet|
| *    *   *  E-Mail  : andersr@pvv.ntnu.no                 |
| *********  Post adresse  : Studpost. 159 7034 Trondheim   |
| *    *   *  Hybel adresse : Rainheimliv. 21A 7053 Ranheim |
| *    *    *  Hjemmeside : http://www.pvv.ntnu.no/~andersr |
 -----------------------------------------------------------

Figures