Bonjour,
Je me suis lancé dans la réalisation d'un Air Hockey en réseau en langage C# + winform.
Actuellement j'ai tout mon système de lobby qui est opérationnel. C'est à dire que les joueurs se connectent en TCP à un "serveur central", créent des salles, bavardent et quand tous les joueurs d'une salle sont prêts la partie peut se lancer.
A partir de là, les joueurs se connectent automatiquement en UDP chez le joueur ayant créé la salle d'attente. Il peut y avoir de 2 à 6 joueurs.
Et du coup je bloque un peu quant au fait que j'ai un client qui est également serveur. Est-ce que je lance le serveur et le client sur des threads séparés ou bien il y a moyen de se débrouiller dans la boucle de jeu pour faire quelque chose dans le genre :
En gros j'ai du mal à voir l'architecture de la chose, combien de threads je devrais faire (pour les clients : un thread d'écoute/écriture, deux threads distincts, seulement le thread principal...), si je dois essayer de fusionner au maximum le client/serveur ou au contraire faire en sorte que l'hébergeur soit un client comme un autre. Bref j'aimerais beaucoup avoir des retours d'expérience, des conseils/suggestions.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if(IsServer) { //Server stuff }
Ci-dessous les activités que je pense nécessaire pour mon client/serveur :
Boucle de jeu serveur :
Boucle de jeu client :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Server loop repeat { Reçoit input des joueurs applique la logique du jeu et met à jour l'état du jeu envoie les modifications aux joueurs }
Je vais logiquement devoir m'attaquer au dead reckoning et à de la prédiction également, mais ce n'est pas ma priorité pour le moment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Client loop repeat { reçoit les inputs du client et du serveur On applique la logique du jeu pour mettre l'état du jeu à jour Envoie de la mise à jour au serveur output sons + graphismes }
J'espère avoir réussi à m'expliquer à peu près clairement.
Bonnes fêtes à tous et merci d'avance pour vos réponses
Partager