¿El marco XNA es apropiado para la programación del lado del servidor?


11

Estoy buscando crear un MUD basado en texto, por lo que muchos de los elementos del marco XNA parecen apropiados para lo que necesito. Especialmente cosas como el bucle general del juego, las redes, etc. Parece que XNA está estrechamente acoplado a un entorno interactivo con interfaz de usuario y audio, por lo que no estoy seguro de si es el camino correcto.

¿Sería más fácil recrear este tipo de aspectos yo mismo, intentar doblar el marco XNA a lo que necesito, o hay un marco mejor para este tipo de trabajo?

Respuestas:


5

No creo que el marco XNA le ofrezca mucho uso para el lado del servidor de un juego basado en texto, no. Debería mirar las bibliotecas de clases de .NET framework estándar para ese caso de uso.

Pero ampliando la pregunta un poco, aunque los marcos XNA realmente están destinados al desarrollo de juegos en 2D y 3D del lado del cliente, puede haber motivos para usar partes de ellos en el lado del servidor de un juego en 2D o 3D. Es común reutilizar partes del motor de gráficos en el servidor porque el servidor necesita hacer cosas como la visibilidad y las pruebas de colisión tanto como el cliente. En ese escenario, si su motor ha utilizado la biblioteca matemática de XNA, también deberá vincular eso en el código de su servidor.


3

Si está usando C #, debería considerar usar WCF para abstraer la capa de red. Un MUD no tendría mucho tráfico de red, en términos relativos, por lo que seguir esta ruta podría facilitarle mucho las cosas. He estado usando WCF para un juego de estrategia por turnos, y me ha funcionado bastante bien.


1
En general, estoy de acuerdo, pero WCF no admite telnetconexiones directas . Para los MUD normales basados ​​en texto, se permite que los usuarios accedan al telnetservidor.
Agent_9191

@ Agent_9191 Dependiendo de sus objetivos, podría tener sentido que la telnetinterfaz sea una capa encima de una API más robusta, por ejemplo, una construida en WCF.
Cody Brocious

¿WCF no introduciría latencia, o usaría un enlace personalizado que hablara sockets crudos?
Nate

Bueno, si necesita una interfaz telnet, WCF probablemente no sea una buena opción de todos modos; Sospecho que sería exagerado. Pero no creo que la latencia sea un problema teniendo en cuenta que la información que se envía de ida y vuelta sería relativamente simple, ciertamente más simple que las cargas útiles de muchos servicios web. Utilizo WCF para un juego de estrategia por turnos bastante complejo, y no he tenido ningún problema de rendimiento. Mantengo la carga útil pequeña con la serialización personalizada, y la latencia no es un problema porque los mensajes no se envían de un lado a otro con mucha frecuencia (para mi proyecto, la mayoría de los mensajes ocurren al final de cada turno).
Mike Strobel el

1

Puede seguir la ruta XNA y simplemente usar los elementos particulares que desee (audio, redes, etc.); pero aumenta la complejidad de su proyecto y disminuye su "comprensión inmediata" de la base de código.

Básicamente, a medida que agrega más middleware, su conocimiento de la forma en que realmente funciona su código disminuye, a menos que profundice en la implementación del middleware. A medida que se distancia, pierde eficiencia, capacidad y comprensión.

Entonces, como se indicó anteriormente, sería mucho más beneficioso para usted usar C # y las bibliotecas apropiadas que no sean XNA.

Si está haciendo esto para su propia edificación, también podría rodar la suya donde le interese el área; aprenderá más de esta manera.

¡Ve a por ello! ¡Que te diviertas!


1

Depende en gran medida de sus requisitos.

Si está interesado en admitir audio, invitaciones de amigos, etc., creo que XNA es el camino a seguir.

La principal limitación que enfrenta con el uso de XNA para la creación de redes es el límite de 32 jugadores por juego.

Cuando desarrollas un juego con el marco XNA, no es absolutamente necesario estar conectado a todas las API. Muchas personas usan el marco XNA pero confían en otros marcos para la creación de redes.

Mi sugerencia es hacer una lista física (anótelos en el bloc de notas o algo así) de sus necesidades y deseos para el aspecto de la red. Luego compare y contraste los distintos marcos.


-1

Me inclino por decir "crear desde cero", pero eso es solo una sensación instintiva basada en haber trabajado con C # y el código MUD por separado. De todos modos, tendrá más control y aprenderá más de sus propias versiones de lo que sea que pueda usar de XNA.

¿Alguna razón por la que no está utilizando un motor MUD existente, al menos como referencia?


Doctorado estoy usando un motor existente como referencia. Estoy intentando portar la base del código SMAUG a C # desde la base C existente. Por lo tanto, el conjunto de características se define principalmente, solo lo hace funcionar en C #.
Agent_9191
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.