|
From: Bernardo I. <be...@de...> - 2002-05-26 18:25:50
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Saturday 25 May 2002 13:19, Lorenzo Stacchini wrote: > Secondo me potremmo cercare di ridurre al minimo i movimenti casuali, > sostituendo la generazione delle direzioni degli asteroids con degli > algoritmi più o meno complessi ma di generazione univoca a partire dal > contesto. Questo potrebbe permetterci di calcolare lato client le > divizioni degli asteroidz, a questo punto potremmo permetterci di > inviare addirittura un pacchetto tcp di conferma. Si', hai ragione... Tra l'altro lo spezzamento casuale e' proprio brutto. Potremmo usare le velocita' relative o la posizione tra lo sparo e l'asteroide al momento della collisione per calcolare le traiettorie dei due pezzi... verrebbe molto piu' realistico. > Generalizzando un po' questo criterio petrebbe andar bene un po' per > tutto, anche per esempio nei bonus, dove ci sarebbe comunque la > necessita' di dare l'impressione della casualità. Beh, comunque vi ricordo che la rand() e' deterministica: se non settiamo un seme casuale all'inizio (e non non lo facciamo), la sequenza di numeri che genera e' sempre la stessa! Purtroppo per il network game questo non basta: macchine diverse possono avere versioni diverse della rand() che non generano gli stessi numeri. Dobbiamo fare un generatore di numeri casuali nostro... > In più ho un'altra idea che mentre scrivevo mi ha frullato in tezta: > zi potrebbe pensare ad un sistema client che cerca di calcolare il più > possibile da solo gli eventi, memorizzando di volta in volta a tempi > fissati le posizioni (magari dentro le move()) su una variabile > struttura 'globale' dentro game (o dove decideremo, non ha > importanza). Ogni tanto il server manderà dei pacchetti di > sincronizzazzione tcp in broadcasting, i client controlleranno poi se > i loro parametri sono corretti. > Ancora non ho assolutamente pensato alla fattibilità dal punto di > vizta dell'efficenza, inoltre potremmo rischiare che i pacchetti tcp > arrivino talmente in ritardo da complicarci troppo la vita. > Comunque questo sistema mi sembra implementabile per lo meno in parte > usandolo ad intervalli relativamente lunghi. Penso che sia il modo giusto di procedere. Quake 3 fa in questo modo: tu vedi tutto che si muove come dovrebbe, ma ogni tanto il server invia la vera posizione degli oggetti e, se e' molto discorde da quello che avevi previsto tu, vedi la roba che riappare e gli omini che tornano dove erano prima ;-) E' brutto, ok, ma succede di rado ed e' molto meglio cosi' che aspettare tutto il tempo prima di veder spostare qualcosa. - -- // Bernardo Innocenti - Develer S.r.l., R&D dept. \X/ http://www.develer.com/ -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE88Sj1ltU4TfxqZsoRAmSrAJwIbXdRgehSpPbJ7vncEbCTXiRZcgCgijlM VKMMmchfEa6M9Y6nhaes5QE= =2TSx -----END PGP SIGNATURE----- |