Précédent   Forum du club des développeurs et IT Pro > Applications > Développement 2D, 3D et Jeux > Réseau et multijoueurs
Réseau et multijoueurs Forum d'entraide pour le réseau et le multijoueur pour les jeux vidéo
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 06/05/2010, 12h38   #1
odsen.s
Membre confirmé
 
Avatar de odsen.s
 
Benoît
Étudiant
Inscription : octobre 2006
Messages : 269
Détails du profil
Informations personnelles :
Nom : Benoît
Âge : 23
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2006
Messages : 269
Points : 222
Points : 222
Par défaut jeu réseau 2 joueurs : client/serveur ?

Bonjour à tous,

Je travaille actuellement sur un projet dont le but est de réaliser un jeu du style "shoot'm'up" en réseau, en utilisant Java. Je viens de lire le tutoriel sur la gestion des sockets en Java (http://humbert-florent.developpez.co...reseau/avance/), qui ne m'a pas posé de problèmes.

Ma question portait plus sur la façon d'organiser le réseau pour mon application (c'est en effet ma première application réseau) : il n'y aura que 2 joueurs, qui s'échangeront des informations sur le nombre d'ennemis abattus toutes les n secondes. Faut-il mieux créer pour chaque joueur un socket client et un socket serveur, ou une solution avec un joueur serveur et un joueur client serait-elle suffisante ? Quelle solution apparaît la plus adaptée ? En existe-t-il d'autres ?

Par avance, merci pour vos conseils.
odsen.s est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2010, 13h56   #2
nouknouk
Modérateur
 
Avatar de nouknouk
 
Homme
Inscription : décembre 2006
Messages : 1 614
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32

Informations forums :
Inscription : décembre 2006
Messages : 1 614
Points : 1 784
Points : 1 784
Salut,

la solution avec deux socket (1 client, 1 serveur) pour chaque client est inutile: à partir du moment où une connexion est établie, tu peux sans aucun souci échanger des informations dans les deux sens.
Donc mieux vaut utiliser une connexion unique pleinement (ie dans les deux sens), plutôt que deux conexions à moitié.

Par contre j'attire ton attention sur une architecture en réseau de type Peer2Peer (au delà des mules, c'est aussi le nom quand deux 'clients', se connectent directement entre eux pour échanger les infos): le gros problème est que dans la majorité des cas, lesdits clients désirent jouer de chez eux, typiquement depuis leur ordinateur connecté à leur box ADSL ... qui fait du NAT.

Ces clients ont des adresses IP sur leur réseau local (ie. derrère leur box). C'est parfait quand le client veut initier des connexions vers l'extérieur, mais hors cas spécifiques (*), aucun de tes deux clients ne pourra jouer le rôle de 'serveur' car sa box refusera les connexions entrantes. Attention: je ne dis pas que c'est impossible, mais que tu prends le risque de rebuter plus d'un joueur potentiel s'il doit manuellement configurer une redirection de port sur sa box ADSL.

C'est une des raisons (**) qui fait que dans la majorité des cas de jeux en réseau, on utilise une architecture réseau avec un serveur intermédiaire (qui lui a une IP publique et accepte sans souci les connexions venant de l'extérieur).
Chaque client se connecte au serveur et dialogue avec lui. Quand un client a une info à faire passer à l'autre client, il l'envoie au serveur qui se charge alors de transmettre le message à l'autre client.

A toi de voir.



(*) redirection explicite de ports, usage de l'uPnp, ... qui ne sont ni présentes à tous les coups, ni simples à mettre en oeuvre pour les profanes.

(**) l'autre raison majeure étant de pouvoir détecter et éviter les client hackés pour tricher. Le serveur central jouant alors le rôle "d'arbitre" pendant la partie en vérifiant la 'cohérence' des affirmations de chaque joueur.
nouknouk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2010, 16h25   #3
odsen.s
Membre confirmé
 
Avatar de odsen.s
 
Benoît
Étudiant
Inscription : octobre 2006
Messages : 269
Détails du profil
Informations personnelles :
Nom : Benoît
Âge : 23
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2006
Messages : 269
Points : 222
Points : 222
Merci pour ces infos,
je pense que je vais me tourner vers une connexion P2P,
ça n'est pas vraiment important si le jeu ne fonctionne que sur
un réseau local, c'est un projet pour l'école.

Merci bien dans tous les cas !
odsen.s est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 13h34.


 
 
 
 
Partenaires

Hébergement Web