12
votes

Programmation du serveur - jeu multijoueur simple - quel protocole et technologies?

J'ai une année d'une année d'expérience écrit le code du client mais aucun avec des trucs serveur. Je veux retenir la question un peu donc je vais simplifier ce que j'essaie d'atteindre.

Je veux écrire un code de serveur de telle sorte que deux clients (navigateur ou iPhone / Android) puissent se connecter, lorsque deux joueurs sont connectés, ils voient une minuterie comptent à zéro. L'horloge serait synchronisée sur le serveur et les clients seraient identifiables de manière unique.

Le problème ici est avec le mot Connect, qu'est-ce que les gens utilisent pour des jeux multijoueurs? Ouvrez une prise TCP pour les communications bidirectionnelles? Vous pouvez dire que je ne suis pas vraiment sûr de ce dont je parle. J'espérais utiliser Appengine mais je ne suis pas sûr si cela convient comme la demande basée sur la demande.

J'ai une certaine expérience avec Java et bien que Erlang sonne comme le meilleur choix, c'est quelque chose que je veux juste jouer avec et pousser vite alors Java serait plus facile. J'ai juste besoin de connaître le meilleur moyen de connecter les joueurs, etc.

merci,

GAV


0 commentaires

5 Réponses :


7
votes

Je suggère que nous considérons les systèmes de bureau et mobiles comme des clients égaux. Quelles options sont alors?

  • Vous écrivez un serveur de socket qui acceptera les connexions des clients. Mais ensuite, vous devez également écrire un client de socket, même 2x - pour un bureau et pour un système d'exploitation mobile. Et l'utilisateur devra installer ce client.

  • Vous lancez un serveur Web (quelle que soit la technologie que vous aimez). Il exposera certains services Web qui seront également accessibles aux OSES de bureau et à la clientèle. Mais vous devez toujours écrire une application client (à nouveau 2x).

  • Vous exécutez un serveur Web et effectuez toutes les fonctionnalités accessibles via Protocole HTTP standard. De cette façon, vous n'aurez même pas besoin d'un client - presque tous les bureau ou un système d'exploitation mobile dispose d'au moins un navigateur Web installé. JavaScript fournira des mises à jour dynamiques de votre ticker.


2 commentaires

Merci d'une bonne réponse à une vague question - la programmation de socket est la plus applicable à ce que je veux atteindre, votre réponse m'a donné les mots-clés pour faire plus de recherches.


JavaScript dans ce cas pourrait et devrait être considéré comme un client comme les autres.



1
votes

Je ne suis en aucun cas un expert sur la communication réseau, mais si cela ne vous dérange pas de perdre quelques paquets (ou une vérification des erreurs de logiciel) et que vous souhaitez que vous puissiez une communication maigre, vous pouvez utiliser UDP . Je pense que la plupart des programmes de données sensibles à la plupart des temps et les médias en streaming utilisent ce protocole pour éviter les retards et maintenir la taille du paquet.


0 commentaires

1
votes

J'ai réalisé une application client / serveur il y a quelques années avec Java et ServerSocket ( http://java.sun.com/j2se/1.4.2/docs/api/java/net/serversion.html ). Vous avez également une version SSL.

Vous créez donc un serversion et attendez votre connexion. Lorsqu'un client est connecté, vous créez un fil qui discutera avec ce client avec un protocole que vous avez réalisé.

http://www.developer.com/java/ent/article.php/1356891/a-patternframework-for-clientserver-programming-in-java.htm

Si trouvé ce petit framework:

http://www.bablokb.de/jcs/jcs.html

L'une des choses la plus difficiles est de créer votre protocole, un bon moyen d'apprendre à créer un pour comprendre comment travailler le FTP (ou http ...).


0 commentaires

6
votes

Il existe une bonne série d'articles sur réseautage pour les programmeurs de jeu par quelqu'un qui Est-ce que ça fait pour gagner sa vie?


0 commentaires

1
votes

Vous avez raison que le modèle J2EE tombe en panne avec des exigences à proximité de temps réel ou multi-acteurs. Vous voulez envisager le projet Server de jeu RedDDAF. Il fait pour les jeux ce que les servlets font pour la logique Busiens et open source.

http://www.reddwarfserver.org

Je suggère que nous considérons le bureau et le mobile systèmes en tant que clients égaux. Quelles options sont alors?

ReDDDWARF a une couche de trrabsport pluggable et peut supporter toute sorte de client que vous souhaitez.

Les serveurs Web sont parfaits pour les applications de type Web. Si votre jeu agit comme une page Web-- n'est pas multi-utilisateur, est basé sur le tour, et évolue très lentement, puis un serveur Web est un choc raffiné.

Si ce n'est cependant pas, vous avez besoin d'un peu plus de technologie de la technologie.

Oh, et pour ce que vous valez, si vous voulez écrire un serveur à partir de zéro, n'utilisez pas "Serversocket". Qui requrie un fil par connexion et ne sera jamais à l'échelle. Utilisez Nio ou utilisez un Nio Cadrewoprk comme Netty.


1 commentaires

Le lien est mort, voici le lien GITHUB: github.com/reddwarf-nextgen/reddwarf