Engine
Engine
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.
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.
Re: Engine
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/
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.
Re: Engine
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.
Ich werde mir den Link von dir mal anschauen, vieleicht finde ich ja was passendes.
- Krishty
- Establishment
- Beiträge: 8245
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Engine
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
(Um der Richtigkeit halber; auch, wenn es dir nicht weiterhilft.)
Gruß, Ky
Re: Engine
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)
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)
-
- Establishment
- Beiträge: 324
- Registriert: 08.04.2003, 18:09
- Alter Benutzername: Enrico_
- Echter Name: Enrico
- Wohnort: San Diego
- Kontaktdaten:
Re: Engine
Das bezweifel ich mal. Oder ist neuerdings alles alaNeophyte 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.
Code: Alles auswählen
draw_sprite_at(x, y)
...
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.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.
@room: Schau dir mal den Wikipedia Link an ;)
Das Spiel ist nicht Open Source, nur der Code.wenn man das Spiel eh Open Source stellt).
Schon vor ein gaaanzen Weile. Dazu gabs hier bestimmt 10 News-Meldungen :lol:Allerdings ist auch die Quake3 Engine inzwischen veröffentlicht (aber nicht Open SOurce glaube ich)
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!
Re: 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.Das bezweifel ich mal. Oder ist neuerdings alles alaeine Engine?Code: Alles auswählen
draw_sprite_at(x, y) ...
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
- Aramis
- Moderator
- Beiträge: 1458
- Registriert: 25.02.2009, 19:50
- Echter Name: Alexander Gessler
- Wohnort: 2016
- Kontaktdaten:
Re: 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 ;-)nsofern ist die einfache Klasse cout oder cin also bereits Teil eine kleinen Engine (der "ios=input-output-stream engine")
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++.
Re: Engine
Beste und sympathischste Begründung die ich bis jetzt gehört habe... :)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” :-)