Sto implementando un clone di asteroidi multiplayer per conoscere l'architettura di rete client / server nei giochi. Ho trascorso del tempo a leggere le pubblicazioni di GafferOnGames e Valve sulla loro tecnologia client / server. Ho problemi con due concetti.
Attualmente ho un server di gioco autorevole che simula la fisica con box2d e invia lo stato del mondo ai clienti circa 20 volte al secondo. Ogni client tiene traccia delle ultime istantanee ricevute e scorre tra due stati per rendere più fluido il movimento degli sprite. Tuttavia non è così semplice. Può essere fluido per un po ', quindi a scatti un po', poi di nuovo a smooth, ecc. Ho provato sia TCP che UDP, entrambi sono quasi uguali. Qualche idea di quale potrebbe essere il mio problema? (Nota: l'ho implementato per primo per giocatore singolo e il movimento dello sprite è perfettamente fluido a 60 fps quando aggiorno il mondo della fisica solo 20 volte al secondo).
Al fine di risolvere il primo problema, ho pensato che forse il client dovrebbe eseguire anche una simulazione box2d e aggiornare semplicemente le posizioni dei suoi sprite in modo che corrispondano alle istantanee del server quando non corrispondono. Ho pensato che potesse essere più fluido poiché la mia implementazione single player è fluida. E 'questa una buona idea?
Anche se non risolverà il problema sopra riportato, è necessario per la previsione sul lato client? Ad esempio, se un giocatore tenta di muovere la propria nave, come farà a sapere se ha colpito un asteroide, un muro o una nave nemica senza una simulazione fisica? Sembra che la loro nave sembrerebbe passare attraverso l'oggetto con cui dovrebbe scontrarsi prima di ricevere un'istantanea dal server che dice che hanno colpito l'oggetto.
Grazie!