[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Ainulindale-devel] Network Level
From: |
Andrea Negro |
Subject: |
[Ainulindale-devel] Network Level |
Date: |
Sun Apr 14 09:54:02 2002 |
User-agent: |
Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.9) Gecko/20020311 |
Dunque, visto che e' un gioco in rete, qualche sega mentale sul network
layer mi sembra che ci stiano bene!!
Il sistema stile mud mi sembra poco adatto e un po' obsoleto (tcp
unicast, intendo).
Ci sono alcune categorie di dati che devono girare in rete, e vorrei che
riuscissimo a formalizzare alcune categorie, e poi stabilire il tipo di
connessione adatto per ciascuna categoria. Per spararle, e fare qualche
esempio di quello che intendo:
- Informazioni generate dal server sulla situazione del mondo, ad
esempio lo spostamento da x a y di un certo mob (troviamo un altro
termine per mob?), le vedo bene in multicast/udp (tanto per far capire).
- Ci saranno certamente alcune informazioni che devono essere scambiate
tra client e server e che devono essere transazioni sicure, ad esempio
se poso un oggetto, il server deve saperlo assolutamente, o se tolgo
l'armatura: eventi atomici che non possono essere persi, li vedo su una
unicast client/server su tcp.
- Dal momento che ci sara' molta interazione tra i client, potrebbe
essere interessante sfruttare una o piu' reti peer2peer, per alleggerire
il traffico verso il server. Ad esempio, se io dico 'ciao' ad una
persona che sta davanti a me, non e' necessario che il server lo venga a
sapere, perlomeno non immediatamente. Mi vengono in mente due cose:
+ Prima cosa, che tutto cio' che il server non necessita di sapere,
potrebbe venirlo a sapere in un secondo momento: si puo' usare una
specie di buffer nel client in cui mettere eventi secondari da mandare
al server, e poi mandarli quando un monitoraggio del carico di rete
comunica che c'e' banda libera per l'invio. Eventualmente, su questi
pacchetti di dati si puo' operare una compressione potente: visto che
non sono urgenti, il server puo' anche tenerseli compressi finche' non
ha nulla da fare e scomprimerli quando non ha nulla da fare (o
eventualmente archiviarli compressi, dipende dal tipo di dato).
+ Seconda cosa, si potrebbe pensare ad una gestione raffinata delle
connessioni p2p. Del tipo: se io faccio gruppo con altre 5 persone,
potremmo pensare di essere messi in un p2pG (peer-to-peer-group), e
tutte le comunicazioni "gtell" vengono fatte su questo p2pG
(eventualmente, il client capogruppo invia bufferizzando secondo il
punto precedente il log delle conversazioni al server, in modo da
evitare duplicati verso il server. Credo inoltre che un traffico del
gerene sia molto piu' efficiente che se tutti i client sparassero
pacchettini con dentro 'ciao', 'vado' verso il server). Un eventuale Imp
che volesse 'snoopare' non fa altro che inserirsi nel p2pG: trasparente
e elegante, secondo me. E' il primo esempio che mi viene in mente, ma
potremmo pensare che il sistema centrale preveda un tot di situazioni in
cui si puo' formare un p2pG (ad esempio, tutte le persone in una stanza,
o su base geografica, o tutti i combattenti di una battaglia), e tenga
traccia dei p2pG attivi, e li gestisca dinamicamente.
Che ne pensate? Che sparate voi? :)
--
Kind Regards,
Andrea Negro
IBM Linux Team
-------------------------
Mobile: +39 347 4008768
Office: +39 02 59620441
Work Email: address@hidden
Home Email: address@hidden
Icq: Nepher, 25458773