# Was genau ist eine Grafikengine?



## genc (14. Apr 2010)

Moin Moin,

bevor ich jetzt ein neues Thread eröffne und unnötig das Forum dicht mach, stelle ich meine Frage kurz hier:

Wie benutzt man eine engine?! was genau ist das den? eine Art Bibliothek mit Funktionen?

ich lerne gerade Java und lese auch ein Buch über Computerspieleprogrammierung (langes Wort:applaus aber so recht vorstellen, wie das funktionieren soll, kann ich es mir nicht.

Ich bitte jemanden, der mir die große, weite Welt der Pysik-/Grafik- Engine erklärt.
Ansonsten eröffne ich einen neuen Thread, falls es zu lang zum erklären werden sollte.

Danke im voraus


----------



## Noctarius (14. Apr 2010)

Quaxli hat gesagt.:


> genc hat gesagt.:
> 
> 
> > Moin Moin,
> ...



Hatte den original Post gelöscht, sorry


----------



## Steev (14. Apr 2010)

Es gibt ja verschiedene, oft recht schwammige Definitionen von Engines. Hier einmal ein versuchter Ansatz:
Eine Engine ist eine Programmteil, dass eine bestimmte Funktion verrichtet ohne direkt vom Benutzer gesteuert werden zu müssen. Bei einer Grafikengine wäre das zum Beispiel die Renderung von Objekten und Bildern usw. ohne das der Benutzer sich darum kümmern muss, dass zum Beispiel die interne Tiefernsortierung stimmt und das das Bild auch tatsächlich gerendert wird.
Das ist dann auch ein wichtiges Unterscheidungsmerkmal zu einer API, die eine Sammlung von Funktionen darstellt, die der Benutzer in seinem Programm benutzen kann. Die eigendliche Programmlogik liegt hierbei beim Benutzer.

Also grundsätzlich würde ich unterscheiden: Eine Engine bietet dem Benutzer zwar ähnlich wie eine API eine Reihe von Funktionen, erledigt aber unabhängig davon eine Aufgabe.
Eine API verrichtet nur die Aufgaben, die direkt vom Benutzer aufgerufen wurden.

Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt


----------



## genc (25. Apr 2010)

So, sorry hab jetzt wieder Zeit.
Okey, ähnlich einer API.

*Und wie stelle ich mir eine Spieleengine vor?*

So wie ich das verstanden habe, regelt die Engine die Flugbahn von Körpern, Anziehungskraft, (KI vllt.?!) etc.

Stimmt das so überhaupt?
Wie kann ich mir das jetzt vorstellen?


----------



## Empire Phoenix (25. Apr 2010)

Spiel engine ist zb die Source engine, du hast je nach umfang alles fertig, netzwerk, physic, ect.


----------



## genc (25. Apr 2010)

das heißt ich übergebe der engine meine werte und der stellt sie dann im MP bereit, steuert die Physik meiner objekte etc.?!


----------



## Empire Phoenix (25. Apr 2010)

So ungefähr, ja, hängt halt von der Engine ab. Wenn du was Java ähnliches suchst wäre da die Ut engine zu nennen, ohne source zugriff und non comercial kostenlos, und U-Script ist stark an java angelehnt.

UDK - Unreal Development Kit - Epic Games


----------



## genc (26. Apr 2010)

Aha, interessante Seite, nur eben englisch. Werde mich einfach mal durchwuzeln ^^


Aber meine Fragen werden immer mehr:
Mein großes Ziel ist es ein Aufbauspiel wie Anno, nur schlichter und wirtschaftsorientierter. Großes ziel bedeutet hier, irgendwann, wenn ich es kann.

Gibt es für solche Spiele Editoren?
Was ist ein U-Script?
Braucht man für 2D-games auch eine Engine? - z.B. Super Mario, SNES-Spiele, Flashgames, etc...

Und bevor ich es vergesse:
Wie mache ich in diesem Forum ein Lesezeichen rein, damit ich diese Seite z.B. auch wiederfinde?


----------



## cr33p (26. Apr 2010)

genc hat gesagt.:


> Aha, interessante Seite, nur eben englisch. Werde mich einfach mal durchwuzeln ^^
> 
> 
> Aber meine Fragen werden immer mehr:
> ...



STRG + D oder oben bei Lesezeichen -> Hinzufügen (oder wie das halt heißt).


----------



## Quaxli (26. Apr 2010)

genc hat gesagt.:


> Aha, interessante Seite, nur eben englisch. Werde mich einfach mal durchwuzeln ^^
> 
> 
> Aber meine Fragen werden immer mehr:
> ...



Meine hauptsächlichen Werkzeuge für 2D-Spiele: Eclipse, MS Paint (ohne Quatsch) und GIMP. Damit komme ich ganz gut zurecht. Die Frage nach einer Engine würde ich eher mit Nein beantworten. Das solltest Du aber für Dich selbst raus finden. Ich habe sehr viele Klassen gebastelt, die ich wieder verwenden (Sprite, GamePanel, etc.) da könnte man im weitesten Sinne auch von einer selbst gebastelten Engine sprechen.
In jedem Fall würde ich die ersten paar Spiele von Grund auf selbst zusammen klappern - man lernt sehr viel mehr dabei. Danach kannst Du Dir ja mal eine Engine angucken und selbst entscheiden, was Dir besser gefällt.


----------



## Empire Phoenix (26. Apr 2010)

Ich empfehle ja einfach zum start mal falldown ode snake oder sowas, ob mit oder ohne engine. Wobei für ein anno spiel ist die ut eengine wahrscheinlich overkill.

Und auch 2d spiele brauchen Engines, zb um zu bestimmen was über was gezeichnet wird, (sage nur bauer hinter oder vor haus?)
Wobei man dazu sagen muss solange du nciht wirklich 3d logic hast (die in anno ist 100% 2d tile basiert) ist der zusätzliche aufwand relativ beschränkt (vom modeln jetzt mal abgesehen) Ds ganze ist im prinzip ne highmap als basis, ab wert x (zb grau)  sagste ist über wasseroberfläche, und inseln in anno sind soweiso immer auf einer ebene von den berg models abgesehen.


BTw U-Script ist eine stark an java angelehnte Scriptsprache die in der UT engine läuft.


----------



## Lowpass (26. Apr 2010)

genc hat gesagt.:


> So, sorry hab jetzt wieder Zeit.
> *Und wie stelle ich mir eine Spieleengine vor?*



Es gibt ganz unterschiedliche Engines auf ganz unterschiedlichen Abstraktions-Levels für ganz unterschiedliche Spiele und es ist absolut nicht unüblich, dass man sich zu Beginn der Entwicklung eines Spieles eine _eigene_ Engine baut - als Framework, das einem

1. die eigentliche Spiele-Entwicklung vereinfacht und beschleunigt und 
- vielleicht auch -
2. die Entwicklung des eigentlichen Spiels eventuell auch Nicht-Programmierern ermöglicht

Eine Engine könnte in einem einfachen Fall eine Bibliothek sein mit Funktionen, die einem benötigte Standard-Aufgaben abnehmen - wie Quaxli schreibt, könnte man auch sein Set an wiederverwendbarer, selbstgebauter Klassen als Engine bezeichnen.
Dann gibt es aber auch Engines (und ich denke, das sind die Engines, die man gemeinhin als "Grafik-Engines" bezeichnet), mit grafischen Editoren, bei denen das Schreiben von Programmcodes absolut in den Hintergrund gerät.

Ich habe mal einen Video-Clip gesehen, in dem ein grober Einblick gegeben wurde, wie man mit der Cry-Engine arbeitet. Da funktioniert nahezu alles grafisch. Und neben den ausgeklügelten Werkzeugen für grafisches Design (natürlich in 3d), werden auch Dinge wie Schwerkraft oder Flugbahnen modelliert und nicht mehr wirklich _programmiert_. Man modelliert die Gegenstände und weist ihnen physikalische Eigenschaften (Gewicht, Material etc.) in Form von Zahlenwerten zu. Anschliessend verhalten sie sich so, wie man es sich wünscht. Räder drehen sich, Gegenstände fallen runter, wenn Dinge geworfen werden beschreiben sie eine korrekte Flugbahn etc.
Das ist dann die High-End-Ecke der Grafik Engine und die Lizenz für so ein Produkt (also die Berechtigung, es für eigene Spiele kommerziell nutzen zu dürfen), kostet ein Vermögen. Was ich mal gesehen hatte, waren Lizenz-Kosten für die Half Life Engine. Da sprechen wir dann von 6-stelligen Beträgen.

Am anderen Ende gibt es Freeware-Tools, die auch grafisch aufgebaut sind, aber bedeutend einfacher. Bekanntes Beispiel hierfür ist das "Adventure Game Studio", das nach dem grossen Vorbild von Ron Gilbert aufgebaut ist. Ron Gilbert hatte ja anfangs der 80er die geniale Idee, dass er für sein Spiel "Maniac Mansion" nicht einfach mit programmieren loslegt, sondern sich erst ein Programm baut, mit dem er dann Maniac Mansion entwickeln kann: SCUMM (Script Utility for Maniac Mansion).
Wie diese Engine aufgebaut ist, kann man sich eben etwa anhand des Adventure Game Studios vorstellen. Wenn man ein ganz einfaches Grafik-Adventure entwickelt, das sich an den alten Point & Click-Adventure von Ron Gilbert und Lucas Art orientiert, muss man kaum eine Zeile Code programmieren. Man lädt zum Beispiel einfach die einzelnen Bilder der Figur ins Programm - von rechts, von links, von vorne, von hinten + die Bilder für Bewegungsabläufe - und das Programm erstellt daraus den kompletten Code. Auch Hintergrundbilder lädt man einfach rein und mit einfachen grafischen Tools gibt man an, was davon sich im Hintergrund befindet (d.h. die Figur kann vorne durch) und was davon im Vordergrund (d.h. die Figur "verschwindet" dahinter). Dann kann man Bilder von Gegenständen hochladen, diesen Eigenschaften geben etc.
Auch Dinge wie das "Inventar" der Figur lassen sich ganz einfach konfigurieren, einbinden und mit Spiel-Aktionen verknüpfen.
Hier ist die Site dieses Projekts: AGS - Adventure Game Studio, wo es auch Anleitungen und ein Forum gibt.

Wenn Du ein eigenes Spiel entwickeln willst, stellt sich also durchaus die Frage, ob Du halt nicht eben erst ein Tool entwickelst, das Dir dann die Entwicklung deines Spiels vereinfacht. Das mag erst zusätzlicher Aufwand bedeuten, aber zum einen bist Du so gezwungen, Dir von Anfang an ausführlich Gedanken zum Konzept Deines Spiels zu machen (was an sich schon eine gute Sache ist) und eine eigene Engine kannst Du eben zu 100% Deinen Bedürfnissen anpassen.


----------



## Evil-Devil (26. Apr 2010)

Empire Phoenix hat gesagt.:


> BTw U-Script ist eine stark an java angelehnte Scriptsprache die in der UT engine läuft.


Nicht wirklich. Die Unterschiede zu Java sind gravierend. Allgemein ist UnrealScript als ein Mix aus C++/Java sowie eigenen Elementen zu verstehen.

Mittels UnrealScript werden nahezu alle Ingame Elemente gesteuert sofern sie nicht zeitkritisch sind. In dem Falle wird auf nativen Code zurückgegriffen. Seit der UE3 gibt es für Mapper auch die Möglichkeit das Verhalten von Actors und Regeln via Kismet direkt in der Map zu definieren. Damit haben diese ein sehr mächtiges Werkzeug in der Hand. Allerdings beschränkt sich Kismet auf die jeweilige Map. Für TCs ist es somit nicht geeignet und man muss zu UnrealScript greifen.

Falls du dich näher mit dem UDK beschäftigen willst oder einfach nur Fragen zum Thema UnrealScript/Mapping hast lege ich dir nachfolgende Ressourcen nahe:

Unrealed.info Forum - UT3 Editor, UDK, Tutorial, Hilfe, Download, Map
Unreal Wiki
http://udn.epicgames.com/
UDK - Unreal Development Kit - Epic Games
Epic Games Forums
http://www.beyonunreal.com

Damit sind soweit alle wichtigen Seiten abgedeckt. Für Spezialwissen gibt es meist entsprechende Verweise in den Foren auf die jeweiligen TUtorialseiten. Zb. Angelmapper und Hourences
Das sind nur zwei von vielen, die es über Modding ins Biz geschafft haben.


----------



## Bertold Bricht (2. Mai 2010)

Lowpass hat gesagt.:


> Wenn Du ein eigenes Spiel entwickeln willst, stellt sich also durchaus die Frage, ob Du halt nicht eben erst ein Tool entwickelst, das Dir dann die Entwicklung deines Spiels vereinfacht. Das mag erst zusätzlicher Aufwand bedeuten, aber zum einen bist Du so gezwungen, Dir von Anfang an ausführlich Gedanken zum Konzept Deines Spiels zu machen (was an sich schon eine gute Sache ist) und eine eigene Engine kannst Du eben zu 100% Deinen Bedürfnissen anpassen.



...Und wenn du mit dem Gedanken spielst, das Programm irgendwann zu veröffentlichen, kannst du den Nutzern die Editoren gleich dazu packen und ihnen somit noch mehr Interesse am Spiel geben - Mit einer guten Engine kann es schnell zu guten Mods kommen

...Und wenn du weißt, dass du bestimmte Dinge nicht so gut kannst (wie etwa Karten erstellen), kannst du den Editor dafür entwickeln und jemand anders fragen, ob er dir damit hilft.


----------



## Landei (2. Mai 2010)

Java-Graphic-Engines:
jMonkeyEngine (3D)
Ardor3D.com (3D)
xith.org - Home of the Xith3D Project (3D)
Slick - 2D Game Library based on LWJGL (2D)

In ein paar Monaten gibt es hoffentlich die erste Beta der ersten Scala-Graphic-Engine:
sgine (3D, noch in Arbeit)


----------

