Für Anfänger in der Spieleentwicklung kann die Wahl der richtigen Game-Engine eine überfordernde Aufgabe sein. In dem folgenden Beitrag möchten wir die Game-Engine, MonoGame, evaluieren, damit Sie sehen können, ob es die richtige Game-Engine für Ihr Projekt ist.
Die Stärke von MonoGame als Game-Engine ist, dass es eigentlich keine ist. MonoGame ist ein Framework, um das herum man seine eigene Engine bauen kann, was Vor- und Nachteile für die Anwender bringt.
MonoGame richtet sich an Code und Programmierer, an Game Developer, die sich gerne die Hände schmutzig machen und maßgeschneiderte Tools haben wollen. Es ist auch die Engine der Wahl der Portierungshäuser, da es stark auf die Entwicklung auf mehreren Plattformen ausgerichtet ist.
MonoGame ist ein Open-Source-C#-Framework, das die Application Programming Interface (API) von XNA implementiert, Microsofts spätem Game-Development-Toolset, das 2013 in den Ruhestand ging. Es unterstützt außerdem alle .NET-Sprachen. MonoGame wurde 2009 zunächst als XNA Touch gestartet, ein Projekt, das von Jose Antonio Leal des Farias, einem Mitglied der XNA-Community, zur Erleichterung der mobilen Portierung ins Leben gerufen wurde.
Als Microsoft den Support von XNA einstellte, kündigte MonoGame an, dass es dies auch weiterhin tun würde. Seitdem hat der Linux-Experte Ethan Lee auch eine von MonoGame abgeleitete Neuimplementierung von XNA, genannt FNA, erstellt.
Obwohl XNA also schon lange tot und begraben ist, lebt es immer noch durch MonoGame und FNA sowie durch andere kleinere Open-Source-Frameworks.
„MonoGame war eine sehr solide Lösung für das Ende von XNA“, sagt Jean-Francois Major, Mitbegründer von Mercenary Kings und Flinthook-Entwickler Tribute Games. „Das XNA-Framework ist zwar etwas veraltet, aber es kann so gut wie alles verarbeiten, was man ihm entgegenwerfen kann.“
Entwickler, die MonoGame übernehmen, sind normalerweise Leute, die mit XNA gearbeitet haben und es einfacher fanden, in diesem Ökosystem zu bleiben. Das ist der Fall für Axiom-Verge-Entwickler Thomas Happ.
„Als ich 2010 zum ersten Mal daran dachte, Axiom Verge zu entwickeln, war es nur ein Projekt in meiner Freizeit und ich war nicht Teil eines Entwicklerprogramms“, sagte er. „Aber Microsoft hatte es möglich gemacht, mit XNA Spiele für die Xbox 360 zu entwickeln und da ich sie auch für Konsolen veröffentlichen wollte, habe ich mich darauf konzentriert. Als die nächste Konsolengeneration herauskam, war XNA bereits aufgegeben worden, aber MonoGame trat an seine Stelle und es gab Support für die PlayStation 4.“
MonoGame ist völlig kostenlos und unterstützt eine breite Palette von Plattformen: alle Windows-Plattformen natürlich, aber auch PS4, Xbox One, Switch, iOS, Android, PSVita, MacOS und Linux.
Was sind die Vorteile von MonoGame?
Die primäre Stärke von MonoGame ist seine Flexibilität. Da es eher ein Framework als eine Game-Engine an sich ist, können Entwickler ihre eigenen Engines schreiben und etwas herstellen, das genau ihren Bedürfnissen entspricht und ihnen große Autonomie verleiht.
„Es ist eher ein Satz praktischer C#-Bibliotheken als eine Engine, so dass man eine Menge kreativer Freiheit hat, während es gleichzeitig Dinge wie das Laden und Verarbeiten von Assets ermöglicht“, sagt Happ. „In anderen Engines ist man oft in eine bestimmte Art von Paradigma eingepfercht – man lernt, ihre Benutzeroberfläche zu benutzen, ihre Art, Entitäten zu erstellen und ihnen Verhalten hinzuzufügen.“
„Wenn Sie ein Programmierer sind, gibt Ihnen MonoGame die meisten Möglichkeiten, Ihre eigene Engine zu schreiben und sie so anzupassen, wie Sie es wollen. Sie enthält eine ganze Pipeline zur Verarbeitung von Assets, die Sie unverändert zum Laden von Texturen, Sounds, Schriftarten usw. verwenden können, die aber auch leicht für benutzerdefinierte Dinge wie das Laden von Daten auf benutzerdefinierter Ebene oder die Lokalisierung von Text und Ähnlichem modifiziert werden kann.“
MonoGame bietet im Wesentlichen ein Ökosystem, von dem aus man arbeiten kann, ohne die ganze Zeit die Hand halten zu müssen und ermöglicht es einem, seine eigenen Tools zu bauen.
„Für mich trifft es einen Sweet Spot zwischen zu viel Engine und zu wenig“, sagt James Silva, Studioleiter bei Ska Studios. „Für mich bedeutet zu wenig Engine, ein leeres Visual C++-Projekt zu öffnen und zu viel Engine bedeutet Unity oder Unreal. MonoGame lässt mich in C# programmieren und bietet mir einige nette grundlegende Funktionen des Frameworks (Contentverarbeitung, Sprite-Drawing, Musik/Audio, Input), was der einzige Ansatzpunkt ist, den ich brauche.“
„In den letzten 12 Jahren der Lebenszeit von Ska Studios habe ich eine Menge wirklich spezifischer Tools für die Erstellung von Inhalten für XNA und, in Erweiterung, MonoGame entwickelt. Während es also die Möglichkeit gibt, eines der vielen verschiedenen und zweifellos ausgezeichneten Unity-basierten Tools für die Contenterstellung zu verwenden, würde ich lieber meine eigenen verwenden, da ich mich mit ihnen recht gut auskenne. Spine ist wahrscheinlich ein hervorragendes Tool für 2D-Animationen, aber ich bin wirklich sehr produktiv mit meinem eigenen Animationswerkzeug, das ich 2007 erstellt habe und seit über einem Jahrzehnt iteriere.“
MonoGame ist großartig für die 2D-Entwicklung geeignet.
Während Sie MonoGame so anpassen können, dass es Ihren Bedürfnissen entspricht, wird das Framework besonders für Entwickler von 2D-Projekten empfohlen.
„Meiner Erfahrung nach ist MonoGame großartig für die Entwicklung von 2D-Spielen, bei denen die Engine einfach ist und die Tools speziell entwickelt wurden“, sagt Silva. „Ich habe XNA und MonoGame zur Entwicklung des Geschirrspülers verwendet: Dead Samurai, I Made a Game with Zombies in It, The Dishwasher: Vampir-Lächeln, Charlie-Mond und Salz und Zuflucht: alle Spiele mit 2D-Animation, benutzerdefinierten Engines, wirklich grundlegender Physik und einigen einfachen, benutzerdefinierten Shadern zur Nachbearbeitung“.
MonoGame erleichtert die plattformübergreifende Entwicklung.
MonoGame ist tief in der plattformübergreifenden Entwicklung verwurzelt – erinnern Sie sich, wie es als Projekt zum Support der Portierung von Spielen auf Smartphones begann? Und obwohl es auch untrennbar mit Windows-Plattformen verbunden ist, hat es sich inzwischen weit über den Aufgabenbereich von XNA hinaus entwickelt.
MonoGame bietet nicht nur diesen Multi-Plattform-Support – es ist auch ziemlich gut darin, fährt Flying Oak Games-Gründer Thomas Altenburger fort.
„Es kann auf jede Plattform ausgerichtet werden, und Spiele, die mit ihm erstellt wurden, lassen sich in der Regel leichter portieren“, sagt er. „Wenn man damit vertraut ist, ist es wirklich „einmal programmieren, überall laufen“. Die Sponsoren des Frameworks – SickHead Games zum Beispiel – sind ebenfalls sehr aktiv, um MonoGame mit jeder neu entstehenden Plattform kompatibel zu machen, was es zu einer sehr relevanten Wahl der Open-Source-Technologie macht.“
Happ fügt hinzu: „Auf neueren Plattformen wird alles nach C++ kreuzkompiliert, so dass die Vorteile von Compiler-Optimierungen genutzt werden können.“
MonoGame ist Open-Source.
Wie Altenburger gerade erwähnt hat, ist MonoGame ein Open-Source-Spiel, das einer bereits extrem vielseitigen Engine noch mehr Flexibilität verleiht. Es „bietet etwas mehr Kontrolle über das, was berechnet wird“, sagt er.
Happ fügt hinzu: „Da der gesamte Code Open-Source ist, können Sie ihn einfach ändern, wenn er etwas nicht tut, was Sie wollen. Dieser ist nicht hinter irgendeinem Unternehmen verschlossen, so dass keine Gefahr besteht, dass er wie bei XNA verschwindet“.
Es ist an dieser Stelle erwähnenswert, dass das MonoGame-Team keine Firma ist, sondern eine gemeinnützige, rein ehrenamtliche Organisation, die auf Spenden angewiesen ist. Die derzeitigen Projektleiter von MonoGame sind Tom Spilman, Mitbegründer des Entwickler- und Portierungshauses Sickhead Games und der erfahrene Entwickler Steve Williams, derzeit spezialisierter Manager in der Beratung bei Deloitte Digital.
C# macht MonoGame ideal für Programmierer und ermöglicht einen schnellen Iterationsprozess.
MonoGame ist der perfekte Rahmen für Programmierer, da C# eine schnelle Iteration ermöglicht, wodurch es einfach ist, Prototypen zu erstellen und Projekte schnell zum Laufen zu bringen – natürlich nur, wenn Sie diese C#-Erfahrung haben.
„Wenn Sie gerne in C# programmieren, genau wissen, wie Sie eine Aufgabe durch reinen Code angehen möchten, und sich nicht mit den verschiedenen Projektabläufen beliebter Engines befassen wollen, ist MonoGame perfekt“, sagt Silva. „Entscheidend ist, dass MonoGame auch fantastisch portabel ist. Meine Erfahrung mit Unity ist sehr begrenzt, aber ich habe Horrorgeschichten über Unity-Updates gehört, die in entscheidenden Krisenzeiten Gegenstände aus dem Asset Store zerstören“.
Major führt fort: „Für uns liegt die Stärke von MonoGame in seinem schnellen Iterationsprozess dank C#. Die Tatsache, dass es sehr leicht ist, ist ebenfalls ein Pluspunkt. Wir sind die Besitzer all dieser Systeme. Wenn etwas nicht richtig läuft, ist es wahrscheinlich unsere Schuld und wir haben die Macht, es selbst zu reparieren. Wir warten nie auf einen Partner, der das Problem für uns löst oder müssen die Mängel einer Engine umgehen“.
Durch Unity sind C#-Programmierer leichter zu finden.
Da C# eine gängige Programmiersprache ist, gestaltet sich die Rekrutierung recht einfach, wenn man ein Spiel mit MonoGame erstellt – und dafür können wir Unity danken.
„C#-Programmierer sind mit der Popularität von Unity sehr leicht zu finden und der Übergang zu MonoGame sollte sie nicht abschrecken“, sagt Major. „Es gibt auch zahlreiche Port-Häuser, die MonoGame-Projekte unterstützen.“
Was sind die Nachteile von MonoGame?
MonoGame hat Probleme mit 3D.
Einige der Schwächen von MonoGame werden offensichtlich, wenn Sie den vorherigen Abschnitt gelesen haben. Das erste ist, dass es nicht sehr gut mit 3D umgehen kann – das heißt nicht, dass es nicht kann, aber wenn Ihr Projekt in 3D ist, sollten Sie sich wahrscheinlich mit Unreal, Unity oder sogar CryEngine anstatt mit MonoGame beschäftigen.
„Da es keinen Szenen-Editor gibt, erfordert die Entwicklung von 3D-Spielen mit MonoGame mehr Wissen und die Bereitschaft, sich tief in Szenen-Compositing und Rendering zu vertiefen“, sagt Altenburger. „Die 2D-API hat den Erfolg von XNA und damit von MonoGame begründet – sie ist super einfach zu benutzen.“
MonoGame ist eher unbedeutend.
Wenn Sie Ihr erstes Projekt in Angriff nehmen wollen und nicht über viel Erfahrung verfügen, ist MonoGame wahrscheinlich nicht die richtige Engine für Sie. Sie können loslegen, wenn Sie ein Mindestverständnis von C# haben, aber wenn nicht und Ihr Projekt in 2D ist, wird GameMaker wahrscheinlich besser für Sie geeignet sein. Auf MonoGame muss man viel aufbauen.
„Es ist sehr ungeschliffen – die Entwickler müssen Tools bauen oder Möglichkeiten hinzufügen, um Daten aus anderen Quellen zu importieren und ihr eigenes Kollisionssystem zu erstellen und so weiter“, sagt Major. „Der Hauptnachteil von MonoGame ist, dass man nur eine Abstraktionsebene für die Plattform erhält, an der man arbeitet. Man hat keine Tools oder vorgefertigte Spielkomponenten. Das kann für jemanden, der gerade erst anfängt, sehr entmutigend sein und kann den Prozess der Inbetriebnahme des ersten Projekts verlangsamen.“
Happ führt weiter aus: „Es ist definitiv mehr auf Menschen ausgerichtet, die ihr eigenes Ding programmieren können. Es gibt kein WYSIWYG (What you see is what you get) oder grafische Bearbeitung, es gibt keine eingebauten Physik- oder Animationskomponenten, das muss man selbst machen oder eine Bibliothek finden, die das macht. Außerdem ist es, da es in einer verwalteten Sprache vorliegt, komplizierter, wenn Sie eine direkte Schnittstelle zur Hardware oder zum Speicher benötigen, als bei Engines, die C++ verwenden.“
MonoGame fehlt es an Dokumentation und Support.
Da MonoGame seine Wurzeln in XNA findet, das seit fast sieben Jahren im Ruhestand ist, sind Online-Ressourcen knapp. Es gibt eine kleine, aber starke Online-Community von MonoGame-Entwicklern, aber nur wenige offizielle Ressourcen.
„Die Nachteile von MonoGame sind der Mangel an Dokumentation und die Tatsache, dass das Zielpublikum hauptsächlich aus ehemaligen XNA-Entwicklern besteht“, sagt Altenburger. „Leute, die bereits darüber Bescheid wissen, sind typischerweise sehr gut damit vertraut und benötigen nicht unbedingt die Interaktion oder Dokumentation der Community.“
„Die meisten Tutorials und Dokumentationen sind fast 10 Jahre alt, stammen aus der XNA-Ära (vorausgesetzt, dass die Host-Webseiten nicht abgelaufen sind) und sind nicht ganz auf dem neuesten Stand der großartigen Arbeit, die in den letzten Tagen an dem Framework geleistet wurde. Auch die MonoGame-Experten sind nicht ganz auf dem Laufenden. Da sie ohne Dokumentation arbeiten – ohne ein Jahrzehnt der Praxis – verbreiten sie nicht so viel Wissen“.
Sie können einige Unterlagen auf dieser Seite finden, aber erwarten Sie keinen offiziellen Support. Wie wir bereits erwähnt haben, ist MonoGame ein rein freiwilliges, 100% freies Projekt, so dass es keinen Speicherplatz oder offiziellen, korporativen Service gibt, um Fragen von Entwicklern zu beantworten – es sei denn, Sie haben Zugang zu einem der Projekt-Leads über einen Verleger oder Plattformbetreiber.
„Für mich war der Support im Grunde unglaublich, obwohl ich denke, dass dies größtenteils darauf zurückzuführen ist, dass ich von Anfang an eine von Sony ermöglichte Verbindung zum Erfinder, Tom Spilman von Sickhead Games, hatte“, sagt Happ. „Ich denke, der Durschnittsmensch wird sich mehr auf seine Online-Foren verlassen müssen. Da es keine kostenpflichtige Engine oder Dienstleistung ist, gibt es meines Erachtens auch keinen Kundensupport, also müssen Sie die Dinge mit dem entsprechenden Verständnis angehen“.
Es ist schwierig, erfahrene MonoGame-Entwickler zu finden.
Während Happ der Meinung ist, dass die Rekrutierung erfahrener MonoGame-Entwickler im Wesentlichen so einfach ist wie das Finden von C#-Coder, glauben einige unserer Befragten, dass es tatsächlich nicht so einfach ist.
„Es ist schwer, ziemlich schwer“, sagt Altenburger über die Rekrutierung. „Echte MonoGame-Experten werden immer seltener und wenn Sie keinen Support bei der Portierung benötigen, dann liegt es an einer Handvoll Unternehmen weltweit, obwohl C#-Entwickler mit der Technik vertraut sein sollten.“
MonoGame erfordert Zeit und Mühe, um seine Flexibilität entfalten zu können.
Ein weiteres Thema, über das unsere Befragten uneinig waren, ist die Frage, wie schnell man etwas mit MonoGame zum Laufen bringt. Während Major vorhin einen schnellen Iterationsprozess lobte, argumentiert der Programmierer von Tea for Two, Garry Williams, dass MonoGame nicht schnell sei. Das ist der Grund, warum das Studio auf Unity für Snowtopia umgestiegen ist.
„MonoGame ist nicht gut darin, Dinge schnell zu erledigen“, sagt er. „Wenn es ein kleines Projekt ist – wenn Sie nicht schon Ihre ganze Zeit damit verbringen, Ihre eigene Codebasis zu lesen – wird es einfacher sein, einfach Unity zu verwenden. Wir haben Snowtopia eigentlich mit MonoGame begonnen, das ich zuvor für mehrere Projekte verwendet habe. Im Allgemeinen bevorzuge ich MonoGame, weil es praktischer und flexibler ist. Aber da das Spiel in 3D ist, bin ich auf Unity umgestiegen, um die ganze Leichtigkeit einer Rendering-Engine und eines Materialsystems zu haben – es bewältigt einfach die ganze zusätzliche Komplexität, die man in 3D machen kann.“
Und er ist nicht der einzige, der glaubt, dass für einige Aspekte Unity eine bessere Alternative ist.
„Ich habe an Unity herumgebastelt und konnte im Handumdrehen einige Nachbearbeitungseffekte wie Bloom und chromatische Aberration hinzufügen“, sagt Silva. „In den verschiedenen MonoGame-Engines, die ich gemacht habe, erfordert das Hinzufügen von so etwas eine gewisse Umstrukturierung, die immer alles zu zerstören droht.“
Tipps für neue MonoGame-Nutzer.
Verlassen Sie sich auf die Community.
Wie immer, wenn es darum geht, den besten Ansatz für den Start einer neuen Engine zu diskutieren, dreht sich der Großteil der Tipps um die effektive Nutzung der Community. MonoGame hat gut besuchte offizielle Foren und einen kleinen, aber ziemlich aktiven Discord-Server.
„Die Community ist großartig – voller Leute, die wollen, dass die Technik vorwärts kommt und großartige Entwickler, die ziemlich offen sind, was den Austausch von Wissen angeht“, sagt Altenburger. „Es gibt sehr coole Interaktionen mit sehr fähigen Studios, die die Technologie seit der XNA-Ära nutzen.“
Major fügt hinzu, dass der MonoGame-Sponsor Sickhead Games und der FNA-Erfinder Ethan Lee über die Jahre sehr hilfreich und ansprechbar waren, wobei ihre Arbeit ein „Gottesgeschenk“ für die XNA-Entwickler war.
„Die Community ist wahrscheinlich viel kleiner als die von Unity, aber sie ist ziemlich aktiv“, sagt Silva. „Ich hatte keine großen Probleme mit MonoGame, aber ich bin in der Lage, alle Probleme in der einen oder anderen Form ziemlich schnell durch die Community zu lösen.“
Beschränken Sie Ihre Web-Suche nicht auf MonoGame.
Da MonoGame nur eine der verschiedenen Entwicklungen von XNA ist, kann es sein, dass Sie bei Schwierigkeiten mehr Glück haben werden, wenn Sie Ihren Horizont ein wenig erweitern.
„Wenn Sie nach Hilfe oder Tutorials suchen, sollten Sie sich unbedingt die Ergebnisse füür XNA, FNA oder MonoGame ansehen“, sagt Major. „All diese sollten das gleiche Verhalten erreichen, das XNA einst zeigte. Dadurch wird die Menge der Ergebnisse, die Sie erhalten können, erweitert.“
Happ rät, bei der Prüfung Ihrer Optionen auch FNA selbst und nicht nur MonoGame zu berücksichtigen.
„FNA basiert auf einem früheren Zweig von MonoGame, wurde aber mit der Idee entwickelt, eine einzige Binärdatei für Windows, Mac und Linux verwenden“, erklärt er.
Haben Sie keine unrealistischen Erwartungen – MonoGame ist nichts für Anfänger.
Wenn Sie sich für die Nutzung von MonoGame entscheiden, müssen Sie sich voll und ganz bewusst sein, worauf Sie sich einlassen. Wie unsere Interviewpartner ausführlich diskutiert haben, ist MonoGame streng genommen keine Game-Engine, also erwarten Sie nicht, dass es sich wie eine solche verhält.
„Erwarten Sie keinen vollwertigen Redakteur, bei MonoGame geht es hauptsächlich darum, Dinge auf niedriger Ebene zu abstrahieren, um die plattformübergreifend zu machen“, sagt Altenburger. „Die Entwicklung einer Engine und der dazugehörigen Werkzeuge liegt eigentlich bei Ihnen. Sie eignet sich in der Regel am besten für Leute, die eine feine Steuerung und eine großartige Portabilität von 2D-Spielen wünschen.“
Vielleicht wird Ihnen zu Beginn klar. Dass MonoGame nichts für Sie ist, fährt Happ fort; „Ich würde sagen, wenn Sie ein erfahrener Programmierer sind, der es gewohnt ist, C++ oder C# zu benutzen, werden Sie feststellen, dass MonoGame Ihnen viel Zeit und Energie spart. Aber wenn Sie gerade erst anfangen, ist es vielleicht einfacher, mit etwas wie Unity zu beginnen.“
Silva schließt mit den folgenden Satz seine Worte ab: „Wenn Sie lieber programmieren, als sich mit einer komplexen Engine zu befassen und Sie mit der Entwicklung von 2D-Spielen beginnen, ist MonoGame einen Versuch wert.“
Vielen Dank für Ihren Besuch.