Esegui il gioco XNA senza grafica


11

Mi chiedo se c'è comunque modo di eseguire un gioco XNA senza mostrare nulla.

Ho un gioco funzionante che gira su una configurazione del server client in cui un giocatore è l'host e altre persone possono connettersi al suo gioco.

Ora voglio essere in grado di eseguire il gioco come host su un server con licenza senza scheda grafica, in pratica non voglio eseguire alcuna logica Draw ().

Devo davvero passare attraverso l'intero gioco e rimuovere tutti i riferimenti a XNA?

Come lo hanno fatto le persone?

EDIT : Il motivo per cui voglio farlo è perché ho una configurazione del server client funzionante nel gioco e non voglio creare un programma server "senza testa" separato.


Perché non puoi semplicemente scrivere il codice in Drawlike if (headless) { return; }?
ashes999

1
@ asher999 Non sono sicuro se questo rimuoverà completamente tutta la logica di disegno e grafica dal gioco. Un server virtuale potrebbe non avere alcuna scheda grafica reale.
JensB,

La modifica del tipo di output o il salto del disegno non rimuoveranno magicamente la dipendenza di XNA da un dispositivo grafico. Se stai caricando qualsiasi contenuto che richiede un dispositivo grafico (in particolare le trame), ci sono ottime possibilità che non riescano a caricare utilizzando una delle soluzioni proposte.
Giochi di dadoo,

Risposte:


10

Basta fare un normale progetto C # e includere i binari XNA. Ciò ti consentirà di accedere ai tipi di dati XNA e ai metodi del framework. Il mio gioco fa questo e funziona perfettamente.


1
Immagino tu abbia scritto un wrapper che si comporta come XNA chiamando i metodi necessari come Aggiornamento per te? Ci proverò, grazie.
JensB,

2

La risposta è: non farlo. Se non è necessario creare un gioco, ad es. non stai cercando di sfruttare le cose offerte da XNA, perché farlo? Dovresti davvero cercare di sviluppare un software personalizzato in grado di simulare con successo il gioco che desideri giocare, in genere un sistema console di qualche tipo. Se fornisci ulteriori dettagli, aggiornerò la mia risposta con una risposta meno generica.


1
Posso darti una ragione: test unitari. Spesso si desidera testare un pezzo o una sezione di codice senza dover caricare o disegnare e grafica.
Stephen Tierney,

3
@StephenTierney Posso darti un'altra ragione: non ci sta provando, sta cercando di eseguire un server di gioco (su una macchina dedicata). Rileggi la domanda e considera di riprendere il tuo voto negativo.
Vaughan Hilts,


1

Per basarsi sul suggerimento senza titolo, puoi semplicemente includere riferimenti alle DLL e usarli senza utilizzare nessuno dei loop di gioco predefiniti. Per esempi di ciò puoi guardare la serie di tutorial su winforms nel club dei creatori: http://xbox.create.msdn.com/en-us/education/catalog/sample/winforms_series_2

Inoltre, se vuoi avere ancora più fantasia, puoi sostituire l'intero loop di gioco XNA con il tuo loop personalizzato e controllare l'intero processo. Per ulteriori informazioni su questo sguardo su /programming/6361691/custom-xna-game-loop-in-windows


1

Se cambi il tipo di output di un progetto XNA in "Applicazione console", l'applicazione aprirà semplicemente una console vuota all'avvio, senza mai aprire la finestra del gioco reale. Questo potrebbe essere utile per quello che stai cercando di realizzare, dal momento che vuoi fare dei test e puoi usare facilmente la Console come finestra di debug.


1

Puoi anche considerare di ignorare l'aggiornamento, disegnare chiamate e semplicemente tornare.

Inoltre, non chiamare il dispositivo grafico nelle tue classi di gioco principali, che dovrebbe impedire che la finestra di xna venga istanziata sul gioco fungendo da server.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.