2010-06-19 5 views
3

Je suis en train de construire un jeu Monopoly en Java et je veux qu'il soit capable de supporter des jeux sur Internet (le point était que moi et mes amis des États-Unis d'A pouvaient jouer).Dois-je utiliser RMI pour le jeu multijoueur Java?

Le réseautage est un domaine de programmation que je n'ai pas encore saisi, et j'ai eu du mal à décider comment le retirer. En général, je pensais que la façon correcte de travailler serait d'avoir une application serveur avec tout le code du jeu Monopoly et ensuite un client avec juste une interface graphique avec des appels de méthode à distance.

Le RMI sera-t-il trop complexe pour ce projet ou est-ce la meilleure façon de procéder? Avez-vous des suggestions ou des astuces pour moi?

Mise à jour: Ce jeu va être 100% Java. Donc, pas de soucis sur les clients ayant besoin d'avoir Java installé. En outre, il serait bon d'obtenir quelques conseils sur l'utilisation de RMI.

Répondre

13

RMI n'est pas une chose complexe, c'est le contraire.

Il vous permet de développer votre protocole de jeu sans vous soucier d'avoir Message objets entre le serveur et les clients avec de longues chaînes si pour vérifier quel type de message il est et faire tout ce qui est nécessaire. Ce que vous pouvez réellement faire avec RMI est d'avoir un objet centralisé (sur le serveur) sur lequel vous appelez directement les méthodes des clients comme iWantToMoveThere(position) ou iWantToBuyLand(where) et ainsi de suite. Cela simplifie le protocole tout en mettant un peu de surcharge que vous auriez dans tous les cas puisque je vous décourage d'implémenter un procotol binaire. Un XML ou un Java sérialisé serait un bon compromis puisque vous n'avez pas vraiment besoin de temps réel pour un jeu comme celui-ci. Un autre avantage de RMI est que vous pouvez facilement gérer un serveur maître sur lequel de nombreux serveurs de jeu peuvent se connecter pour donner aux joueurs la possibilité d'y jouer, et bien d'autres petites choses comme la gestion d'un lobby séparé, etc. Tout comme expérience directe: j'ai utilisé RMI pour gérer un serveur qui permettait aux développeurs de publier leurs propres plugins de jeu permettant aux joueurs de se connecter automatiquement au serveur et de télécharger le contenu pour pouvoir jouer. Tout était géré par RMI à l'exception du fait que j'avais besoin d'une connexion TCP arrière pour pouvoir gérer les événements asynchrones chaque fois que j'en avais besoin. Le code source entier était juste ~ 1k lignes dans un groupe de 7-8 classes

+0

Voir c'était mon impression. Je ne voulais pas plonger directement sans demander ici d'abord si. Merci :) – seadowg

+0

Pourriez-vous éventuellement me donner un exemple de source pour une application RMI simple est-ce pas trop de problèmes? Il semble que tu saches vraiment ce que tu en fais. – seadowg

0

Il semble que vous allez avoir des clients lourds. Pourquoi? Vous pourriez avoir un serveur Java 100% qui a toute votre logique métier et y accéder via le navigateur en utilisant jquery/Ajax et le rendu html5.

Pour répondre à votre question je dirais que oui RMI serait trop complexe pour ce que vous faites.