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

Re: Signaler...



On Tue, 24 Nov 1998, Werner Lindgard wrote:

> 
> > Hvert rektangel kan deles opp i to rektangel dersom det er hensiktsmessig.
> > "Hensiktsmessig" kan bety at det er "for mange" objekter i rektangelet til
> > at serveren kan arbeide effektivt, at det blir mye ekstraarbeid naar
> > kjernen skal koble sammen objekter som skal gjoere interaksjon etc.  Ett
> > underrektangel kan igjen deles opp i nye rektangler osv., og slik kan en
> > fortsette opp til en eller annne minste granularitet.
> Dette er jeg ogsaa enig i. Det er i disse baner jeg selv har tenkt ogsaa.
> 
> ( Scenario om Magikere og signaler som sendes.... )
> 
> > Systemet kommuniserer saa denne kunnskapen til klienten iht. en passende
> > protokoll. Klienten faar vite at "Mads opplever formelkasting av foelgende
> > natur", kanskje vet han hvem kasteren er, kanskje bare en retning, kanskje
> > hvilken formel det er eller bare type formel, og muligens er noe av eller
> > all denne informasjonen gal.
> Igjen er dette noen jeg mener er klientens beregningsoppgave. Hvorfor skal
> serveren utfoere beregninger for hver enkelt karakter/klient i et bestemt
> omraade.

Dersom en skal ha objekter som virkelig snakker sammen saa vil det
vel kreve fryktelig mye nettbruk dersom alle klienter skal vaere saa
uavhengige som du skisserer ? I hvert fall dersom en skal gjoere systemet
virkelig fleksibelt med tanke paa kodesnutter som samhandler ?

> Er det ikke da bedre at naar magikeren gjoer noe, saa sendes det
> info om hva denne gjoer til serveren, som raskt bare sender dette "magi
> paa gang" signalet til de objektene som er i omraadet. Hvordan hver enkelt
> karakter/ klient reagerer burde bergenes av klienten selv, avhenig av de
> parametre som er nevnt. 

En god grunn er juks. Du kan lett spesialskrive en klient som alltid gir
deg beskjed om at det kastes spells selv om din spiller rent tematisk ikke
skal vaere i stand til aa oppdage det.

> Grunnen til at dette boer gjoeres av klienten
> selv, er at denne vet ogsaa hvilke stats en selv har, og dette er noe
> serveren i bunn og grunn ikke trenger aa holde oversikt over. Tenker da
> litt i retning av overfloedig lagring. Dersom en server OG klient til
> enhver tid skal ha oversikt over alle mulig parameter ( spesielt server ),
> mener jeg denne kommer til aa faa et unoedig stort forbruk av baade CPU og
> bytes paa lagringsmediet. 

Dette er vel kun gyldig dersom du har som utgangspunkt at klienten skal
vaere herre over stats. Dersom den er det kan den fortelle serveren at
spilleren har naer sagt hvilke stats som helst og forlange aa bli trodd.
Dersom klienten ikke tar seg av kamp etc. har den kun bruk for aa vite
stats for aa vise dem paa skjermen. All annen bruk av stats foregaar hos
serveren. I saa fall har ikke klienten bruk for aa lagre stats heller. Det
samme gjelder for naer sagt alle andre parametre. Dersom de kun finnes hos
server blir det ingen dobbelt lagring. Det er kort og godt stikk motsatt
utgangspunkt.

Erfaringene med Diablo paa nett tilsier at spillere mer enn gjerne trikser
med hva som helst. Dette oedelegger spillet for alle andre som ikke liker
at supermenn med 100000000 hitpoints loeper rundt og slakter dem og meier
ned alle monstre i sikte. Etter min mening er det viktig aa ikke gjoere
den feilen enda en gang. I vaart system vil vel til og med kildekoden
ligge der slik at folk kan kompilere sine egne spesialklienter uten at vi
kan hindre dem. (Jeg haaper i det minste det er meningen aa frigi denne
koden under GNU lisens eller noe i den gata.)

> 
> > Jeg synes dette er et godt eksempel paa hvordan signal/slot-mekanismer kan
> > brukes hensiktsmessig, uten at det trengs aa hardkodes saa mye. Tanken er
> > at objekter forteller omverdenen hva de gjoer og litt om hvilken del av
> > omverdenen (spesielt geografisk) som har noen sjanse til aa lese signalet.
> > De sier hva de _faktisk_ gjoer (internt paa serveren), og saa er det opp
> > til de som mottar signalet (paa serveren) aa velge hvordan dette paavirker
> > klienten, der all informasjon som trengs for aa finne ut av dette er
> > levert med signalet (om ikke annet, hvertfall hvilket objekt en skal
> > spoerre for aa finne ut av det, f.eks. signalets kilde). Et resultat av
> > dette kan vaere at objektet paa et eller annet vis endrer seg og/eller at
> > det sendes informasjon til klienten (som ikke ser den interne sendingen av
> > signaler paa serversiden).
> 
> Vel, etter som jeg skjoenner her saa tror jeg faktisk vi ser paa
> representasjon av verden litt forskjellig. Jeg tror det er paa sin plass
> aa forklare litt hvordan jeg ser systemet. 
> Alle objekter om verden og HVOR folk er plassert ligger hos en og annen
> server. Klienten selv inneholder ogsaa en del data, spesielt om den
> enkelte klients karakter/ avatar. Jeg ser det for meg at server bare
> inneholder en slags referanse til hver klient/karakter. For meg er disse
> stort sett den samme. Det er ogsaa derfor jeg mener at mest mulig
> beregninger boer legges til klienten !
> 

Dersom alle var snille og greie ville jeg trolig vaert enig med deg i at
den modellen var best. Det er en fristende tanke aa ha et enormt nett av
bokser som alle jobber sammen. Det ville dog kreve masser av nettbruk om
en skulle implementere kommunikasjon mellom objektene rundt forbi i de
tusen klienter, saa en mister vel en del fleksibilitet den veien.

Sikkerhetsmessig er jeg rett og slett fryktelig redd for at et system der
stats og kamp tas haand om av klienten vil foere til saa mye juks at
spillet ikke lenger blir noe morsomt aa spille. Erfaringene fra Diablo var
bare saa dystert entydige. Det blir omtrent som aa spille doom i
udoedelighetsmodus. Selv om en er som Anders og gjerne vil spille fair
saa hjelper det ikke naar alle rundt deg har editerte stats. Jeg er
fryktelig interessert i eventuelle betraktninger rundt hvordan vi kan
loese dette problemet uten aa sentralisere alle beregninger som ikke er
rent knyttet til visualisering.

Sigmund.