Login
Login-Name Passwort


 
Newsletter
Werbung

Do, 5. August 2010, 16:00

Die Grafik-Engine D'Enfent Engine

D'Enfent Engine ist eine neue Grafik-Engine, die mittels OpenGL Hardware-beschleunigt arbeitet und besonders für Spiele gedacht ist, die mit einer zweidimensionalen Darstellung auskommen. Der Autor der Engine gibt einen illustrierten Einblick in die bisher vorhandenen Funktionen.

Vorwort

In diesem Artikel möchte ich die Engine (oder Bibliothek) vorstellen, an der ich gerade arbeite. Ich hoffe, dass sie für manche Leser nützlich ist.

Die Homepage des Projektes ist eengine.org. Die Bibliothek steht unter der GNU GPL (Version 2 oder neuer), ist in C++ geschrieben und läuft in erster Linie unter Linux, aber auch unter Windows.

Zielgruppe

Diese Bibliothek wurde nur mit einem Gedanken geschrieben: Es ist eine wahre Hölle, Sprite-Objekte, selbst wenn sie sehr einfach sind, in OpenGL und X11 zu implementieren; es sollte daher eine Bibliothek geben, mit der man das in wenigen Codezeilen erledigen kann. Die Zielgruppe umfasst daher Spieleentwickler (hauptsächlich für zweidimensionale Spiele), die den Code für ihre Projekte gebrauchen können. Die Bibliothek sollte für jeden, der mit DirectX (insbesondere DX10 oder DX11) gearbeitet hat, nützlich und einfach zu benutzen sein, da sie ähnliche Begriffe verwendet.

Rendern von Schriften

Anton Lapshin

Rendern von Schriften

Eigenschaften

D'Enfent Engine arbeitet mit GPU (Grafikprozessor)-Zuständen. Ich nehme an, dass jeder, der nicht an die Einschränkungen verschiedener Bibliotheken gebunden sein will, das interessant finden wird, denn es ermöglicht, verschiedene Zustände der GPU zu verwalten, wenn man möchte. Wenn man sich nicht darum kümmert, macht es die Engine automatisch. Sie könnte auch eine Zwischenschicht zwischen Hardware und Anwendung sein (beispielsweise ein Karteneditor), da sie C++-Klassen auf hoher Ebene für jedes GPU-Objekt wie Textur, Shader, Puffer usw. enthält.

Im Moment sehe ich zwei hauptsächliche Nachteile der D'Enfent Engine. Erstens ist sie möglicherweise schwer zu benutzen, das das Konzept der GPU-Zustände nicht so ganz einfach ist. Zweitens gibt es im Moment keine grafischen Tools für die Bibliothek. Wobei der erste Punkt wahrscheinlich kein großes Problem ist, sondern nur ungewohnt. Feedback der Gemeinschaft ist auf jeden Fall erwünscht und wird zu diesem Punkt auch benötigt. Was denken Sie über diese Nachteile?

Features

Hier versuche ich nun zu erklären, was Sie an dieser Bibliothek interessant finden könnten. (Ich weiß immer noch nicht, ob ich von einer Bibliothek oder einer Grafik-Engine reden sollte. Eigentlich ist es dasselbe :) )

  • Die Bibliothek ist plattformübergreifend (Linux und Windows)
  • Ich versuche, die Anfänge mit der Bibliothek einfach zu machen: Ich habe 13 Beispielprogramme vorbereitet, die verschiedene Teile der Bibliothek benutzen, und mehrere Lektionen, die für den Anfang nützlich sein könnten. Weitere sind in Arbeit. Die Lektionen behandeln die grundlegende Benutzung der Engine: Sprites, Shader, Systemereignisse, GUI-System, Tiling, Splatting (eine Technik zum Formen verschiedener Terrains) und einige mehr.
  • Das System zum Rendern von Schriften, das Font Maps zur Laufzeit generiert. Es ist nicht notwendig, diese selbst vorzubereiten - erzeugen Sie einfach eine Schrift und verwenden Sie sie in Ihrem Spiel. Eines der Beispiele zeigt, wie diese Technik im Detail funktioniert.
  • Shader. Man kann sie benutzen, um jeden Effekt zu erzielen, den man wünscht.
  • Verschiedene Klassen, um mit Sprites zu arbeiten (Animation und Bewegungen).
  • Vollständig Hardware-beschleunigt. Man kann die Leistungsfähigkeit der GPU wirklich nutzen, um Grafik zu verarbeiten. Eines der Beispiele zeigt, wie man einen Sobel-Filter für die GPU erzeugt.
  • Ein GUI-System ist enthalten. Es ist nicht nötig, sich mit der langweiligen Implementierung eines GUI-Systems für die Spiele aufzuhalten.
  • Ein Mitteilungs-System, um Events vom Fenstersystem zu unterstützen.

Anwendung eines Sobel-Filters auf die Kanten

Anton Lapshin

Anwendung eines Sobel-Filters auf die Kanten

Kombination verschiedener Texturen zu abwechslungsreichem Terrain

Anton Lapshin

Kombination verschiedener Texturen zu abwechslungsreichem Terrain

Das Bild rechts zeigt ein Terrain, das mit der speziellen Splatting-Technik erzeugt wurde. Mit dieser Technik kann man verschiedene Terrain-Formen aus einer begrenzten Zahl von Texturen erzeugen. Sie wird in der Lektion »Splatting technique to form terrains« erläutert.

Quellcode und Feedback

Wenn Sie eine Idee für ein Beispielprogramm oder eine weitere Lektion haben (zum Beispiel über einen Teil der Bibliothek oder für einen Artikel im HowTo-Stil über einen Effekt, würde ich mich sehr freuen, davon zu erfahren. Gleiches gilt für neue Features.

Im FreeGameDev-Forum finden Sie ein einfaches Spiel, das die Engine nutzt. Es ist auch im Quellcode-Archiv der Bibliothek enthalten.

Neben dem Archiv ist auch der Bezug des Quellcodes aus dem Quellcode-Verwaltungssystem möglich. Dieses befindet sich auf http://svn.1gb.ru/eengine, Login-Name und Passwort lauten guest.

Die Screenshots stammen von den Beispielprogrammen, die zusammen mit dem Quellcode der Engine mitgeliefert werden. Wen es interessiert, der kann den zugehörigen Quellcode der Programme untersuchen.

Falls Sie diese Bibliothek nützlich finden sollten und in Ihren Spielen einsetzen, können Sie mir gerne eine E-Mail an [alapshin87 at gmail dot com] mit Fragen oder Vorschlägen schreiben, die das Spiel, die Engine oder die Beispiele betreffen, gleichgültig, ob es sich um Vorschläge für neue Features oder etwas anderes handelt. Ich bin wirklich stark an allen Vorschlägen interessiert.

Abschließend möchte ich allen Danken, die mir bereits bei diesem Projekt, den Beispielen oder Lektionen geholfen haben. Vielen Dank im Voraus auch allen, die mir Feedback senden, ich weiß es wirklich zu schätzen!

Über den Autor

Anton Lapshin ist der Entwickler der D'Enfent Engine.

Übersetzung: Hans-Joachim Baader

  • Dieses Werk wurde von seinem Urheber zur uneingeschränkten Nutzung freigegeben und ist damit gemeinfrei (»public domain«).

Kommentare (Insgesamt: 10 || Alle anzeigen || Kommentieren )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung