Le cadre XNA est-il approprié pour la programmation côté serveur?

11

Je cherche à créer une MUD basée sur du texte, donc beaucoup d'éléments du cadre XNA semblent appropriés à ce dont j'ai besoin. Surtout des choses comme la boucle de jeu générale, la mise en réseau, etc. Il semble que XNA soit étroitement couplé à un environnement interactif avec interface utilisateur et audio, donc je ne suis pas sûr que ce soit la bonne façon de procéder.

Serait-il plus facile de recréer ces types d'aspects moi-même, de tenter de plier le framework XNA à ce dont j'ai besoin, ou existe-t-il un meilleur framework pour ce type de travail?

Agent_9191
la source

Réponses:

5

Je ne pense pas que le framework XNA vous offrirait beaucoup d'utilisation pour le côté serveur d'un jeu basé sur du texte, non. Vous devez consulter les bibliothèques de classes du framework .NET standard pour ce cas d'utilisation.

Mais en élargissant un peu la question, bien que les frameworks XNA soient vraiment destinés au développement de jeux 2D et 3D côté client, il peut y avoir lieu d'en utiliser certaines parties côté serveur d'un jeu 2D ou 3D. Il est courant de réutiliser des parties du moteur graphique sur le serveur car le serveur a autant besoin de faire des tests de visibilité et de collision que le client. Dans ce scénario, si votre moteur a utilisé la bibliothèque mathématique de XNA, vous devrez également le lier dans votre code serveur.

U62
la source
3

Si vous utilisez C #, vous devriez simplement envisager d'utiliser WCF pour éliminer la couche réseau. Un MUD n'aurait pas beaucoup de trafic réseau, relativement parlant, donc suivre cette route pourrait vous faciliter la tâche. J'utilise WCF pour un jeu de stratégie au tour par tour, et cela a très bien fonctionné pour moi.

Mike Strobel
la source
1
En général, je suis d'accord, mais WCF ne prend pas en charge les telnetconnexions directes . Pour les MUD classiques basés sur du texte, permettre aux utilisateurs d'accéder au telnetserveur est une donnée.
Agent_9191
@ Agent_9191 Selon vos objectifs, il pourrait être judicieux que l' telnetinterface soit une couche au-dessus d'une API plus robuste, par exemple celle basée sur WCF.
Cody Brocious
WCF n'introduirait-il pas de latence, ou utiliseriez-vous une liaison personnalisée qui parlait de sockets bruts?
Nate
Eh bien, s'il a besoin d'une interface telnet, WCF n'est probablement pas un bon choix de toute façon; Je soupçonne que ce serait exagéré. Mais je ne pense pas que la latence serait un problème étant donné que les informations envoyées dans les deux sens seraient relativement simples - certainement plus simples que les charges utiles de nombreux services Web. J'utilise WCF pour un jeu de stratégie au tour par tour assez complexe, et je n'ai eu aucun problème de performances. Je garde la charge utile petite avec la sérialisation personnalisée, et la latence n'est pas un problème car les messages ne sont pas envoyés très souvent (pour mon projet, la plupart des messages se produisent à la fin de chaque tour).
Mike Strobel
1

Vous pouvez suivre la voie XNA et utiliser simplement les éléments particuliers que vous désirez (audio, réseau, etc.); mais cela augmente la complexité de votre projet et diminue votre "compréhension immédiate" de la base de code.

Fondamentalement, à mesure que vous ajoutez plus de middleware, votre connaissance de la façon dont votre code fonctionne réellement diminue - à moins que vous ne vous plongiez dans l'implémentation du middleware. En vous éloignant, vous perdez en efficacité, en capacité et en compréhension.

Ainsi, comme indiqué ci-dessus, il serait beaucoup plus avantageux pour vous d'utiliser C # et les bibliothèques non XNA appropriées.

Si vous faites cela pour votre propre édification, vous pourriez tout aussi bien rouler le vôtre là où vous êtes intéressé par la zone - vous en apprendrez plus de cette façon.

Fonce! S'amuser!

AA Grapsas
la source
1

Cela dépend largement de vos besoins.

Si vous êtes intéressé à soutenir l'audio, un ami vous invite, et cetera que je pense que XNA est la voie à suivre.

La principale limitation que vous rencontrez avec l'utilisation de XNA pour la mise en réseau est la limite de 32 joueurs par partie.

Lorsque vous développez un jeu avec le framework XNA, il n'est pas absolument nécessaire d'être couplé à toutes les différentes API. De nombreuses personnes utilisent le framework XNA mais s'appuient sur d'autres frameworks pour la mise en réseau.

Ma suggestion est de physiquement (les écrire dans le bloc-notes ou quelque chose) énumérer vos besoins et désirs pour l'aspect réseau. Ensuite, comparez et contrastez les différents cadres.

Krisc
la source
-1

Je penche pour dire "créer à partir de zéro", mais ce n'est qu'un sentiment instinctif basé sur le fait d'avoir travaillé séparément avec le code C # et MUD. Vous aurez plus de contrôle et en apprendrez plus en déployant vos propres versions de tout ce que vous pourriez utiliser à partir de XNA, de toute façon.

Une raison pour laquelle vous n'utilisez pas un moteur MUD existant, au moins pour référence?

Andrew Brockert
la source
Faites un degré que j'utilise un moteur existant pour référence. J'essaie de porter la base de code SMAUG en C # à partir de la base C existante. Ainsi, l'ensemble des fonctionnalités est principalement défini, il ne fait que le faire fonctionner en C #.
Agent_9191