-
Jeu en réseau
Bonjour
Dans le cadre d'un projet en génie logiciel, nous devons développer un jeu ("Dessiner c'est gagné") en réseau. Nous aurions besoin de votre aide sur le point suivant: comment envoyer le dessin qui se trouve sur un JPanel à tout les autres joueurs?
Merci
-
Il faut faire du client/serveur, regarde du côté de RMI.
-
Est-ce que ça ne serait pas plus simple d'associer le dessin à un flux (lequel?) car je n'ai jamais utilisé RMI.
-
Partager un dessin et le voir se rafraîchir quasi-instantanément sur tous les clients c'est pas trivial. Il faut un protocole qui dépote et codifier les changements apportés au dessin pour qu'il soit redessiné par les clients.
-
Merci pour ta réponse, je me sens plus rassuré :(. Comment mettre ceci en oeuvre, est-ce que quelqu'un a déjà eu affaire à ce genre de problème? Aurait-il une solution autre que RMI?
-
Le dessin doit-il être envoyé en "temps réel" sur tous les clients ?
Si ce n'est pas obligatoire, commence par mettre un bouton "envoyer". Un clic sur celui-ci va envoyer le dessin à tout le monde.
J'imagine que tu dessines dans un BufferedImage ? Alors il te suffit de le sérializer, l'envoyer aux clients. Chaque client va désérializer un BufferedImage et l'afficher (cf. ObjectInputStream et ObjectOutputStream).
Autre idée : envoi un dessin toutes les 5 secondes s'il est modifié.
-
On va s'inspirer de cette approche avec un serveur qui compare les images avant de les renvoyer aux autres clients. Est-ce que ça ne sera pas un peu trop lourd? Est-ce que quelqu'un a déjà utilisé Batik?: http://xmlgraphics.apache.org/batik/
-
C'est un bon choix. Dans ton appli tu ne transmettra qu'une primitive SVG à tous les clients, selon ce que le dessinateur fait. Si tu veux gagner en perf réseau, tu peux compresser le flux xml, mais le gain sera assez minime.
-
Je crois que le principe général est compris, reste plus qu'à implémenter. Merci pour vos réponses.