J'essaie de créer un jeu en réseau multijoueur. Chaque joueur est représenté par un rectangle sur l'écran. J'utilise OpenGL pour les graphiques et aussi l'entrée de l'utilisateur (les commandes comme MOVE-LEFT, MOVE-RIGHT etc.) seront traitées par lui (ou GLUT ou sumthing).Discussions pour la communication entre pairs
J'ai l'architecture suivante pour le jeu.
Il y a 4 joueurs (nœuds) dans le jeu. Chaque joueur envoie et reçoit des données en utilisant UDP. Chaque joueur peut envoyer des données à n'importe quel autre joueur.
Les données doivent être envoyées par un lecteur s'il y a des entrées de l'utilisateur correspondant. (Par exemple, commande MOVE-LEFT, etc.). Chaque fois qu'un joueur (disons p1) reçoit des données d'un autre joueur (disons p2) (comme la nouvelle position du joueur p2 sur l'écran), l'écran du joueur p1 doit être mis à jour immédiatement.
Je pense aux lignes suivantes: Créer un fil pour le traitement des graphiques. Créez 2 autres threads, 1 chacun pour recevoir et envoyer des données, en utilisant UDP.
Chaque fois que le thread graphique est saisi pour 'myposition' par l'utilisateur, il met à jour la variable globale partagée 'myposition'. Le thread d'envoi réseau, qui attend cette variable, est activé et informe tous les autres joueurs de sa nouvelle position.
De même, chaque fois que des mises à jour de «position» sont reçues d'un autre lecteur «i», le thread de réception réseau met à jour le lecteur de variable globale [i] .position. Le fil graphique va maintenant redessiner la scène avec les positions mises à jour.
Est-ce que cette conception est correcte? Si oui, quelle est cette conception et comment puis-je l'améliorer