Questa è una domanda che vedo molto. Molte persone dicono che UDP è sempre meglio per i giochi in tempo reale rispetto a TCP. La mia comprensione è che TCP tenta di rinviare i pacchetti più e più volte fino a quando l'altra parte li ottiene, mentre a UDP non importa.
La maggior parte delle cose che ho letto è che UDP è un must per qualsiasi gioco in tempo reale e TCP è terribile. Ma il fatto è che la maggior parte delle persone sembra implementare comunque una qualche forma di TCP su UDP. E ho anche sentito che la differenza tra i due è trascurabile dato che non siamo più negli anni '80 e che Internet è ora abbastanza veloce e affidabile.
La mia comprensione generale qui è sbagliata? Qualcuno può chiarire questo per me?
t0
che non viene mai ricevuto, quindi invii il nuovo stato del mondo in quel momento t1
, non devi aspettare che il client riceva effettivamente il primo pacchetto, che è già obsoleto.
internet is now pretty fast and reliable
No non lo è. La larghezza di banda è aumentata notevolmente, sì, ma la latenza è ancora piuttosto elevata. Con TCP puro, è necessario che il tempo di tick del server sia superiore alla massima latenza economica, a meno che non si esegua lo compressione dei pacchetti, il che è meglio eseguire sul client tramite UDP. Il problema è che alcune informazioni in un gioco devono essere affidabili, mentre altre devono essere veloci. I protocolli personalizzati su UDP lo consentono, così come un mucchio di quelli proprietari che ti danno tutto ciò di cui hai bisogno in un bel pacchetto.