Ejecuta el juego XNA sin gráficos

11

Preguntándome si hay alguna forma de ejecutar un juego XNA sin mostrar nada.

Tengo un juego en funcionamiento que se ejecuta en una configuración de servidor cliente donde un jugador es el anfitrión y otras personas pueden conectarse a su juego.

Ahora quiero poder ejecutar el juego como host en un servidor determinado sin tarjeta gráfica, básicamente no quiero ejecutar ninguna lógica Draw ().

¿Realmente necesito revisar todo el juego y eliminar todas las referencias a XNA?

¿Cómo ha hecho esto la gente?

EDITAR : La razón por la que quiero hacer esto es porque tengo una configuración de servidor cliente en funcionamiento en el juego y no quiero hacer un programa de servidor "sin cabeza" por separado.

JensB
fuente
¿Por qué no puedes simplemente escribir código Drawcomo if (headless) { return; }?
cenizas999
1
@ asher999 No estoy seguro de si eso eliminará por completo toda la lógica de dibujo y gráficos del juego. Un servidor virtual puede no tener ningún adaptador de gráficos real en absoluto.
JensB
Cambiar el tipo de salida u omitir el dibujo no eliminará mágicamente la dependencia de XNA en un dispositivo gráfico. Si está cargando cualquier contenido que requiera un dispositivo gráfico (especialmente texturas), es muy probable que no se carguen con cualquiera de las soluciones propuestas.
dadoo Games

Respuestas:

10

Simplemente haga un proyecto normal de C # e incluya los binarios XNA. Esto le permitirá acceder a los tipos de datos XNA y métodos de marco. Mi juego hace esto y funciona a la perfección.

intitulado
fuente
1
¿Supongo que escribiste un contenedor que actúa como XNA llamando a los métodos necesarios como Actualizar para ti? Voy a intentarlo, gracias.
JensB
2

La respuesta es: no hagas esto. Si no necesitas hacer un juego, es decir; no estás buscando aprovechar las cosas que XNA ofrece, ¿por qué hacerlo? Realmente deberías estar buscando desarrollar un software personalizado que pueda simular con éxito el juego que deseas jugar, generalmente un sistema de consola de algún tipo. Si da más detalles, actualizaré mi respuesta con una respuesta menos genérica.

Vaughan Hilts
fuente
1
Puedo darte una razón: pruebas unitarias. A menudo, desea probar una pieza o sección de código sin tener que cargar o dibujar y gráficos.
Stephen Tierney
3
@StephenTierney Puedo darte otra razón: no está intentando, está intentando ejecutar un servidor de juegos (en una máquina dedicada). Vuelva a leer la pregunta y considere retirar su voto negativo.
Vaughan Hilts
1

Bueno, si simplemente desea eliminar las llamadas de extracción, ha intentado usar esto: Suprima la extracción

H3llrais3R
fuente
1

Para construir sobre la sugerencia de untitled, solo puede incluir referencias a las DLL y usarlas sin usar ninguno de los bucles de juego predeterminados. Para ver ejemplos de esto, puede consultar la serie de tutoriales de winforms en el club de creadores: http://xbox.create.msdn.com/en-us/education/catalog/sample/winforms_series_2

Además, si desea obtener aún más fantasía, puede reemplazar todo el ciclo del juego XNA con su propio juego personalizado y controlar todo el proceso. Para obtener más información sobre este aspecto, visite /programming/6361691/custom-xna-game-loop-in-windows

Piedra dura
fuente
1

Si cambia el Tipo de salida de un proyecto XNA a "Aplicación de consola", la aplicación simplemente abrirá una Consola vacía al inicio, sin abrir la ventana del juego real. Esto puede ser útil para lo que está tratando de lograr, ya que desea hacer pruebas, y puede usar la consola muy fácilmente como una ventana de depuración.

UBSophung
fuente
1

También puede considerar anular la actualización y dibujar llamadas, y simplemente regresar.

Además, no llame al dispositivo gráfico en sus clases de juego principales, lo que debería evitar que se instale la ventana xna en el juego que actúa como su servidor.

Jason Coombes
fuente