Führen Sie das XNA-Spiel ohne Grafiken aus


11

Ich frage mich, ob es überhaupt ein XNA-Spiel gibt, ohne etwas anzuzeigen.

Ich habe ein funktionierendes Spiel, das in einem Client-Server-Setup ausgeführt wird, in dem ein Spieler der Host ist und andere Personen eine Verbindung zu seinem Spiel herstellen können.

Ich möchte jetzt in der Lage sein, das Spiel als Host auf einem bestimmten Server ohne Grafikkarte auszuführen. Grundsätzlich möchte ich überhaupt keine Draw () - Logik ausführen.

Muss ich wirklich das gesamte Spiel durchgehen und alle Verweise auf XNA entfernen?

Wie haben die Leute das gemacht?

BEARBEITEN : Der Grund, warum ich dies tun möchte, ist, dass ich ein funktionierendes Client-Server-Setup im Spiel habe und kein separates "kopfloses" Serverprogramm erstellen möchte.


Warum kann man nicht einfach schreiben Code in Drawwie if (headless) { return; }?
Asche999

1
@ asher999 Ich bin mir nicht sicher, ob dadurch die gesamte Zeichen- und Grafiklogik vollständig aus dem Spiel entfernt wird. Ein virtueller Server verfügt möglicherweise überhaupt nicht über einen echten Grafikadapter.
JensB

Durch Ändern des Ausgabetyps oder Überspringen der Zeichnung wird die Abhängigkeit von XNA von einem Grafikgerät nicht auf magische Weise aufgehoben. Wenn Sie Inhalte laden, für die ein Grafikgerät erforderlich ist (insbesondere Texturen), besteht eine sehr gute Wahrscheinlichkeit, dass diese mit einer der vorgeschlagenen Lösungen nicht geladen werden können.
Dadoo Games

Antworten:


10

Erstellen Sie einfach ein normales C # -Projekt und fügen Sie die XNA-Binärdateien hinzu. Dadurch erhalten Sie Zugriff auf die XNA-Datentypen und Framework-Methoden. Mein Spiel macht das und es funktioniert einwandfrei.


1
Ich vermute, Sie haben einen Wrapper geschrieben, der sich wie XNA verhält und die erforderlichen Methoden wie Update für Sie aufruft. Ich werde es versuchen, danke.
JensB

2

Die Antwort lautet: Tu das nicht. Wenn Sie kein Spiel machen müssen - dh; Sie möchten die Vorteile von XNA nicht nutzen. Warum? Sie sollten sich wirklich mit der Entwicklung einer benutzerdefinierten Software befassen, die das gewünschte Spiel erfolgreich simulieren kann - normalerweise ein Konsolensystem. Wenn Sie weitere Details angeben, werde ich meine Antwort mit einer weniger allgemeinen Antwort aktualisieren.


1
Ich kann Ihnen einen Grund nennen: Unit-Tests. Oft möchten Sie ein Stück oder einen Codeabschnitt testen, ohne Grafiken laden oder zeichnen zu müssen.
Stephen Tierney

3
@StephenTierney Ich kann Ihnen noch einen weiteren Grund nennen: Er versucht es nicht, er versucht einen Spieleserver (auf einem dedizierten Computer) zu betreiben. Bitte lesen Sie die Frage erneut und erwägen Sie, Ihre Ablehnung zurückzunehmen.
Vaughan Hilts


1

Um auf dem Vorschlag von untitled aufzubauen, können Sie einfach Verweise auf die DLLs einfügen und diese verwenden, ohne eine der Standardspielschleifen zu verwenden. Beispiele hierfür finden Sie in der Winforms-Lernserie des Creators Club: http://xbox.create.msdn.com/en-us/education/catalog/sample/winforms_series_2

Auch wenn Sie noch ausgefallener werden möchten, können Sie die gesamte XNA-Spieleschleife durch Ihre eigene ersetzen und den gesamten Prozess steuern. Weitere Informationen hierzu finden Sie unter /programming/6361691/custom-xna-game-loop-in-windows


1

Wenn Sie den Ausgabetyp eines XNA-Projekts in "Konsolenanwendung" ändern, öffnet die Anwendung beim Start einfach eine leere Konsole, ohne jemals das eigentliche Spielfenster zu öffnen. Dies kann nützlich sein für das, was Sie erreichen möchten, da Sie Tests durchführen möchten und die Konsole sehr einfach als Debug-Fenster verwenden können.


1

Sie können auch in Betracht ziehen, das Update zu überschreiben, Anrufe zu zeichnen und einfach zurückzukehren.

Rufen Sie auch nicht das Grafikgerät in Ihren Hauptspielklassen auf, da dies verhindern sollte, dass das xna-Fenster auf dem Spiel als Server instanziiert wird.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.