J'ai les bases des sockets TCP, de la communication UDP, etc., mais je ne trouve pas grand-chose sur la façon de les appliquer à un environnement de jeu en temps réel.
J'ai un clone Pong, avec 4 joueurs, et j'ai besoin de synchroniser les positions des palettes entre les trois clients et le serveur (le serveur est le quatrième joueur). Actuellement, j'utilise UDP pour envoyer des mises à jour en temps réel (mouvements de pagaie), et TCP pour configurer le lobby du jeu, etc.
Est-ce une mauvaise chose de spammer d'énormes quantités de trafic UDP? Dois-je examiner quelque chose comme DCCP pour ses fonctionnalités de congestion? Ou n'est-ce pas vraiment un problème avec un projet à petite échelle comme celui-ci?
Quand les messages de synchronisation doivent-ils être envoyés entre le client / serveur? Actuellement, le serveur envoie des paquets UDP avec l'état actuel du jeu aussi rapidement qu'il peut gérer, et les clients renvoient leur position de palette vers le serveur aussi vite qu'ils le peuvent. Est-ce la meilleure façon de le faire? Y a-t-il une sorte de retard que je devrais ajouter pour que les messages soient envoyés toutes les X millisecondes, ou dois-je envoyer des messages uniquement lorsque des événements se produisent? (par exemple, la vitesse de la palette a changé en raison de l'entrée de l'utilisateur)
Serait-il préférable que les clients communiquent leurs positions de pagaie entre eux?
Je pose ces questions dans le contexte de Pong, mais je suis également intéressé par la manière dont ces problèmes seraient surmontés dans d'autres jeux ou par des solutions généralisées.