Ich habe versucht, denselben 2D-Spielprototyp in React, Unity, Godot, Construct, Game Maker und Phaser zu erstellen. Folgendes habe ich gefunden.

Ich bin ein Entwickler von Tabletop-Spielen. Bei der Entwicklung eines neuen Kartenspiels habe ich beschlossen, einen digitalen Prototyp zu erstellen, der mir hilft, Simulationen durchzuführen und einen Proof of Concept problemlos an Mitarbeiter weiterzugeben.

Ich habe einige Hintergrundinformationen in JavaScript und C #, und ich habe genau so viele dargelegt: indem ich übermäßig viel Zeit in "Welches Framework sollte ich verwenden" -Threads verbracht und Dokumentation gelesen habe, ohne tatsächlich etwas zu machen.

Flash vorwärts viele Monate, und ich habe jetzt mehr Zeit damit verbracht, in React, Unity, Godot, Construct 3, Game Maker Studio 2 und Phaser 3 zu arbeiten (und mit ihnen zu ringen), um zu verstehen, was sie zum Ticken bringt.

Zugegeben, ich glaube, ich habe in jedem von ihnen viel mehr Zeit verbracht als nötig, um mein kleines Spiel zu machen, und ich hätte wahrscheinlich einfach beim ersten bleiben und mich durch den Prototyp irren können. Ich hoffe, dass die folgenden Informationen für alle anderen hilfreich sind, die nach einer Engine oder einem Framework suchen.

Einige Vorbehalte: Ich versuche nicht, eine Engine oder ein Framework über die anderen zu verkaufen, und ich schlage auch nicht vor, dass eines oder eines dieser Frameworks für Ihr Spiel besser funktioniert als ein anderes. Ich vergleiche auch nicht die Preise, die Back-End-Funktionalität oder die Plattformbereitstellung. Abhängig von Ihren Anforderungen können die folgenden Informationen für Sie von unterschiedlichem Wert sein.

Darüber hinaus basiert diese Erfahrung auf der Entwicklung eines 2D-Kartenspiels, sodass ich nicht auf 3D-Engines, Physik usw. eingehen werde.

Sie können auch für die TL; DR nach unten springen.

der Prototyp

Mein Spiel Entromancy: Hacker Battles ist ein wettbewerbsfähiges Cyberpunk-Kartenspiel mit TCG- Lichtmechanik . Sie können mehr auf unserer Website lesen oder sehen, wie es in diesem Video abgespielt werden soll. Es genügt jedoch zu sagen, dass als Kartenspiel ein potenzielles digitales Framework erforderlich ist, um grundlegende Dinge wie Statusverwaltung, Benutzeroberfläche, Drag-and-Drop-UX und Back-End-Hooks für die Implementierung von Multiplayer zu unterstützen.

In Anbetracht dieser Anforderungen, erkundete ich die folgenden Rahmenbedingungen und Motoren zu sehen , welche am besten geeignet wären für mein Spiel zu machen ... statt tatsächlich macht das Spiel (Ich bin glücklich , zu sagen , dass jetzt , dass ich auf einem Rahmen angesiedelt, Ich mache viel mehr Fortschritte.

Sie können hier auf eine spielbare Version zugreifen, und obwohl das Spiel weiter fortgeschritten ist als der Live-Prototyp vermuten lässt, ist diese Version ziemlich stabil (zumindest in Chrome).

Reagieren

Nachdem ich in React bereits einen Charaktergenerator-Prototyp für ein von mir entworfenes Tabletop-Rollenspiel erstellt hatte, dachte ich, ein natürlicher Schritt wäre, dem Framework einen Dreh für das Kartenspiel zu geben. Ich fand staatlichen Verwaltung ein Kinderspiel zu sein (es ist , was Reagieren tut , nachdem alle), während der Umsetzung einfach per Drag-and-Drop - Funktionalität für Karten erwies sich als ein Alptraum.

Es gibt einige Bibliotheken, die beim einfachen Ziehen und Ablegen helfen können (z. B. React DnD), aber ich fand, dass ich bei einem Kartenspiel eine elegantere Lösung für Dropzones brauchte, da Hacker Battles sehr spezifisch ist, welche Karten dies können wo und wann gespielt werden.

Diese Erfahrung hat mich dazu gebracht, boardgame.io zu testen, das zusammen mit React funktionieren kann. Dies erforderte jedoch letztendlich, dass ich zusätzlich zu einem bestehenden Framework ein anderes Framework lernte, das für meine Zwecke nicht ideal war.

Einheit

Aus allgemeinem Interesse hatte ich viel Zeit in Unity verbracht, um Tutorials zu erstellen und den Umgang mit dem Editor zu lernen, bevor ich versuchte, den Prototyp des Kartenspiels damit neu zu erstellen. Der Asset Store ist eine großartige Ressource, und es gibt so viele offizielle und inoffizielle Dokumentationen, dass ich zuversichtlich war, eine Antwort auf jedes Problem zu finden, auf das ich stoßen könnte.

Meine bisherigen Erfahrungen mit Unity waren gemischt. Ich arbeite sehr gerne in C # und alles, was mit Code zu tun hat, war eine relativ schmerzfreie Erfahrung. Unity ist jedoch sehr spezifisch in Bezug auf seine Implementierung und kann sich manchmal kontraintuitiv anfühlen.

Der Herausgeber hingegen ist ein Bär, mit dem man arbeiten kann. Um das volle Potenzial von Unity auszuschöpfen, müssen Sie lange Zeit mit der Benutzeroberfläche ringen, um zu verstehen, wo sich alles befindet und wie Sie es verwenden können. Es ist auch verzweifelt hinter der Zeit mit der Entwicklung von 2D-Spielen zurück und versucht eindeutig, eine hauptsächlich 3D-Engine in eine 2D-Ebene zu reduzieren, mit gemischten Ergebnissen.

Um fair zu sein, ich arbeite sehr gerne im Unity-Editor, so klobig es auch ist. Wenn Sie jedoch nach einer 2D-Spiel-Engine suchen, ist Ihre Lebensqualität an anderer Stelle viel höher (sehen Sie sich ein Video über das Animationssystem von Unity an oder erreichen Sie Pixel-Perfektion, und Sie werden sehen, was ich meine).

Letztendlich ist Unitys Umgang mit dem 2D-Raum etwas komplexer als ich es für meinen Prototyp benötige, aber ich werde für andere Arten von Spielen darauf zurückkommen.

Außerdem eine Seitenleiste, die für manche nützlich sein könnte: Ich war anfangs sehr aufgeregt über den Asset Store, mit der Idee, eine Kartenspielvorlage zu kaufen, die mir den Entwicklungsprozess erheblich erleichtern würde. Es hat nicht geklappt. Die meisten von ihnen waren MTG / Hearthstone / etc. Klone, die meinerseits genauso viel Entwicklungszeit benötigen würden, um sie für mein Kartenspiel umzustrukturieren, als würden sie einfach von vorne anfangen.

Godot

Mein erster Gedanke bei der Begegnung mit Godot war: "Open Source Game Engine, die C # unterstützt? Melde mich an!" Dann habe ich es heruntergeladen, ein paar grundlegende Tutorials durchgearbeitet und es beim Build abstürzen lassen. Hurm.

Mehrere Google-Suchanfragen, Neuinstallationen und Haare, die später gezogen wurden, stellten fest, dass dies etwas mit meiner Version von VS Build zu tun hatte (glaube ich?), Was mich in ein separates Kaninchenloch führte. Ich wusste aus Erfahrung, dass andere Engines - darunter auch Unity-Chef - Probleme verursachen können, die völlig außerhalb Ihres eigenen Codes liegen, aber dies war eine ärgerliche Hürde, die wahrscheinlich den Rest meiner Erfahrung mit Godot beeinflusst hat.

In Bezug auf den Editor gefiel mir die knotenbasierte Implementierung von Godot sehr gut, die ich tatsächlich als kontraintuitiv empfand, da sie aus Unitys Fertighäusern stammte, sich aber schließlich erwärmte. Ich würde sogar sagen, dass die 2D-Funktionalität besser ist als die von Unity, aber es fehlen die Community, der Asset Store (siehe Seitenleiste oben) und insbesondere die Dokumentation von Unity. Wenn Sie beispielsweise in C # mit Godot arbeiten möchten, sollten Sie darauf vorbereitet sein, im benutzerdefinierten GDScript der Engine nach Antworten zu suchen und diese dann in C # zu übersetzen.

Ich habe jedoch von Menschen gehört, die mit Godot große Erfolge bei der Verwendung von GDScript erzielt haben. Wenn Sie also bereit sind, die Zeit zu investieren, um es zu lernen, werden Sie vielleicht das genießen, was Godot zu bieten hat.

Konstrukt 3

In den oben aufgeführten Vorbehalten habe ich erwähnt, dass ich die Preisgestaltung nicht als Diskussionspunkt einbeziehe. Trotzdem habe ich das Gefühl, dass ich Construct 3 ansprechen muss, da es sich in meiner Erfahrung als wirkungsvoll herausgestellt hat.

Im Gegensatz zu den anderen hier aufgeführten Game-Engines, die größtenteils kostenlos verwendet werden können (Game Maker Studio 2 bietet eine kostenlose 30-Tage-Testversion), befindet sich die überwiegende Mehrheit der Funktionen von Construct hinter einer Pay-Wall und einer Abonnementgebühr von Das. Pfui.

Ich wirklich, wirklich wie der Schnitt des Fock der Baukonstruktion für einfache 2D - Spiele. Der Editor fühlt sich ein bisschen wie ein Upgrade von MS Paint an, aber er verwaltet die Sprite- und Objektverwaltung sehr gut und ist einfach zu bedienen. Ich mag es nicht, dass es einen "visuellen Skript" -Stil verwendet, aber sie haben kürzlich die Funktion hinzugefügt, einfaches altes JavaScript zu schreiben, und es scheint mehr oder weniger zu funktionieren.

Ich konnte in kurzer Zeit eine sehr rudimentäre Architektur für den Prototyp erstellen, bevor ich die Construct 3-Demo (die in einem Browser ausgeführt wird) schloss ... und später alles mit einer neuen Demo erneut versuchte. Zumindest für dieses Kartenspiel könnte ich mit Construct 3 viel anfangen, aber ich bin einfach nicht bereit, 99 US-Dollar pro Jahr (oder mehr als Unternehmen) für einen Prototyp zu zahlen.

Game Maker Studio 2

YoYo Games hat offensichtlich viel Arbeit geleistet, um Game Maker Studio 2 zugänglich und leicht navigierbar zu machen. Von allen Engines, die ich für dieses Projekt verwendet habe, gefällt mir der GMS-Editor am besten. Bei einem kleinen Projekt ist es einfach, sich zurechtzufinden und Ihrem Geschäft nachzugehen. Ich vermute jedoch, dass ein größeres Projekt ziemlich schnell außer Kontrolle geraten könnte.

Dies könnte durch die proprietäre Sprache von Game Maker Studio, GML, beeinflusst werden (obwohl GMS 2 visuelles Scripting unterstützt, das ich nicht verwendet habe). Es funktioniert, aber wenn Sie aus einer anderen OOP-Sprache (oder wirklich einer anderen weit verbreiteten Sprache) darauf zugreifen, können Sie sich bei der Implementierung am Kopf kratzen oder herausfinden, wie einige Dinge zu tun sind. Wenn Sie ein Anfänger sind oder bereit sind, Zeit damit zu verbringen, herauszufinden, wie GMS GML verwenden möchte , wird es Ihnen wahrscheinlich gut gehen.

Ich habe einige Eigenheiten bei der Drag-and-Drop-Funktion von Game Maker Studio festgestellt. Die Erkennung von Mauszeigern beim Ziehen ist ein wenig wackelig und erfordert ein Gerüst, damit die Arbeit korrekt funktioniert.

Ich denke - und das ist ganz persönliche Präferenz und Faulheit meinerseits -, wenn GMS die Möglichkeit bieten würde, eine andere, nicht proprietäre Programmiersprache zu verwenden, würde ich die Zeit damit verbringen, hier mehr Schaden anzurichten. Ich bin alle dafür, während der Arbeit mehrere Fähigkeiten zu verbessern, während es sich nicht lohnt , die Zeit zu verbringen, um Experte für den GMS-Editor und GML zu werden, ohne dieses Wissen einfach an anderer Stelle anwenden zu können.

Trotzdem ist es ein ziemlich funktionsfähiger 2D-Editor, und obwohl die Community-Unterstützung möglicherweise nicht mit der von Unity vergleichbar ist, ist sie dennoch ziemlich gut. Beachten Sie auch, dass Sie nach Ablauf Ihrer kostenlosen Testversion zahlen müssen, um Game Maker Studio 2 weiterhin verwenden zu können.

Phaser 3

Phaser ist ein leichtes Open-Source-JavaScript-Spielframework. Es gibt einige Phaser-IDEs, aber wenn Sie von der Art sind, die hauptsächlich mit Code arbeiten möchten, können Sie hier mit Atom, Sublime oder Ihrem Lieblingseditor landen.

Phaser 2 war und ist weit verbreitet und gut dokumentiert. Es gibt eine Menge Tutorials, auf die man zurückgreifen kann. Phaser 3 ist das Gegenteil. Es hat eine vergleichsweise hohe Lernkurve für Anfänger, mit einer Reihe von Beispielen und wenig Kontext.

Viele der Tutorials unterstützen Phaser 2, und während das Lernen übertragbar ist, ist der Code dies nicht. Darüber hinaus haben die Entwickler kürzlich angekündigt, die Unterstützung auf Phaser 4 (und TypeScript anstelle von ES6) zu verlagern. Dies ist nicht besonders hilfreich, wenn Sie Zeit mit Phaser 3 verbracht haben.

Wenn Sie kein professioneller Programmierer sind (ich bin es nicht) und mit ES6-Klassen und JavaScript-Best Practices auf dem neuesten Stand sind (ich war es nicht), werden Sie möglicherweise schnell frustriert, wenn Phaser keine Hand hält und Ihre einrichten muss eigene IDE und Workflow (ich war).

Ich habe jedoch festgestellt, dass es sich um ein leistungsstarkes, leichtes Framework handelt, das viele Dinge viel effizienter erledigt als andere Spiele-Engines. Die Drag-and-Drop-Funktionalität für das Kartenspiel war ein Kinderspiel, und die Möglichkeit, Kartentypen in Klassen zu unterteilen (ähnlich wie bei Unitys Fertighäusern), hat einen Teil der kognitiven Belastung, die für diese Art von Spiel erforderlich ist, unterteilt.

Wenn Sie ein Front-End-Entwickler sind, mögen Sie vielleicht die Codierung von Pixelkoordinaten für alles, aber meine Güte, ist diese mühsame Arbeit. Wenn Sie nicht mit JavaScript auf dem neuesten Stand sind, werden Sie höchstwahrscheinlich in Nicht-Phaser-Kreisen nach Antworten suchen und diese dann auf Ihr Projekt anwenden, was vermutlich seinen eigenen Vorteil hat.

Ein weiterer Hinweis für den Fall, dass es nicht klar ist: Phaser 3 enthält zwar einige offizielle Dokumentationen und Beispiele, aber nicht die Community- oder Stack Overflow-Antworten, die viele andere Spiele-Engines genießen. Wenn Sie auf ein Problem stoßen oder etwas nicht herausfinden können, müssen Sie Ihre eigene Lösung finden oder Ihre Frage auf dem Phaser Discord-Server veröffentlichen, was meiner Erfahrung nach hilfreich war.

Fazit

In Anbetracht all dessen ist der Prototyp, an dem ich festgehalten habe und den ich weiter iteriere, der, den ich mit Phaser 3 gebaut habe. Mir ist klar, dass dies antiklimaktisch sein kann, da Phaser nicht von Natur aus "besser" ist als der andere Frameworks und Engines bei der Entwicklung von 2D-Spielen (außer vielleicht React, das nicht versucht, ein Konkurrent im Bereich digitaler Spiele zu sein).

Phaser scheint jedoch das Drag-and-Drop- und Game-Loop-Management für Hacker Battles reibungsloser zu handhaben , und für meine Zwecke ist das wichtig. Ich genieße es auch, dass ich mit Phaser stärker in die JavaScript-Ökosysteme und -Communitys investieren muss, aber ich bin trotzdem daran interessiert, damit es sich wie ein Bonus anfühlt.

Wenn Sie eher vom Typ "Was kann ich verwenden, um schnell etwas zu erstellen, ohne sich um den Kontext zu kümmern, in dem sich die Engine befindet", YMMV.

TL; DR

Reaktion: ideal für die Frontend-Entwicklung. Ich würde es nicht für Spiele verwenden, insbesondere für Drag & Drop.

Einheit: Sie können jede Art von 2D-Spiel erstellen, wenn Sie bereit sind, mit dem Editor und den zugrunde liegenden 3D-Eigenheiten zu ringen. Großartige Community-Unterstützung und C # ist großartig. Der Asset Store ist vorhanden, für Ihre Zwecke jedoch möglicherweise nicht nützlich.

Godot: Open Source und unterstützt GDScript, C #, sogar C ++ und Python, wenn Sie bereit sind, viel zu tun. Gute 2D-Implikationen, aber bei weitem nicht so viel Community-Unterstützung wie Unity. Auch meine Erfahrung war fehlerhaft.

Konstrukt 3: sehr einfach zu bedienen, hohe Eintrittsbarriere aufgrund der Abonnement-Paywall. Visuelles Scripting kann Ihnen auf die Nerven gehen, wenn Sie Code verwenden oder lernen möchten, obwohl es jetzt JavaScript-Unterstützung gibt.

Game Maker Studio 2: Benutzerfreundlicher Editor mit guter Community-Unterstützung. GML oder visuelles Scripting sind vielleicht nicht Ihre Sache, wenn Sie aus einer anderen populäreren Programmiersprache kommen, aber hey, wenn Sie in Rom sind. Erfordert außerdem die Zahlung nach einer 30-tägigen kostenlosen Testversion.

Phaser 3: Erwarten Sie, alles zu codieren, und suchen Sie viel, um herauszufinden, wie die Dinge funktionieren. Es funktioniert für mich für dieses spezielle Spiel und diesen Prototyp, aber Phaser 4 ist auf dem Weg, also gibt es das.

Ich hoffe, dieser Beitrag ist nützlich für Ihren eigenen Such- und Unterscheidungsprozess. Ich würde gerne auch von Ihren eigenen Erfahrungen mit diesen Frameworks / Engines oder anderen hören!

Wenn Ihnen dieser Artikel gefallen hat, lesen Sie bitte meine Spiele und Bücher, abonnieren Sie meinen YouTube-Kanal oder treten Sie dem Entromancy Discord bei.

MS Farzan, Ph.D. hat für bekannte Videospielunternehmen und redaktionelle Websites wie Electronic Arts, Perfect World Entertainment, Modus Games und MMORPG.com geschrieben und gearbeitet und war Community Manager für Spiele wie Dungeons & Dragons Neverwinter und Mass Effect: Andromeda . Er ist Creative Director und Lead Game Designer von Entromancy: A Cyberpunk Fantasy RPG und Autor der Nightpath Trilogy . Finden Sie MS Farzan auf Twitter @sominator.