Benutzer:Finalspace/Game Engine Design: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „Dies wird ein Versuch ein Tutorial zu erstellen, zur Entwicklung einer Game Engine. Von vornerein werde ich mich auf die sprache Lazarus/Freepascal festlegen. Di…“)
 
Zeile 7: Zeile 7:
 
Der Renderer allerdings wird nicht festgelegt sondern Abstract gehalten,
 
Der Renderer allerdings wird nicht festgelegt sondern Abstract gehalten,
 
das bedeutet das Grafik API befehle ausgelagert sind und pro API eine library existiert die gewechselt werden kann.
 
das bedeutet das Grafik API befehle ausgelagert sind und pro API eine library existiert die gewechselt werden kann.
 +
 
Das klingt jetzt sehr gehoben und aufwendig, ist es aber nicht ;-)
 
Das klingt jetzt sehr gehoben und aufwendig, ist es aber nicht ;-)
 
Im gegenteil wir müsssen nicht alles von den jeweiligen API´s (OpenGL, Direct3D) unterstützen.
 
Im gegenteil wir müsssen nicht alles von den jeweiligen API´s (OpenGL, Direct3D) unterstützen.
 
Darauf werden wir aber noch detailierter eingehen.
 
Darauf werden wir aber noch detailierter eingehen.
 +
 +
Die Gesamte Engine wird eine art Pluginsystem haben,
 +
was integration von neuen Mesh/Grafik Formaten ermöglichen kann.
 +
Wird ebenfalls noch erklärt.
 +
 +
Erstmal nun ein paar Grundsätzliche Denk Stützen:
 +
 +
- Was will ich erreichen
 +
 +
  Eine 3D Scene in einem TForm Control welches folgendes darstellt:
 +
 +
    - Eine simple map aus einfachen primitiven (Würfel, Sphere, Cylinder, Wände, Polygone, Teapot)
 +
    - Die Scene soll eine Camera enthalten in der man sich frei bewegen, entweder per toggling oder per mouse down/move.
 +
    - Es soll von folgenden Lichttypen jeweils 3 enthalten sein: Point / Spot / Directional.
 +
    - Das licht wird per Pixel berechnet, somit müssen die Licht Operationen im Shader geschrieben sein.
 +
      Es reicht aber normales Licht ohne Special Effekte wie Bumpmapping...
 +
    - Jedes Licht soll natürlich auch auf die Objekte Schatten werfen (Shadow maps).
 +
    - Jedes Licht muss ein/ausschaltbar/einstellbar sein per TForm GUI.
 +
    - Jedes Licht hat eine Eigenschaft in der man die Schatten ein/ausschalten kann.
 +
    - Jedes Objekt in der Scene hat eine Eigenschaft in der man die Schatten ein/ausschalten kann.
 +
 +
- Was brauch ich überhaupt
 +
 +
  - Eine Mesh Klasse in der roh-vertex Daten gespeichert werden können
 +
    und abstrakt per Plugin erweitert werden, so das laden von 3DS oder
 +
    andere Formate möglich wird.

Version vom 4. Februar 2010, 14:08 Uhr

Dies wird ein Versuch ein Tutorial zu erstellen, zur Entwicklung einer Game Engine.

Von vornerein werde ich mich auf die sprache Lazarus/Freepascal festlegen. Die Gesamte Engine wird in dieser Sprache entwickelt und als eigene library in jedes beliebige Spiele Projekt integrierbar sein.

Der Renderer allerdings wird nicht festgelegt sondern Abstract gehalten, das bedeutet das Grafik API befehle ausgelagert sind und pro API eine library existiert die gewechselt werden kann.

Das klingt jetzt sehr gehoben und aufwendig, ist es aber nicht ;-) Im gegenteil wir müsssen nicht alles von den jeweiligen API´s (OpenGL, Direct3D) unterstützen. Darauf werden wir aber noch detailierter eingehen.

Die Gesamte Engine wird eine art Pluginsystem haben, was integration von neuen Mesh/Grafik Formaten ermöglichen kann. Wird ebenfalls noch erklärt.

Erstmal nun ein paar Grundsätzliche Denk Stützen:

- Was will ich erreichen

 Eine 3D Scene in einem TForm Control welches folgendes darstellt:
   - Eine simple map aus einfachen primitiven (Würfel, Sphere, Cylinder, Wände, Polygone, Teapot)
   - Die Scene soll eine Camera enthalten in der man sich frei bewegen, entweder per toggling oder per mouse down/move.
   - Es soll von folgenden Lichttypen jeweils 3 enthalten sein: Point / Spot / Directional.
   - Das licht wird per Pixel berechnet, somit müssen die Licht Operationen im Shader geschrieben sein.
     Es reicht aber normales Licht ohne Special Effekte wie Bumpmapping...
   - Jedes Licht soll natürlich auch auf die Objekte Schatten werfen (Shadow maps).
   - Jedes Licht muss ein/ausschaltbar/einstellbar sein per TForm GUI.
   - Jedes Licht hat eine Eigenschaft in der man die Schatten ein/ausschalten kann.
   - Jedes Objekt in der Scene hat eine Eigenschaft in der man die Schatten ein/ausschalten kann.

- Was brauch ich überhaupt

 - Eine Mesh Klasse in der roh-vertex Daten gespeichert werden können
   und abstrakt per Plugin erweitert werden, so das laden von 3DS oder
   andere Formate möglich wird.