En bref, je crée un jeu multijoueur basé sur Flash et je commence maintenant à travailler sur le code côté serveur. Eh bien, je suis le seul développeur du projet, je recherche une bibliothèque de socket de haut niveau qui fonctionne bien avec des jeux pour accélérer mon temps de développement. P>
J'essayais d'utiliser le cadre tordu (pour Python), mais je reçois des problèmes personnels avec cela, donc je recherche une autre solution. P>
Je suis ouvert à Java ou à une bibliothèque basée sur Python. L'essentiel est que la bibliothèque est suffisamment stable pour les jeux multijoueurs et la bibliothèque doit être «de haut niveau» (résumé) depuis que je suis nouveau à la programmation de la prise pour les jeux. P>
Je tiens également à noter que je vais utiliser la prise binaire brute pour mon jeu flash (ActionScript 3.0) puisque je suppose que ce sera plus rapide que la prise Traditionnelle Flash XML. P>
4 Réponses :
Les prises binaires brutes de haut niveau sur l'autre ne fonctionneront pas. Désolé, mais vous devrez également passer de bas niveau sur le côté serveur. P>
Edit: En réponse au commentaire de l'OP. Je ne suis pas au courant d'une interface "de haut niveau" de la nature dont vous parlez pour Java. Et franchement, je ne pense pas que cela ait beaucoup de sens. Si vous allez parler d'octets sur les flux de socket, vous devez vraiment comprendre l'API standard de prise JDK / Serversocket; par exemple. délaits, conservés, etc. p>
Eh bien, je veux dire de haut niveau dans ce que les conventions de nommage sont des laïcs. En fait, je connais des concepts de base de base et espère faire mon propre serveur de socket de la terre, mais je n'ai tout simplement pas ce genre de temps. J'espérais trouver une solution qui manipulait la plupart des processus de prise standard (comme des délais d'attente) et que tout emballé dans une API facile à utiliser avec une bonne documentation. Voir ce n'est même pas en train de trouver un seul ou moins je me demande si quelqu'un connaît une bonne solution. (Je ne veux pas avoir à ré-programmer le serveur dans quelques mois en raison de mon mauvais choix dans une bibliothèque de socket)
Qu'est-ce qui ne va pas avec reprogrammer quelque chose plus tard? On l'appelle "apprendre de tes erreurs". Tout fait partie du processus d'apprentissage.
Convenu à 100% et je suppose que tant que je n'ai pas à changer de côté de l'API côté, il ne va pas beaucoup d'importance. Juste un peu inquiet pour construire mon jeu autour d'un design défectueux (en raison de ma part), puis couplé à mon manque de connaissances pour la programmation de la prise, il serait éclairé si je tente de créer mon propre serveur (à partir de zéro) sans l'aide de Une bibliothèque de socket qui gère des processus tels que la mise à jour de tous les clients avec de nouvelles données. Je sais que si le jeu passe au-delà de la fin de l'année que je vais faire une réécriture de serveur mais que je veux aller préparer.
Je dois être en désaccord avec la réponse («Les prises de haut niveau sur un côté et des prises binaires brutes de l'autre ne fonctionneront pas.»). Voir par exemple, Netty dans la réponse de la tige Hyde qui fournit une interface asynchrone de haut niveau aux prises Java, de manière indépendante du protocole de fil (pour laquelle Netty fournit également des blocs de construction de diverses complexités et complétude)
voir "Un guide rapide sur ActionScript 3 et programmation flash" . Il dispose d'un exemple détaillé d'un code client ActionScript utilisant des sockets pour communiquer avec un serveur Python (code fourni). Non ce que quiconque appellera haut niveau em>, il utilise le module de prise Python de base pour la communication. p>
(Remarque: l'exemple de serveur Python est pas Pythonic em>. Après avoir obtenu l'idée générale d'utiliser des sockets en python, écrivez quelque chose de plus simple et non de la prise d'importation de socket * code>) < / p>
Merci pour cette gimelle, c'est ce que je veux dire. En fait, j'ai démarré un serveur il y a quelques jours avec le module de socket Core Python, mais j'ai commencé à devenir un peu submergé par la quantité de conception que je devais faire avant même d'obtenir un ensemble décent de méthodes pour travailler avec le jeu. Tant à craindre et tellement, je ne sais pas ... Puis j'ai vu le cadre tordu qui faisait la plupart de ces "petites choses" que je rencontrais des problèmes, mais pour des raisons personnelles, je ne veux pas utiliser tordu.
Je vous en prie. Voir Stackoverflow.com/questions/ 1157245 / ... pour une discussion sur la stratégie de communication. Rester simple.
Merci encore Gimel, c'était une course rapide et sale de la conception client-serveur pour des jeux à tour. Utile
Une option pour Python est le Concurrence Cadre. Je l'ai utilisé assez récemment, conjointement avec python sans empiler , pour simuler un environnement dans lequel il y avait des milliers de demandes potentiellement Par seconde, chacun doit être traité en moins de 2 secondes. L'API est très simple et est bien documentée. P>
Je suis venu très proche de la mise en œuvre en Java en utilisant Netty , qui est un projet JBoss . p>
Wow, je ne peux pas croire que je n'ai pas trébuché lors de la concurrence plus tôt. Il semble être une bonne solution pour moi (même a été construit dans la classe MySQL). La documentation est bien aménagée aussi, merci. À l'heure actuelle, je suis toujours ouvert à plus de suggestions, mais je vais vérifier la concurrence pour voir si je l'aime.
+1 pour Netty, que j'utilise actuellement en tant que serveur pour un client Flash Socket. C'est une explosion, franchement.
J'ai mis en place une bibliothèque, envisageriez-vous de la regarder: github.com/czifro-development/jsocket a>
Pour Java Il y a Apache Mina et grizzly frameworks de ceux qui simplifient vraiment le travail avec des sockets p>
Vous pouvez élaborer ce que vous comprenez exactement avec la "bibliothèque de haut niveau pour la programmation de la prise" car les sockets ne sont pas harets. Recherchez-vous un réseau ou un middleware (bibliothèque)?
En fait, au cours des derniers mois, j'ai dépensé une partie de mon temps libre à regarder dans la programmation de socket (en général) et c'est très malheureux et je veux réellement faire mon propre serveur de socket en C mais je veux obtenir ce jeu à bêta dès que possible. Quant à moi cherche ... Oui j'ai, Python, il semblait que tordé était un cerviche, mais pour Java, je ne suis pas sûr ... J'ai programmé quelques petites choses client-serveur utilisant la prise par défaut de Java. Mais il était très différent de la programmation d'un serveur de socket pour une partie.
@ Codejustine.com: veuillez ne pas commenter votre propre question. Vous possédez la question. Veuillez mettre à jour la question avec les faits supplémentaires.
Je sais que vous avez déjà accepté une réponse, mais envisageriez-vous de regarder ma bibliothèque Java: Github.com/czifro -Développement / JSocket
Vous pouvez vérifier ceci (qui mentionne un tas de frameworks, de modules et tels): wiki.python.org/ Moin / Concurrence