Warum wird eine Engine wie Unity3D gegenüber einer nativen Bibliothek wie OpenGL für Anfänger betont? [geschlossen]

25

Ich bin nur ein Anfänger in 3D-Spielen, meine bevorzugte Plattform ist Android. Ich habe in einem anderen Forum eine Frage zu "Was ist zu verwenden: OpenGL oder Unity3d?" Sie alle hoben Unity3D hervor und verwendeten seine eingebauten Funktionen und Tools, die ich selbst codieren müsste, wenn ich OpenGL verwenden würde. Aber dann sagt jemand, dass die meisten komplexen Spiele benutzerdefinierte Engines erfordern. Warum sollte ich eine Engine wie Unity3D über OpenGL verwenden?

Aman Grover
quelle
15
Zwei Wörter: Sofortige Befriedigung. Sie können mit Unity etwas "Nützliches" erledigen, ohne viel zu wissen, während das Starten einer OpenGL-App einige Codezeilen und das Verständnis einer Vielzahl von Konzepten erfordert.
Jari Komppa
5
Vielleicht können wir es einfach in diesem einen Thread erklären und alle Fragen "Welche Technologie soll ich verwenden?" Verschwinden für immer. Ich möchte auch ein Einhorn
jhocking
8
"Die meisten komplexen Spiele erfordern benutzerdefinierte Engines" - tatsächlich basiert eine erstaunlich große Anzahl von hoch erfolgreichen AAA-Spielen auf Standard-Engines wie der Unreal-Engine .
Philipp
2
Darüber hinaus kann ein Anfänger ein Spiel nicht so komplex machen, dass es ohnehin eine benutzerdefinierte Engine benötigt.
Christian
Dies ist gerade bei Gamasutra aufgetaucht, und obwohl es keine direkte Antwort auf diese Frage ist, ist es relevant: gamasutra.com/blogs/ChrisDeLeon/20140426/215519/… - insbesondere wird es für ein Projekt, aus dem Sie bauen, sehr schwierig Das Ground Up mit OpenGL sollte ein bescheidenes erstes Projekt sein.
Steven Stadnicki

Antworten:

30

Ich denke, Sie haben diese Frage bereits selbst beantwortet. Sie sagten "Ich bin nur ein Anfänger in 3D-Spielen" . Weiter sagten Sie "... Unity3D und seine eingebauten Funktionen und Tools, die ich selbst codieren müsste, wenn ich OpenGL verwenden würde" .

Im Wesentlichen bedeutet dies, dass Sie, wenn Sie OpenGL alleine verwenden, eine Spiel-Engine schreiben und möglicherweise Jahre später Ihr Spiel schreiben werden. Wenn Sie sich auf ein Spiel konzentrieren möchten, nutzen Sie die verfügbaren Ressourcen, um diesem Ziel so nahe wie möglich zu kommen. Die Verwendung einer Spiel-Engine ist die beste Möglichkeit, sich auf die Erstellung eines Spiels zu konzentrieren, anstatt alle für die Erstellung eines Spiels erforderlichen Informationen zu schreiben.

Sehen Sie sich diese verwandte Frage an: Was ist der Unterschied zwischen einer Bibliothek und einer Engine und dieser ? Was ist ein Game Framework im Vergleich zu einer Game Engine?

MichaelHouse
quelle
OpenGL ist also nur für Grafiken und Unity3D ist ein vollständiges Framework, das sowohl Grafik- als auch physikalische Anforderungen für mein Spiel stellt.
Aman Grover
1
Einigkeit ist viel mehr als das, aber das ist so ziemlich der Unterschied.
jhocking
3
@AmanGrover: Erkenne auch, dass mit GL "nur für Grafiken" wirklich "nur zum Senden von Befehlen an die GPU" ist. Die eigentliche harte Grafikarbeit muss noch vom Programmierer geleistet werden, während Unity alle wichtigen Grafikfunktionen und -algorithmen enthält und einsatzbereit ist.
Sean Middleditch
2
Schreiben Sie keine Motoren, schreiben Sie keine Spiele. Mir wurde gesagt, dass ich mich nähern soll. Was ich meine, jemand erstellt eine Spiel-Engine, während Sie das eigentliche Spiel erstellen. Das ist der Punkt, mit dem ich Byte nicht einverstanden bin.
LaVolpe
28

Denn Anfänger wissen per Definition nicht, was sie tun .

OpenGL hat eine riesige Lernkurve. Sicher, Sie können ein paar glBegin-Befehle eingeben, sich darauf freuen, ein paar Dreiecke auf den Bildschirm zu bringen, und dann das tiefe Ende mit etwas Komplexerem verlassen, das Sie noch lange nicht in Angriff nehmen können. Das ist kein guter Weg, um zu lernen. Eine Analogie (etwas übertrieben) könnte darin bestehen, dass man einige Grundphysik-Übungen lernt, die dann für den Large Hadron Collider zuständig sind. Es ist nicht Sinken oder Schwimmen, es ist Schwimmen oder Verlassen eines großen radioaktiven Lochs im Boden.

Es wird davon ausgegangen, dass die meisten Leute fragen: "Ich möchte ein Spiel machen, was soll ich verwenden?" Die Frage möchte tatsächlich ein Spiel erstellen (sonst hätten sie sicherlich eine andere Frage gestellt?). Die Antwort ist also auf die Frage zugeschnitten, und die Verwendung eines bereits vorhandenen Toolkits, Frameworks oder einer Engine ist eine Möglichkeit, um dieses Ziel zu erreichen Für die Aktualisierung einer einzelnen Matrix ist es vorzuziehen, sich nicht davon abzulenken, ob ein UBO- oder ein glUniform-Aufruf erfolgt.

Es geht darum, Schritt für Schritt voranzukommen, den Lernprozess zu vereinfachen und Ihnen am Ende etwas Belohnendes zu bieten. Der Versuch, zu lernen, wie man ein Spiel macht und wie man eine ausgereifte und leistungsstarke 3D-API gleichzeitig richtig einsetzt, ist für einen Anfänger wahrscheinlich zu viel. Dies entspricht dem Mahn-Krüger-Effekt abzüglich der negativen Konnotationen. Sie wissen nicht, was Sie nicht wissen, also haben Sie wirklich kein realistisches Bild von dem, worauf Sie sich einlassen würden.

Wenn Sie dagegen OpenGL lernen möchten, möchten Sie eigentlich kein Spiel machen! Sie möchten OpenGL lernen, und es im Zusammenhang mit dem Erstellen eines Spiels zu tun, mag eine unterhaltsame Art des Lernens sein, aber das Erstellen eines Spiels ist ein Mittel zum Zweck, kein Selbstzweck (und sicherlich nicht die einzige Art, OpenGL zu lernen) ). Sie werden es wahrscheinlich nie veröffentlichen, und Sie werden in ein paar Jahren fast definitiv darauf zurückblicken und sich schrecklich für einige der dummen Dinge schämen, die Sie getan haben.

Maximus Minimus
quelle
22

Es hängt wirklich davon ab, was Sie aus diesem Projekt herausholen möchten. Wenn Ihr Hauptziel darin besteht, sich auf das Game-Design zu konzentrieren, sind Sie wahrscheinlich mit einer vorgefertigten Engine besser dran, da Sie so viel schneller zum Game-Making-Teil gelangen. Wenn Sie mehr über das Programmieren von Spielen erfahren möchten (insbesondere, wenn Sie sich auf einen Job in der Branche vorbereiten möchten), ist die Arbeit mit OpenGL wahrscheinlich eine wertvollere Erfahrung. Denken Sie daran, dass keine der vorhergehenden Aussagen zu 100% der Zeit zutrifft.

Es gibt wirklich keine Regel, wenn man sich für so etwas entscheidet. Die meisten Antworten, die Sie in dieser Art von Frage hören, sind Meinungen, und nur sehr wenige davon sind für Ihr eigenes Projekt und Ihre Fähigkeiten vollständig relevant.

RyNo
quelle
Vielen Dank, und ja, ich suche einen Job in diesem Bereich und werde mich deshalb für OpenGL entscheiden.
Aman Grover
9
Ich bin völlig anderer Meinung, dass die Arbeit mit 'nacktem' OpenGL für jemanden, der in die Spieleindustrie einsteigt, wertvoller sein wird. Unity ist ein hervorragendes Beispiel für eine moderne, relativ ausgereifte Game-Engine. Das Verstehen der Funktionen, die es bietet (mit Blick darauf, wie Sie ähnliche Funktionen möglicherweise selbst bereitstellen), ist eine hervorragende Möglichkeit, den Prozess der Spieleentwicklung selbst zu verstehen, während OpenGL keineswegs in irgendeiner Weise spielspezifisch ist.
Steven Stadnicki
Dies zeigt nur, dass es wirklich keine Regel zu diesen Dingen gibt, nur Meinungen. Es hängt alles davon ab, was Sie brauchen / wollen.
jhocking
5
@AmanGrover - dann mach kein Spiel! Sie werden es leichter haben, eine Sache nach der anderen zu lernen. Erstelle einen Sonnensystem-Simulator. Erfahren Sie, wie Sie grundlegende Grundelemente zeichnen, wie Sie sie übersetzen und drehen, wie Sie die Planeten in ein VBO einfügen, um sie schneller zu zeichnen, wie Sie mit einigen Shadern animierte Wolken auf ihnen erstellen und wie Sie die Grundlagen verstehen.
Maximus Minimus
3
@ KamikazeSoctsman Auch hier nicht einverstanden. Ich sage nicht, dass OGL nutzlos ist - weit davon entfernt! - aber im letzten Jahrzehnt habe ich mein OpenGL-Wissen nur ein paar Mal in kurzen Anläufen eingesetzt. Im Gegenteil, da Spielgrafik-Engines in der Regel so leistungsempfindlich sind, sind sie meiner Erfahrung nach einer der am wenigsten verbreiteten Orte, an denen ein neuer Programmierer anfangen kann. Sie sollten unbedingt mit 3D-Mathematik vertraut sein und die Prinzipien des Renderns verstehen - aber das ist eine ganz andere Sache als das Erlernen von OGL.
Steven Stadnicki
6

Der Unterschied ist einfach. Unity ist eine Kutsche mit vier runden Rädern, mit denen man sich platzieren kann. OpenGL ist Sägemehl, mit dem Sie einen Laden einrichten und möglicherweise einen verbesserten und moderneren Wagen und Räder formen können. Das ist, wenn Sie viele Stunden Ihrer Zeit investieren, um zu lernen, was die Leute vor Ihnen zuerst getan haben.

Ihr Ziel als Anfänger sollte es sein, zuerst die vorhandenen Wagen und ihre Konstruktionen zu studieren. Es hat keinen Sinn, alles aus dem Fenster zu werfen und von vorne zu beginnen. Lernen Sie zuerst, was bereits vorhanden ist, und machen Sie sich gründlich damit vertraut. Wenn nicht, woher wissen Sie, welche Einschränkungen es gibt, und wenn Sie die Einschränkungen nicht kennen, wie können Sie sie durchbrechen? Worum geht es, wenn man etwas Mittelmäßiges macht, das nutzlos ist und all die lebendigen vorhandenen Tools, die bereits verfügbar sind, ignoriert?

Imho die Schritte eines jungen Spielentwicklers sind:

  1. Beherrsche ein modernes Framework / eine moderne Engine und verschaffe dir ein tiefes Verständnis davon (Dies wird dir auch dabei helfen, die verschiedenen Aspekte des Spieldesigns zu lernen, Grafiken und OpenGL sind nicht alles, was es gibt).
  2. Mach ein kleines Spiel damit und lerne dabei mehr.
  3. Organisch auf Hindernisse und Einschränkungen im Motor stoßen.
  4. Erfahren Sie mehr über das Thema.
  5. Arbeiten Sie daran, die Bereiche zu verbessern, die Ihrer Meinung nach verbessert werden müssen.

Wenn Sie alleine daran arbeiten, etwas zu erstellen, das bereits erstellt wurde, werden Sie für niemanden zu einem wertvollen Entwickler, da Sie in Wahrheit nicht produktiv sind und in dieser Angelegenheit nicht gut lernen können lese und verstehe sie. Wie das alte Pokemon-Sprichwort sagt: "Es ist nicht sehr effektiv ...".

Das Schlimmste daran ist, dass diese Art der Herangehensweise nicht einfach zu bewältigen ist, da sie keine Befriedigung bietet, sodass Sie mit roher Willenskraft arbeiten, die sich wissenschaftlich als begrenzte Ressource für den Menschen erwiesen hat. Sie müssen etwas tun, das Sie täglich befriedigt, oder Sie werden wahrscheinlich nicht in der Lage sein, es aufrechtzuerhalten.

Zusammenfassend ist eine Engine hervorzuheben, weil Sie die Dinge mit einer Engine erledigen können und es viel wahrscheinlicher ist, dass Sie auf diese Weise erfolgreich sind. Selbst großartige Spieleentwickler verließen sich auf die frühere Arbeit eines anderen, und das ist die Natur des Fortschritts. Sie müssen das große Ganze verstehen und wissen, wie man mit den von anderen gelieferten Legostücken spielt, bevor Sie Ihre eigenen Legostücke herstellen.

wolfdawn
quelle
4

Angenommen, Ihr Ziel ist es, ein Spiel zu erstellen, dann hat sich der Typ geirrt, der davon gesprochen hat, dass benutzerdefinierte Engines erforderlich sind . Wenn überhaupt, erfordern komplexe Spiele eine ausgereifte Engine, die von Profis entwickelt, implementiert, optimiert, getestet und gewartet wird, die seit langem in der Branche tätig sind - oder eine, die ihrer Qualität entspricht (zumindest für die Zwecke eines bestimmten Spiels). , wenn das möglich ist.

Große Spieleentwickler bauen zwar firmeneigene Engines, verwenden diese jedoch weiterhin häufig für ihre zukünftigen Spiele. Bedenken Sie jedoch, dass ihre Budgets, Teamgrößen und viele andere Faktoren sich erheblich von denen unabhängiger Entwickler unterscheiden. Es kann für sie wirtschaftlicher sein, eine eigene Engine zu entwickeln, auch wenn die vorhandenen technologisch nicht unzureichend sind.

Natürlich gibt es immer noch das Missverständnis, dass viele Funktionen in vorhandenen Engines nicht sofort implementiert werden können, aber das ist normalerweise ungenau.

Denken Sie daran, dass einige der innovativsten modernen Spiele, wie Portal und Antichamber, mit vorhandenen Engines erstellt wurden. Einige recht komplexe Online-Spiele wie Aion und TERA wurden mit vorhandenen Engines erstellt. Einige der schönsten Spiele, wie Bioshock Infinite und Thief, wurden mit vorhandenen Engines erstellt. Und einige natürlich auch nicht. Aber der Punkt ist: Nichts, was ich jemals gesehen habe, erforderte wirklich einen kundenspezifischen Motor.

Wenn Sie dagegen Konzepte der Grafikprogrammierung erlernen möchten, ist OpenGL der richtige Weg. Aber denken Sie auch dann daran, dass Sie, wenn Sie mit ein paar vorhandenen Triebwerken vertraut sind, sehr gut verstehen, was Sie tun und worauf Sie abzielen sollten.

TC
quelle
1
-1. Ziemlich große Aussagen über die Spielebranche. Die meisten von ihnen sind ungenau. Ich wünschte, ich könnte Ihren Beitrag mit etwa einem Dutzend citation neededs
Panda Pyjama
1
@PandaPyjama In meiner Antwort gibt es so ziemlich nur eine Behauptung über die Spielebranche. Wenn es Sie sehr stört, können Sie es gerne korrigieren oder sogar ganz entfernen.
TC
Meine (begrenzte) Erfahrung hat mir gezeigt, dass wenn es etwas gibt, über das man keine Verallgemeinerung machen kann, es die Spielebranche ist. Jedes Unternehmen hat eine andere Sichtweise, und selbst verschiedene Teams in einem Unternehmen haben möglicherweise sehr unterschiedliche Richtlinien für alles. In diesem speziellen Fall verursachen Eigenmotoren Kosten und bringen einige Vor- und Nachteile mit sich. Ob das Nettoergebnis Einsparungen oder Ausgaben sind, ist äußerst schwierig zu berechnen und variiert von Projekt zu Projekt. Außerdem ist das Budget zwar wichtig, aber nicht das einzige Element, das bei der Erstellung von Spielen berücksichtigt wird.
Panda Pyjama
@ PandaPyjama Zugegeben, siehe meine Bearbeitung. Ich habe einfach gesagt, dass es für sie im Allgemeinen wirtschaftlicher sein kann, was den Faktor des Budgets und alles andere einschließt, was ihre Entscheidung mitgestaltet, und darauf hinweist, dass es möglicherweise überhaupt keine technische Einschränkung bestehender Motoren ist.
TC