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 ( .png
in 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 .xnb
Dateien zu entwickeln? Oder ist es möglich, ohne den Content-Compiler von XNA zu entwickeln? Wenn ja, wie dann?
Antworten:
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
SpriteFont
die 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
.png
Dateien und.wav
Dateien 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.quelle
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.quelle
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 :)
quelle
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:
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.
quelle
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: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.
quelle