Wie kann ich in MonoGame entwickeln, ohne auf .xnb-Dateien angewiesen zu sein?

7

Ich bin neu in der Spieleentwicklung und MonoGame scheint ein anfängerfreundliches Framework zu sein, also dachte ich, ich würde damit anfangen. Als ich jedoch anfing, Tutorials darüber zu lesen, bemerkte ich ein allgemeines Thema: MonoGame benötigt im aktuellen Zustand den Content-Compiler von XNA, da es keinen eigenen hat. Das einzige Problem, das ich damit habe, ist, dass ich XNA nicht installieren kann (befolgte die Anweisungen im Web und installierte sogar den Game Marketplace). Ich bin übrigens unter Windows 8.1.

Kurz gesagt, ich habe den Versuch, XNA zu installieren, aufgegeben. Ich habe jedoch ein bisschen mit MonoGame herumgespielt und festgestellt, dass Sie ( .pngin meinem Fall) Rohbilder anstelle der konvertierten Bilder verwenden können .xnb. Ich habe keinen Sound ausprobiert, daher weiß ich nicht, ob er funktionieren wird. Oder andere Vermögenswerte für die Angelegenheit.

Meine Frage ist, ist es möglich, in MonoGame ohne Verwendung von .xnbDateien zu entwickeln? Oder ist es möglich, ohne den Content-Compiler von XNA zu entwickeln? Wenn ja, wie dann?

Truerror
quelle
1
"Wie viel schwieriger" ist ein subjektives Thema, daher habe ich dieses Stück aus Ihrer Frage heraus bearbeitet.
@ Josh - Ich bin völlig anderer Meinung. Komplexitätsgrade können objektiviert werden. "Wie viel schwieriger" kann konzeptionell auf "Komplexitätsgrade" abgebildet werden.
OCDev

Antworten:

4

Ja, Sie können mit MonoGame entwickeln, ohne sich auf XNB-Dateien verlassen zu müssen. Ich mache es jetzt seit über einem Jahr und zum größten Teil ist es ziemlich einfach.

Die Hauptsache, mit der Sie wahrscheinlich Probleme haben werden, ist SpriteFontdie von. Ich rendere meine Schriftarten vorab auf eine Textur und rendere sie wie normale Sprites. Ich habe hier ein kleines Tutorial: http://www.craftworkgames.com/blog/tutorial-bmfont-rendering-with-monogame/

Ich hatte noch nie Probleme mit .pngDateien und .wavDateien funktionieren auch einwandfrei, aber Sie müssen sicherstellen, dass sie das richtige Format haben. Ich habe nicht wirklich versucht, Shader oder irgendetwas anderes zu verwenden, aber ich habe ein paar komplette Spiele erstellt.

Handwerksspiele
quelle
4

Sie können XNB Builder verwenden . Das Programm benötigt weiterhin XNAs .dll, aber Sie können sie einfach herunterladen und mit dem Programm in einen Ordner legen.

Grzegorz Brzęczyszczykiewicz
quelle
3
Die direkte Verteilung der XNA-DLLs ist meines Wissens von der EULA nicht gestattet. Ich würde diesen Ansatz nicht empfehlen.
Ist es legal, wenn Sie die XNA-DLLs legal erhalten haben (wie vom Installationsprogramm)?
Gustavo Maciel
Wenn Sie sie von einer installierten Version von XNA auf Ihrem System haben, ist das in Ordnung. Niemand (außer MS) darf die DLLs jedoch direkt verteilen. Daher ist es leider gegen die EULA, sie auf eine Weise zu erhalten, die nicht vom XNA-Installationsprogramm stammt.
Ekzo hat nicht empfohlen, XNA-DLLs von einem inoffiziellen Ort herunterzuladen.
Danyal Aytekin
Sie müssen auch XNA Framework Redistributable 4.0 installieren, um dies ausführen zu können.
Minh Nguyen
1

Es ist jetzt nichts mehr wert, da Monogame jetzt über ein eigenes Content Pipeline Builder-Tool verfügt , das alle Abhängigkeiten von den alten XNA-Framework-DLLs entfernt.

Es enthält eine Befehlszeile (oben verlinkt) sowie ein GUI-Tool , mit dem Sie Ihre XNB-Dateien aus Texturen usw. generieren und dann in Ihr Spielprojekt kopieren können.

Wenn Sie in Visual Studio arbeiten, verfügt die .mgcb-Datei über eine eigene Build-Aktion (MonogameContentReference), und Ihre XNB-Dateien werden als Teil Ihres Visual Studio-Buildprozesses generiert, wodurch ein ziemlich nahtloser oder zumindest ähnlicher Workflow entsteht zu dem, was XNA mit seinen Visual Studio-Projektvorlagen bereitgestellt hat.

Persönlich bewahre ich meine Assets normalerweise in einem separaten Ordner neben meinem Game Project-Ordner auf und lege die .mgcb-Datei dort ab. Ich füge dann die .mgcb-Datei als Referenz für verknüpfte Elemente in das Spielprojekt ein.

Altes Thema, aber ich fand es so, vielleicht wird es auch jemand anderes tun :)

Jonathan Mast
quelle
0

Wie von Craftworkgames erwähnt, können Sie ohne XNB entwickeln (zumindest mit Texturen und einigen Audioformaten).

Sie können eine PNG-Datei mit einem Stream-Objekt laden (muss ein durchsuchbarer Stream sein, daher müssen Sie möglicherweise von einem StreamReader in einen Speicher-Stream kopieren und dann den Speicher-Stream selbst an den Textur-2d-Konstruktor übergeben).

Das gleiche sollte mit Wav-Dateien möglich sein.

Wenn Sie jedoch FBX-Modelle oder .X-Modelle laden möchten, bin ich mir nicht sicher, ob die Model / Mesh-Objekte direkt aus einem durchsuchbaren Dateistream initialisiert werden können.

Hinweis:

  • Ich habe auch Texturen initialisiert, indem ich sie aus einem HTTP-Stream geladen habe (aus dem HTTP-Stream lesen - in einen durchsuchbaren Speicher-Stream kopieren - Stream an den Textur-2d-Konstruktor übergeben), wodurch mein Spiel Texturen von einer Website über HTTP-Protocal anstelle einer Festplatte herunterladen konnte.

Shader können zur Laufzeit generiert werden - initialisiert aus einem Byte-Array, und ich denke auch aus einem String, der Code enthält. Es sollte möglich sein, Shader in Echtzeit zu generieren oder sie sogar von Remote-Quellen oder von der Festplatte zu laden, ohne dass XNB-Dateien erforderlich sind.

Ich bin mir nicht sicher, ob die DirectX-Version des MonoGame dies noch unterstützt (im Repo), aber ich denke, es sollte nicht schwierig sein, die aktuellen OPENGL-basierten Builds zu verwenden.

Wenn Sie vermeiden möchten, XNB verwenden zu müssen, ist es möglicherweise eine gute Idee, einen eigenen Content Manager zu erstellen, um die XNA / Monogame-Versionen von Grund auf neu zu ersetzen, wodurch die gesamte Content-Pipeline untergraben wird. Dies kann jedoch auch bedeuten, dass Sie Ihre eigenen Formate unterstützen, die nicht erforderlich sind XNA-spezifische Funktionen.

Codie Morgan
quelle
-1

Ich würde sagen, Sie nähern sich dem Problem falsch.

Versuchen Sie zunächst, das XNA-Problem zu lösen, da es wahrscheinlich ist, dass beim MonoGame-Projekt XNA als Open Source-Implementierung ausgeführt wird und ähnliche oder dieselben Dateitypen auf dieselbe Weise verwendet werden. Obwohl MonoGame nicht von der korrekten Installation von XNA abhängig ist (siehe Bearbeiten - Danke Josh), sollten Sie einige Dinge auf XNA-Probleme überprüfen:

  • Erfüllt Ihre Maschine die Mindestanforderungen für die Entwicklung?
  • Haben Sie alle Voraussetzungen installiert? Welche Art von Fehlern bekommen Sie?
  • Manchmal können frühere Versionen von .net Framework und XNA Studio stören. Stellen Sie sicher, dass Sie diese deinstallieren, bevor Sie XNA installieren, um sicherzustellen, dass Sie bei der Installation von vorne beginnen.
  • Könnten Sie vollständig im XNA-Studio arbeiten, ohne sich um MonoGame kümmern zu müssen, und es später problemlos auf MonoGame portieren? Da dies die ursprüngliche Absicht von MonoGame war, bestehenden Entwicklern eine einfache Portierung zu ermöglichen, wäre dies ein praktikabler Weg.

Wenn Ihr Computer derzeit nicht mit XNA arbeiten kann, kann es später zu Problemen mit MonoGame kommen. Es lohnt sich immer, zuerst Installationsprobleme in der Entwicklungsumgebung auszubügeln, bevor Sie mit einem Projekt beginnen.

Bearbeiten: Wie Josh in den Kommentaren erwähnt hat - XNA wurde aufgegeben. Ich hatte mich selbst nicht wirklich erkannt. Obwohl das Beispiel des XNA-Installationsprogramms, das sich auf MonoGame auswirkt, in diesem Fall kein Problem darstellt, halte ich es dennoch für erwähnenswert, dass Installationsprobleme vor Beginn der Projektentwicklung behoben werden müssen.

Tom 'Blue' Piddock
quelle
Ich glaube, meine Maschine erfüllt die Mindestanforderungen. Es ist ein i5 2,5 GHz der 2. Generation mit 4 GB Speicher und Windows 8.1. Über die Voraussetzungen, ja, ich habe sie installiert. In der folgenden Reihenfolge: VCS 2010 Express, Spiele für Windows Marketplace und dann XNA. XNA konnte meine Kopie von VCS2010 nicht erkennen und lehnte die Installation ab.
Truerror
XNA wurde aufgegeben, und obwohl es auf vielen modernen Computern technisch funktioniert, hat sich das Installationsprogramm als sehr spröde und nicht sehr zukunftssicher herausgestellt. Daher ist es nicht unbedingt richtig, dass ein Problem bei der Installation von XNA zu einem Problem führt, das sich auf MonoGame auswirkt . Diese Antwort bezieht sich jedoch nicht wirklich auf die gestellte Frage. Dies ist immer noch eine gültige Abfrage, unabhängig davon, ob ein Problem mit der XNA-Installation einer anderen Person vorliegt oder nicht.
Nun, MonoGame selbst lässt sich problemlos auf meinem System installieren. Es ist XNA, bei dem ich Probleme bei der Installation habe. Tools wie XNABuilder und XNA Content Compiler sind nett, aber sie müssen XNA installiert haben. Im Moment folge ich also dem Vorschlag für Craftworkgames und verwende stattdessen Rohdaten. Neu ist, dass der MonoGame-Content-Compiler im Gange ist und höchstwahrscheinlich in der nächsten Hauptversion verfügbar sein wird.
Truerror
Gut, gut zu wissen, es tut mir leid, dass ich Ihre Frage nicht direkt beantwortet habe, aber ich habe so viele Probleme gelöst, indem ich mir die Zeit genommen habe, die Dinge richtig zu installieren und diese Probleme zuerst zu lösen - dachte, es sei wichtig zu erwähnen.
Tom 'Blue' Piddock