Ich habe einen Trend festgestellt, bei dem Indie-Entwickler sich von Frameworks und Engines abwenden und dazu übergehen, nacktes OpenGL oder SDL / SFML2 zu verwenden. Als Indie-Entwickler kann ich nicht erkennen, was OpenGL auf niedriger Ebene über separate Engines oder Frameworks anbieten kann.
Die meisten anständigen Engines und Frameworks bieten die Funktionalität, die Sie benötigen, und stehen Ihnen nie im Weg. Sie könnten auch die Option eröffnen, sich direkt mit OpenGL zu befassen. Einige bieten sogar die Funktionalität, plattformübergreifend zu kompilieren!
Ich verstehe das Bestreben zu erfahren, was unter der Haube passiert, aber ich sehe keine Vorteile, die OpenGL für Indie-Entwickler in Bezug auf Engines oder Frameworks bieten könnte .
Können Sie erklären, warum Spiele mit OpenGL von Grund auf neu erstellt wurden?
Antworten:
Dies ist größtenteils eine meinungsbasierte Frage / Antwort, daher ist es nicht unbedingt ideal für diese Plattform, aber trotzdem:
Warum kein Framework / Engine als Indie? Hier sind meine zwei Cent:
quelle
Tun sie? Das hängt vielmehr genau davon ab, was Sie grafisch tun.
Für viele Arten von Spielen gibt es Standardantworten für grafische Fragen. Zum Beispiel kann ein durchschnittliches 2D-Spiel mit den 2D-Fähigkeiten von zum Beispiel XNA / MonoGame problemlos gemeistert werden. Es sind nur Sprites, die in Gruppen für das Gelände verfügbar sind, die gedreht werden können und so weiter.
Aber was ist, wenn Ihr Spiel früher ein durchschnittliches 2D-Spiel war? Dann lesen Sie etwas über coole Techniken, wie die Verwendung einer Höhenkarte, um einen Betrüger zu bauen, der im Verhältnis zum Bildschirm den Eindruck von Tiefe erweckt. Und das willst du tun.
Jetzt verwenden Sie normales Mapping und möglicherweise sogar Parallaxen-Mapping. Alles im selben Kontext wie "Rendern von Sprites", jedoch mit mehr als vielen reinen 2D-Engines. Insbesondere erfordert es das multitexturierte "Sprite Blitting", was viele 2D-Engines nicht können.
Was machen Sie, wenn sich Ihr Motor nicht an Sie anpassen kann? Das bedeutet, dass Sie mehrere Durchgänge durchführen müssen, einen für die Farbe und einen für die Beleuchtung über eine normale Karte. Dies funktioniert jedoch nicht, da Sie das Höhenfeld der normalen Karte benötigen, um die Parallaxen-Zuordnung für die Farbsuche zu verwenden. Also ... was jetzt? Sie brauchen das Alpha, um Transparenz zu schaffen, damit Sie das Alpha nicht stehlen können. Und die Engine unterstützt keine Multitexturen.
Sie müssen also eine der folgenden Optionen auswählen:
Nehmen wir als Beispiel Geometry Wars. Die meisten 2D-Engines würden diese Art von Grafik nicht akzeptieren, da sich die meisten um das Zeichnen von Sprites und nicht um Linien drehen. Das ist ein Spiel, das eine sehr spezielle Art von Renderer benötigt.
Am Ende des Tages müssen Sie die Verantwortung für die Elemente Ihres Spiels übernehmen, die für die Anforderungen Ihres Spiels wichtig sind . Wenn das visuelle Erscheinungsbild Ihres Spiels in erster Linie vom Kunststil der von Ihnen verwendeten Bilder und Modelle und nicht von bestimmten Effekten abhängt, ist die Verwendung einer vorgefertigten Lösung in Ordnung. Wenn der visuelle Stil Ihres Spiels jedoch maßgeblich vom benutzerdefinierten Rendering-Code abhängt, ist die Wahrscheinlichkeit groß, dass eine Standard-Engine zu einer ernsthaften Einschränkung wird, wenn Sie Dinge tun, die außerhalb des Rahmens liegen.
Darüber hinaus gibt es ein sehr praktisches Problem: Nicht alle Spiele-Engines sind gleichermaßen portabel.
Mit dem Aufkommen mobiler Plattformen ist der Marktplatz für Spiele auf zahlreiche Betriebssysteme und Benutzeroberflächengeräte verteilt. Nicht alle Motoren funktionieren auf allen Geräten. Und wenn Ihr Motor auf einer Plattform nicht funktioniert, werden Sie sich mit Sicherheit nicht die Zeit nehmen, um ihn auf einer Plattform zum Laufen zu bringen . Immerhin ist das , warum Sie einen Motor in erster Linie verwendet, nicht wahr?
Wenn es Ihnen wichtig ist, dass Ihr Spiel auf einer bestimmten Plattform funktioniert, müssen Sie erneut die Verantwortung dafür übernehmen. Und der "einfachste" Weg, um damit Erfolg zu haben, ist es , es selbst zu tun. Erstellen einer Engine, die plattformübergreifend funktioniert, wobei möglicherweise einfachere plattformspezifische Frameworks verwendet werden, um einige Details auf niedriger Ebene zu verarbeiten. Auf diese Weise ist es Ihr Code, wenn es kaputt geht. Sie sind die beste Person, um das Problem zu beheben.
quelle