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

Server design og klientoppdatering




Det eneste vi har disuktert om serveren er et forlag til objekter som
forhandler om hvilke grensesnitt de har tilgjenglig. Skal nå presentere en
mulig løsning for hvordan serveren skal kunne oppdatere klient verdnene.

Denne modellen går ut fra at klienen har en kopi av den fysiske
oppbygginen av objekter for den delen av verdnen som er synlig fra
klienten. På serveren vil det være naturlig å ha et form for manager
objekt som hånterer den enkelte klient. Denne manageren registrerer
intresse i de objekter som skal være synlig for klienten. Så når et objekt
oppdaterer sin status så går den også gjennom lista over manager obekter
som har registert intresse i objektet og sender denne
oppdateringsinformasjonen ditt slik at manageren kan oppdatere klienten.

Dette medfører at objektene på serveren må ha en form for to lags
oppdeling. Der den undre delen lagrer den fysiske(Visuelle) statusen til
objektet og den øvre delen lagrer den logiske/abstrakte statusen til
objektet. Grensesnitte mellom disse to lagene må være klart definert slik
at det er enkelt å legge funksjonaliteten for å oppdatere klienetne i 
overgangen. 

Grensesnittet til det fysiske laget tenkte jeg kunne inneholde funksjoner
for å sette posisjon, rettning, hastighet, akselerasjon, animasjoner, osv.

Det fysiske laget er også ansvarlig for å gjøre simuleringen som er
nødvendig når objektet har fått besked om å bevege seg. Dette laget vil
også varsle den logiske delen om det f.eks har oppstått en kollisjon.

Med faste intervall vil manager objektet sende over sync informasjon til
klienten slik at en er sikker på at klienten og serveren har samme
oppfattning av verdenen.


Det vil sikkert også være aktuelt på serveren å ha en oversikt over hvilke
objekter som må simuleres slik at en ikke trenger å kalle opp en funksjon
i alle objektene ved vært tidsinterval.


Et lite eksempel for å klargjøre det jeg har beskrevet.

En båt skal starte å seile. Det logiske laget mottar meldingen om at ankre
skal heves, som gir det fysiske laget besked om å starte animasjonen for å
heve ankre. Den fysiske delen oppdaterer så alle klientene som lytter på
denne delen av verdnen med denne informasjonen. Etter en stund får den
logiske delen besked fra den fysiske om at ankre er løsnet og gir den
fysiske besked om at båten skal begynne å akselere opp til en gitt
hastighet. Denne informasjonen blir så nok en gang gitt alle lyttende
klienter. Når aktuelle hastighet er gitt så kan f.eks serveren gi en sync
melding til alle klientene om hastighet og posisjon ved et tidspunkt slik
at en er sikker på at klienten og serveren har samme syn på verdenen.


Er det noen som har et bedre navn på disse to lagene en fysisk/visuellt
lag og logisk/abstrakt lag?

Er det andre oppdelinger som kan være aktuelle? Flere oppdelinger?

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 |
 -----------------------------------------------------------