Was sind die Vor- und Nachteile einer 3D-Engine für 2D-Spiele? [geschlossen]

16

Welche Vor- oder Nachteile sollte ein Anfänger beachten, wenn er sich für eine 2D-Game-Engine (wie Slick2D / Flixel / FlashPunk) und eine 3D-Engine (wie Unity) für die 2D-Game-Entwicklung entscheidet?

Ich fange gerade erst mit der Entwicklung von Indiespielen an, obwohl ich in der Vergangenheit ein bisschen mit Game Maker, Flash und XNA experimentiert habe. Ich habe viele positive Dinge über Unity gehört und seine plattformübergreifende Natur macht es attraktiv, aber soweit ich weiß, ist es eine 3D-Engine im Kern.

Gibt es für ein strikt 2D-Spiel zwingende Gründe, mit einer 3D-Engine wie Unity zu arbeiten? Oder würde es meiner anfänglichen Lernerfahrung nur unnötige Komplexität hinzufügen?

mrohlf
quelle
Fragen Sie im Kontext eines reinen 2D-Spiels in Unity (wie Sprites und 2D-Bewegung) oder eines 3D-Spiels mit 2D-Gameplay (wie bei 3D-Assets, aber nur in einer Ebene)?
ChaosTechnician
Ich habe einige Freunde, die mit Unity zusammengearbeitet haben, um ein 2D-Spiel namens Coypu Space Rumble zu erstellen . Der anfängliche 2D-Teil war anscheinend ziemlich langweilig, ich werde nach mehr Präzision fragen, warum.
Jonathan Connell
"3D Engine" definieren? Sprechen wir über etwas, das das Gameplay abdeckt, oder nur etwas, das in 3D gerendert wird?
Nicol Bolas
@chaosTechnician - Die erste: rein 2D-Sprites, 2D-Bewegung, im Grunde keine echte Z-Achse (nur ein einfacher Z-Index zur Bestimmung der Sprite-Rendering-Reihenfolge)
mrohlf

Antworten:

15

Es hängt vom Spiel ab, aber zum größten Teil wird es einfacher sein, ein striktes 2D-Spiel mit einer Engine zu erstellen, die speziell für 2D entwickelt wurde.

Nun zu einigen Vor- und Nachteilen (einige davon beziehen sich speziell auf die Einheit, einige sind allgemeiner)

Nachteile

  1. Bei 3D-Engines handelt es sich in der Regel um Spielobjekte, die 3D-Modelle (Polygone und Texturen) sind. Zwar ist es durchaus möglich, ein flaches Flugzeug zu erstellen und es mit einer Textur zu versehen, Sie arbeiten dabei jedoch aktiv gegen den Motor.

  2. Zusätzlich fehlt vielen 3D-Engines die Fähigkeit, Sprite-Sheets (alle Frames der Animation auf einer Textur) zu verarbeiten, da sie erwarten, dass die Animation auf das Modell (obwohl Rigging und andere Methoden) und nicht auf die Textur einwirkt. Auch hier gibt es Möglichkeiten, aber Sie arbeiten aktiv gegen den Motor, um dies zu erreichen.

  3. Komplexität hinzugefügt. Wie in Josh Petries Antwort erwähnt, ist 3D ein großes Stück komplexer als 2D, hauptsächlich in Mathematik und Szenenverwaltung. Das Bewegen von Objekten und der Umgang mit 3D-Raum ist schwierig, und wenn dies eines Ihrer ersten Spiele ist, wird es nur noch schwieriger. Die gute Nachricht: Unity abstrahiert einige dieser Probleme, obwohl es einige Dinge geben wird, mit denen Sie sich noch befassen müssen (und ein Großteil der Abstraktion ist wiederum für 3D-Modelle gedacht, nicht für 2D-Sprites).

  4. Die meisten Bibliotheken, mit denen Unity ausgeliefert wird oder die Sie dafür erhalten können, sind für 3D-Objekte gedacht. Dazu gehören Dinge wie Beleuchtung, Wegfindung, Physik usw. In der Zwischenzeit funktioniert box2d problemlos mit Flash, XNA oder etwas anderem (na ja, vielleicht).

Vorteile

  1. 3d Beschleunigung. Grafikkarten können viel besser mit vielen Objekten in einer Szene umgehen als mit einer CPU, und mit Unity können Sie diesen Vorteil ganz einfach erzielen. Auf diese Weise können Sie Tausende von Sprites auf dem Bildschirm anzeigen oder Partikeleffekte ganz einfach einfügen oder lustige Elemente wie Shader hinzufügen, um coole Effekte wie das Verzerren von Raum und Zeit nach Belieben zu unterstützen. Unity hat viele dieser Effekte eingebaut, was es wirklich einfach macht. Beachten Sie, dass viele 2D-Engines hinter den Kulissen OpenGL oder DirectX verwenden und in vielen Fällen auch hardwarebeschleunigt werden können.

  2. Unterstützung für Modelle. Erinnerst du dich an das, was früher ein Problem war? Ja, das kann auch von Vorteil sein. Je nach Spiel kann es von Vorteil sein, rotierende Kugeln oder etwas Cooles wie ein 3D-Objekt in den Hintergrund zu integrieren. Sie können auch ein Spiel aus 3D erstellen, das jedoch einfach in eine 2D-Perspektive gezwungen wird. Auf diese Weise können Sie die Weltgeometrie drehen, ohne dafür jede Menge zusätzliche Grafiken benötigen zu müssen.

  3. 3d lernen. Seien wir ehrlich, viele Spiele sind in 3D geschrieben. Wenn Sie lernen, wie man Unity verwendet, können Sie viele dieser Fähigkeiten auf das nächste Spiel anwenden, für das möglicherweise 3D erforderlich ist. Zusätzlich wird vielen Künstlern, die gerade aus der Schule kommen, 3D-Modellierung beigebracht, so dass es "einfacher" ist, einen 3D-Künstler als einen traditionellen 2D-Spielekünstler zu finden (ob diese Künstler gut sind ...).

Fazit

Es gibt viele Nachteile, es gibt auch eine anständige Menge von Vorteilen. Es hängt alles von der Art des Spiels ab, das Sie machen möchten. Es liegt an Ihnen, zu entscheiden, ob es sich lohnt. Flash ist immer noch eine äußerst praktikable Option. Es ist also nichts Falsches daran, mit einer 2D-Engine zu arbeiten, wenn dies besser zu Ihrem Spiel passt.

thedaian
quelle
+1. Sehr gründliche und zutreffende Antwort. Ich habe das Gefühl, dass Sie das schon einmal in Angriff genommen haben.
ChaosTechnician
Danke, genau das, wonach ich gesucht habe! Ich denke, ich werde mich weiterhin auf 2D-Engines konzentrieren, da die meisten von denen, die ich gesehen habe, auf OpenGL oder DirectX aufbauen und das 3D-Modellieren derzeit etwas außerhalb meiner Fähigkeiten liegt. Irgendwann würde ich gerne Unity lernen, aber wahrscheinlich bin ich besser dran, wenn ich ein 2-D-Spiel hinter mir habe.
mrohlf
Außerdem können Sie mit 3D-Engines Sprites mit beliebiger Rotation und Alpha ganz einfach zeichnen. einfacher als mit einer reinen 2D-Engine. Aus diesem Grund sind viele moderne 2D-Engines unter der Haube wirklich 3D. Sie können auch benutzerdefinierte Shader schreiben!
Asche999
7

Ein großer Nachteil ist die zusätzliche Komplexität: 3D-Engines bieten nicht immer die gleiche erstklassige Unterstützung für 2D-Grafiken wie dedizierte 2D-Engines. Dies bedeutet, dass das Erstellen und Verwalten einer 2D-Szene entweder viel zusätzliche Arbeit erfordert, und / oder dass Sie sich immer noch mit der Komplexität der 3D-Mathematik- und Transformationspipeline befassen müssen. Insbesondere wenn Sie mit den Grundlagen der 3D-Grafiktheorie nicht ganz vertraut sind, können Sie sich verloren und verwirrt fühlen, wenn Ihre Bilder nicht angezeigt werden, und wenn Sie nicht vorsichtig sind, können Sie auf eine "Lösung" stoßen, die Ihre Probleme löst Bilder erscheinen, sind aber nicht unbedingt korrekt (und werden Sie daher später beißen).

Aber abgesehen vom menschlichen Aspekt ist es keine schlechte Idee, eines zu verwenden , solange die 3D-Engine über die Tools verfügt, die Sie zum Erstellen Ihres 2D-Spiels benötigen . Sie sind heutzutage weitaus häufiger anzutreffen und werden tendenziell aggressiver entwickelt. Das ist also ein Plus. Darüber hinaus gibt es wahrscheinlich noch eine Handvoll 2D-fokussierter Engines oder Frameworks, die D3D oder OpenGL nicht im Hintergrund verwenden und daher möglicherweise nicht die Vorteile moderner GPUs nutzen.

In dieser verwandten Frage sehen Sie eine Menge Diskussionen darüber, was 3D schwieriger machen könnte (Sie müssen sich jedoch nur mit einer Teilmenge davon befassen, wenn Sie die 3D-Engine nur für ein 2D-Spiel verwenden).

Gemeinschaft
quelle
2

Pro: Die Hersteller von Grafikkarten verwenden mehr Aufwand, um ihre 3D-Treiber zu optimieren. Sie sind nicht in 2D für Spezialeffekte oder Fluorishs gefangen. Sie müssen nicht über sich selbst simulieren. Das Wechseln der Ansichtspunkte erfordert keine vollständige Überarbeitung Ihrer gesamten Kunst. Ich werde argumentieren, dass 3D visuell besser skaliert.

Con: Asset-Pipelines müssen wahrscheinlich an Ihre Engine angepasst werden. Einige Operationen, die in 2D einfach sind, sind in 3D komplexer. Bibliotheken verfügen wahrscheinlich über zusätzliche Funktionen, die Sie nie verwenden werden.

Patrick Hughes
quelle
0

Lerne einfach die Einheit, wenn du kannst. Unity funktioniert sehr gut mit Blender 3D, das Open Source und kostenlos ist. Es gibt eine Menge guter Online-Tutorials zum Modellieren und Animieren von 2D in Blender mit Flugzeugen. Außerdem gibt es eine TONNE Modelle, die Sie normalerweise kostenlos oder günstig online herunterladen können und die Sie als Ausgangspunkte verwenden können.

Dies setzt natürlich voraus, dass Sie nicht in der Lage sind, Ihre eigene Game Engine zu erstellen. Mein aktuelles Lieblings-2D-Spiel ist Super Meat Boy, das in Flash entwickelt wurde und das Programmieren wurde kundenspezifisch durchgeführt. Dies ist der beste Weg, um sich einem solchen Projekt zu nähern, denn es gibt Ihnen viel Freiheit. Das heißt, es braucht viel Arbeit, um diesen Weg zu gehen.

Aesadai
quelle
Tatsächlich ist dies jetzt, da UNITY 2D-Unterstützung hinzugefügt hat, ein Kinderspiel: pcworld.com/article/2062740/…
Aesadai,
1
Ich sage immer noch, dass Unity für 2D-Spiele scheiße ist. Für 2D-Spiele ist es für mich KEINE professionelle Qualität, vergleiche einfach mit einer soliden 2D-Engine wie Cocos2D-swift. Das ist ein Kinderspiel.
Jonny