C'est une question que je vois beaucoup. La plupart des gens disent que UDP est toujours meilleur pour les jeux en temps réel que TCP. Ma compréhension est que TCP essaie de renvoyer des paquets encore et encore jusqu'à ce que l'autre côté les reçoive alors qu'UDP s'en fiche.
La plupart des choses que j'ai lues, c'est que UDP est un must pour tout jeu en temps réel et TCP est terrible. Mais le fait est que la plupart des gens semblent de toute façon implémenter une forme de TCP par-dessus UDP. Et j'ai également entendu que la différence entre les deux est négligeable étant donné que nous ne sommes plus dans les années 80 et que l'Internet est maintenant assez rapide et fiable.
Ma compréhension générale ici est-elle fausse? Quelqu'un peut-il clarifier cela pour moi?
t0
qui n'est jamais reçu, alors vous envoyez le nouvel état mondial à un moment donné t1
, vous n'avez pas à attendre que le client reçoive réellement le premier paquet, qui est déjà obsolète.
internet is now pretty fast and reliable
Non ce n'est pas. La bande passante a considérablement augmenté, oui, mais la latence est encore assez élevée. Avec le TCP pur, le temps de tick du serveur doit être supérieur à la latence maximale abordable, sauf si vous effectuez l'écrêtage des paquets - ce qui est préférable pour le client via UDP. Le problème est que certaines informations dans un jeu doivent être fiables, tandis que d'autres doivent être rapides. Des protocoles personnalisés en plus de UDP permettent cela, ainsi qu'un tas de propriétaires qui vous donnent tout ce dont vous avez besoin dans un joli package.