Un mio amico e io stavamo discutendo su come un server FPS aggiorna i client ad esso connessi. Abbiamo guardato uno video di un ragazzo che tradisce in Battlefield: Bad Company 2 e ho visto come ha evidenziato la posizione dei nemici sullo schermo e ci ha fatto riflettere.Quali sono le strategie generali per il server di un gioco multiplayer FPS per aggiornare i propri client?
La sua tesi era che il server aggiorna solo il client con informazioni che sono immediatamente rilevanti per il cliente. Cioè il server non invierà informazioni sui giocatori nemici se sono troppo lontani dal cliente o fuori dalla linea di vista del cliente per ragioni di efficienza. Tuttavia non era sicuro - ha riportato l'esempio di qualcuno che si nasconde dietro una roccia, non in grado di vedere nessuno. Se il giocatore dovesse improvvisamente comparire dove aveva tre giocatori nella sua linea di vista, ci sarebbe stato un ritardo di 50ms prima che venissero visualizzati sullo schermo mentre il server trasmetteva le informazioni necessarie.
La mia contesa era l'opposto: il server invia al client tutte le informazioni su ogni giocatore e consente al client di risolvere ciò che è consentito e ciò che non lo è. Immaginai che sarebbe stato meno costoso computazionalmente per il server semplicemente inviare tutto al client e lasciare che il client facesse il lavoro pesante, per così dire. Ho anche capito che questo è il modo in cui funzionano i programmi cheat: intercettano i pacchetti del server, ottengono la posizione dei nemici, quindi li mostrano sulla vista del cliente.
Quindi la domanda: quali sono alcune politiche o strategie generali che un server di sparatutto in prima persona moderno impiega per mantenere aggiornati i propri clienti?
Avete risorse online dove posso saperne di più? –
Ho aggiunto alcuni collegamenti alla risposta. Imparo molto leggendo il forum Gamedev.net in particolare. – Kylotan
Risorse eccellenti; in particolare Source Multiplayer Networking. Stavo per rispondere con quello. +1 – Leftium