Engine

Einstiegsfragen, Mathematik, Physik, künstliche Intelligenz, Engine Design
Antworten
room
Beiträge: 2
Registriert: 22.11.2010, 18:30

Engine

Beitrag von room »

Hallo alle zusammen,
ich programmiere seit einigen Monaten in c++. Ich weiß, ich habe noch viel zu lernen. Trotzdem interessiere mich dafür was genau eine Spiele-Engine ist. Ich habe bereits im Internet recherchiert werde aber nicht richtig schlau draus. Wenn ich z.Bsp. den Quake2 source code habe, habe ich dann automatisch die Engine? Wie gesagt ich verstehe das noch nicht so ganz. Würde mich freuen, wenn jemand hilft.
Danke.
pUnkOuter
Establishment
Beiträge: 303
Registriert: 15.04.2002, 15:59

Re: Engine

Beitrag von pUnkOuter »

Engine kann man salopp mit "Motor" übersetzen. Es geht also um den Kern des Spiels, also den Teil des Codes, der für die Grafikroutinen, Datenstrukturen zum Speichern und Laden des Spielinhalts, Inputverarbeitung, Soundausgabe, etc. zuständig ist. Bei vielen Spielen, besonders aus dem Hobbysektor, kann man nicht konkret eine "Engine" abgrenzen, weil der Code nicht gut genug strukturiert ist. Aber bei manchen Spielen ist der Engine-Code klar umgrenzt, und kann z.B. benutzt werden um ein völlig anderes Spiel zu entwickeln, siehe z.B. die Source-Engine, welche eigentlich für FPS entwickelt wurde, mittlerweile aber für eine Vielzahl anderer Spiele eingesetzt wurde. Spiele-Engines werden auch als Primärziel entwickelt, und dann an andere Entwickler lizensiert. Vom Entwickler der Engine wird oft nur ein Referenzspiel auf der eigenen Engine veröffentlicht, und manchmal auch gar keins.

Schau dir mal diese Seite an, hier sind eine Menge Game-Engines aufgeführt, und man kann sie auch nach Features vergleichen. Es hat da von reinen Grafik-Engines bis zu vollwertigen Spiele-Autorensystemen alles was das Herz begehrt: http://www.devmaster.net/engines/
Ein Zeiger ins Blaue ist wie ein Wegweiser nach <SEGFAULT>. Wenn du denkst, mein Name hat was mit abgefuckter Kleidung und bunten Haaren zu tun, dann kehr besser um.
room
Beiträge: 2
Registriert: 22.11.2010, 18:30

Re: Engine

Beitrag von room »

Ok, danke schon mal für die Antwort. Mir geht es hauptsächlich darum, dass ich später auch meine Programmierkenntnisse nutzen kann. Nicht das mir durch eine Engine wirklich alles abgenommen wird. Das Programmieren bereitet mir sehr viel Freude.

Ich werde mir den Link von dir mal anschauen, vieleicht finde ich ja was passendes.
Benutzeravatar
Krishty
Establishment
Beiträge: 8245
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Engine

Beitrag von Krishty »

Die Engine ist das zwischen dem Spielinhalt und den Spielern. Da man einerseits das meiste davon nicht selber macht, sondern in Hardware gegossen und hinter einer API verpackt ansteuert, und sich Inhalt (oder „Content“) auch nicht präzise abgrenzen lässt, kann man eher von einer zumeist viel zu breit geratenen Schnittstelle zwischen fremden Leuten und dem Zeug anderer fremder Leute reden.

(Um der Richtigkeit halber; auch, wenn es dir nicht weiterhilft.)

Gruß, Ky
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Neophyte
Beiträge: 2
Registriert: 24.03.2010, 20:22

Re: Engine

Beitrag von Neophyte »

Wenn du ein (grafisches) Spiel programmierst wird eines von zwei Ereignissen eintreten:
a)Du merkst dass du grade eine Engine programmierst oder
b)Du merkst dass du eine brauchst.

Grob gesagt bietet die Engine eine große Anzahl von Klassen die man benötigt um eine bestimmte Software
zu entwickeln.
Dabei muss es sich nicht zwangsläufig um Spiele handeln.
Es gibt auch Netzwerkengines, KI-Engines, Sound-Engines, Gui-Engines etc.
Diese Engines vereinfachen (wenn sie gut sind) die Arbeit des Programmierers, beschleunigen sie
und optimieren die Software.
Hauptsächlich übernehmen sie dabei eine Schnittstellenfunktion.
Game-engines z.B stellen eine Schnittstelle zu OpenGl/DirectX her, bieten Klassen um Dateiformate zu laden und anzuzeigen,
Übernehmen die Tastaturabfrage, die Fehlerbehandlung, usw. usw.
Insofern ist die einfache Klasse cout oder cin also bereits Teil eine kleinen Engine (der "ios=input-output-stream engine")
die von den c++-entwicklern zur Verfügung gestellt wird.

Wenn du also den Quake2 Source hast wird da wohl auch die engine dabei sein ausser sie ist vorkompiliert und in eine .dll
ausgelagert (was keinen Sinn macht wenn man das Spiel eh Open Source stellt).
Allerdings ist auch die Quake3 Engine inzwischen veröffentlicht (aber nicht Open SOurce glaube ich)
glassbear
Establishment
Beiträge: 324
Registriert: 08.04.2003, 18:09
Alter Benutzername: Enrico_
Echter Name: Enrico
Wohnort: San Diego
Kontaktdaten:

Re: Engine

Beitrag von glassbear »

Neophyte hat geschrieben:Wenn du ein (grafisches) Spiel programmierst wird eines von zwei Ereignissen eintreten:
a)Du merkst dass du grade eine Engine programmierst oder
b)Du merkst dass du eine brauchst.
Das bezweifel ich mal. Oder ist neuerdings alles ala

Code: Alles auswählen

draw_sprite_at(x, y)
...
eine Engine?
Insofern ist die einfache Klasse cout oder cin also bereits Teil eine kleinen Engine (der "ios=input-output-stream engine")
die von den c++-entwicklern zur Verfügung gestellt wird.
naja, nach dieser Liste ist das gerade so eine Software Engine, weil der input anders aussieht als der Output. Wobei man auch hierüber streiten kann, ob ein String in der Konsole jetzt die transformierte Version der Eingabe ist.


@room: Schau dir mal den Wikipedia Link an ;)
wenn man das Spiel eh Open Source stellt).
Das Spiel ist nicht Open Source, nur der Code.
Allerdings ist auch die Quake3 Engine inzwischen veröffentlicht (aber nicht Open SOurce glaube ich)
Schon vor ein gaaanzen Weile. Dazu gabs hier bestimmt 10 News-Meldungen :lol:
Ein Hoch auf uns Männer... Auf die Frau, die uns HAT ( oder hat, und nicht weiß, dass sie uns hat ) ...auf die Idiotinnen ... besser gesagt VOLLPFOSTINNEN ... die uns hatten und uns verloren haben ... und auf die GLÜCKLICHEN, die das Vergnügen & Glück haben werden uns kennenzulernen!
Neophyte
Beiträge: 2
Registriert: 24.03.2010, 20:22

Re: Engine

Beitrag von Neophyte »

Das bezweifel ich mal. Oder ist neuerdings alles ala

Code: Alles auswählen

    draw_sprite_at(x, y)
    ...
eine Engine?
Darüber kann man sich streiten, denn dann könnte man sagen dass auch assembler schon eine Engine ist (nämlich eine Schnittstelle zwischen direkter Programmierung (mit Lochkarten etc.) und dem Entwickler. Darum sagen viele das es den Bergriff Engine gar nicht direkt gibt.
Aber zu dem code oben:
Man kann natürlich ein Spiel ohne Engine coden.
Bei einfachen SPielen ist das auch einfacher (aber nicht immer übersichtlicher).
Nur bei größeren Projekten kommt man einfach ohne nicht aus
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Engine

Beitrag von Aramis »

nsofern ist die einfache Klasse cout oder cin also bereits Teil eine kleinen Engine (der "ios=input-output-stream engine")
std::cout und std::cin sind Instanzen der Streamklassen. Natuerlich kann man sie als „Engine” sehen, genau wie du sie auch als Affenbrotbaum bezeichnen kannst ;-)

Eine Game–Engine ist schlicht ein Software-Framework, das verschiedene Aspekte der typischen Softwarearchitektur von Computerspielen/„interaktiven Multimedia-Applikationen” vereinfacht indem die gesamte Grundfunktionalitaet in moeglichst allgemeiner Form zur Verfuegung gestellt wird. Das Extrem einer „Engine” gemaess dieser Definition sind also GameMaker-Tools (wie z.B. Unity), die es ermoeglichen Spiele via WYSIWYG „zusammenzuklicken”.

Du brauchst keine „Engine” um Spiel XY fertigzukriegen. Aber du brauchst logischerweise den Quellcode fuer dein Spiel. Wenn du dann mit Projekt AB anfaengst, wirst du feststellen, dass du anfaengst dich zu wiederholen. Die gemeinsamen Teile sind deine „Engine” :-)

Bei entsprechend groß produzierten Titeln sind diese Kernkomponenten (die ggf. fuer mehrere Titel eines Entwicklers/Publishers zum Einsatz kommen und staendig weiterentwickelt werden), ziemlich umfangreich und besitzen v.a. eine eigene Toolchain, also Editoren etc … durch einige Platzhirsche (Unreal, Crytek, ehemals Quake) entsteht dann bei Neulingen der Eindruck, dass man zwingend eine tolle Engine brauche um ein Spiel zu machen (und dass die Wahl der Grafikengine das einzige Merkmal fuer die Grafikqualitaet sei) – soweit die Story des immer mal wieder aufploppenden Gespenstes „Game–Engine”. :-)

Die Kurzfassung: viel Laerm um nichts. Mach einfach weiter mit C++.
joggel

Re: Engine

Beitrag von joggel »

Aramis hat geschrieben:
Du brauchst keine „Engine” um Spiel XY fertigzukriegen. Aber du brauchst logischerweise den Quellcode fuer dein Spiel. Wenn du dann mit Projekt AB anfaengst, wirst du feststellen, dass du anfaengst dich zu wiederholen. Die gemeinsamen Teile sind deine „Engine” :-)
Beste und sympathischste Begründung die ich bis jetzt gehört habe... :)
Antworten