Je fais actuellement un jeu MMORPG, au tour par tour. Le client est censé fonctionner sur Android. Maintenant, mon ami fait les graphismes, et j'ai suivi les cours de jeu (joueur, armement, etc.). Maintenant, si le combat est lancé, les classes peuvent être manipulées par des interfaces (en fait pour mon partenaire, c'est comme travailler avec des interfaces pures, il n'a besoin d'aucun accès aux classes d'implémentation).
Maintenant, nous devons introduire un serveur de jeu pour permettre à plusieurs joueurs. Et quelques questions très importantes se posent:
1) Dois-je copier complètement le modèle de jeu sur le serveur, ne laissant aucune classe sur le client ou est-il préférable d'avoir 2 copies du modèle - 1 sur le serveur et 1 sur l'appareil et de terminer la synchronisation périodique entre celles-ci?
2) Quelle méthode de connexion choisir entre le client et le serveur (le client en vue est le téléphone Android)? Quant au serveur - je me tourne vers java car j'ai une certaine expérience avec lui. Mais maintenant, la question est - est-il préférable d'utiliser des sockets pour cette tâche ou je peux utiliser les services REST, ou il est même possible de le connecter en quelque sorte au serveur Java EE qui est cool de mon point de vue car il supprime beaucoup de programmation complication? Même si le jeu est multijoueur, il est au tour par tour, il n'a donc pas besoin d'être renouvelé très souvent.
3) Et le filetage? Chaque client doit-il avoir son propre thread (en cas de sockets)?
4) Existe-t-il des livres sur la programmation de jeux sur serveur REAL MMORPG ???
la source
D'accord avec Mikolaj ne copiez pas tout. Envoyez le moins de données possible. Vous pouvez avoir les mêmes classes (représentant uniquement le modèle de données, pas d'autres actifs) dans le client et le serveur, mais ne les envoyez pas sur le net. Vous souhaitez les sérialiser sur le serveur et les désérialiser sur le client. Le client doit envoyer uniquement des commandes au serveur.
Vous prévoyez un MMORPG au tour par tour (je ne sais pas comment cela fonctionnerait cependant). La vitesse n'est donc pas vraiment un problème. Vous pouvez utiliser n'importe quel type de service, REST peut être bon, c'est simple. Habituellement, les MMORPG utilisent UDP (non sécurisé, plus petit, plus rapide) pour des choses comme les mises à jour de mouvement où un ou deux paquets perdus n'ont pas d'importance et TCP (sécurisé, surcharge) pour une communication sécurisée. La plupart des jeux utilisent probablement une sorte de protocole personnalisé compressé crypté sur UDP et TCP pour le rendre rapide et difficile à craquer.
En règle générale, vous souhaitez disposer d'un pool de threads. Chaque thread du pool traite une demande, puis est recyclé. Lorsque vous n'avez pas assez de threads, vous pouvez envisager de bloquer ou d'allouer plus de threads.
Mikolaj a déjà fait une recherche sur Google pour vous ...
la source