Spiel-Engine

Entwicklungsumgebung für Computerspiele
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 22. November 2005 um 21:16 Uhr durch Saxbryn~dewiki (Diskussion | Beiträge) (Ego-Shooter-Engines, welche für Konsolen- und PC-Spiele eingesetzt wurden). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Eine Game-Engine [ˈgeɪmˌɛndʒɪn] bildet das Grundgerüst der meisten Computerspiele. Sie besteht aus einer Programmbibliothek, die Entwicklern von Computerspielen häufig benutzte Werkzeuge zur Verfügung stellt.

Bestandteile

Sie besteht, je nach Spiel, unter anderem aus folgenden Bereichen:

Basisfunktionalitäten

Grafik-Engine

Die Grafik-Engine entscheidet darüber wie schön - oder auch wie hässlich - das Spiel auf den Monitor kommt.

Sie beinhaltet meist folgende Werkzeuge:

Physiksystem

Aktuelle Spiele werden mit zusehends realistischeren Physiksystemen (Physikengine) ausgestattet. Dadurch erscheinen sie noch realistischer, wenn z. B. eine geworfene Handgranate einen Hügel herunterkullert, anstatt darauf liegen zu bleiben. Man kann zwischen verschiedenen Arten von Physik unterscheiden:

  • Weit verbreitet ist Rigid-Body-Physik, das heißt die Simulation der Newton'schen Mechanik für feste Körper.
  • Ein Teilaspekt von Rigid-Body-Physik ist Ragdoll-Physik: Virtuelle Charactere können physikalisch korrekt fallen, und können dabei mit Armen, Beinen und Kopf an anderen Gegenständen anstoßen.
  • Manche Spiele simulieren auch Fahnen (etwa in Prince of Persia), Kleidung, und Wasser.

Physikengines bekamen im Jahr 2005 auch eine Hardwareunterstützung spendiert, sogenannte Physikbeschleuniger, um physikalische Effekte genauer und in größerem Ausmaß berechnen zu können. Prinzipiell gilt: Je besser die Gesetze der Physik dargestellt werden, desto höher ist der Realismusgrad bei der Interaktion mit Gegenständen in virtuellen Welten.

Soundsystem

Der Sound kommt in aktuellen Spielen auch nicht zu kurz. Topspiele wie z.B. Far Cry oder Half-Life 2 unterstützen 5.1-, teilweise sogar 7.1-Surroundsound, entsprechende Boxen vorausgesetzt. Dadurch wird der räumliche Eindruck eines Spiels verstärkt, da man die Position von Gegnern "erhören" kann.

Die Game-Engine sollte das Abspielen von Musik und 3D-Sounds vereinfachen.

Künstliche Intelligenz

Bei der künstlichen Intelligenz (KI) der computergesteuerten Mitspieler und Gegner wurden ebenfalls große Fortschritte erzielt. Mittlerweile verständigen sich Teams untereinander, suchen Deckung, kreisen Spielfiguren ein etc. Besonders knifflige KIs sind zudem lernfähig und passen sich an die Spielweise der Spieler an.

Ein klassischer Bestandteil von KI ist die Pfadsuche. Etwa bei Strategiespielen und auch bei Ego-Shootern müssen Figuren im Spiel selbstständig einen Weg von A nach B finden. In dem Computerspiel Die Siedler beispielsweise laufen zahlreiche Figuren selbstständig von ihrer Wohnstätte zur Arbeit und umlaufen dabei Hindernisse wie Berge oder andere Figuren.

Zustandsspeicherung

Um den aktuelle Spielstand abzuspeichern und wieder reinzuladen gibt es zwei Ansätze:

  • Serialisierung des Objektbaums: Alle Objekte, deren Zustände und Beziehungen werden mehr oder weniger automatisch komplett gespeichert. Die Zustände aller betroffenen Objekte der Game-Engine werden in eine Bytefolge (Stream) umgewandelt und können daraus auch wieder hergestellt werden. Dies erzeugt typischerweise größere Dateien, es wird aber auch wirklich der gesamte Spielzustand gespeichert.
  • Nur bestimmte Daten werden gespeichert. Vorteil sind kleine Dateien, und die Spielzustände können etwa auch auf Speicher-Modulen von Konsolen gespeichert werden. Nachteil ist ein größerer Programmieraufwand, weil die Programmierer genau programmieren müssen, was abgespeichert wird. Aufgrund dieser Komplexität greifen Game-Engines daher oft auf einfachere Verfahren zurück, etwa daß man den Spielzustand nur an bestimmten Stellen im Spiel abspeichern kann.

Steuerung

Die Steuerung ist nicht zu unterschätzen. Unpräzise Steuerung führt schnell zu Frustration. Haben die Entwickler früherer PC-Spiele noch auf die Pfeiltasten der Tastatur gesetzt, so gibt es heute für verschiedene Genres andere, bessere Lösungen. In Rennspielen ganz klar ein Lenkrad, am besten mit Force Feedback. Bei Sportspielen z.B. die FIFA-Reihe greift man zum Gamepad. Strategie- und Aufbauspiele lassen sich am besten mit der Maus steuern Bei Ego-Shootern hat sich eine Kombination aus Maus und Tastatur durchgesetzt.

Dazu beinhaltet eine gute Engine Werkzeuge zum Zugriff auf Eingabegeräte wie Tastatur, Maus und Joystick

Netzwerk-Code

Der Netzwerk-Code bestimmt die Voraussetzungen für den Multiplayerteil eines Spiels, z.B. wieviele Spieler gleichzeitig am Spiel teilnehmen können oder ob ein 56k-Modem ausreichend ist oder DSL benötigt wird.

Datenmanagement

Zum Laden und Speichern von Spielständen, Benutzer- und Leveldaten sowie zur absturzsicheren Speicherverwaltung ist ein gutes Datenmanagement nötig. Deshalb verfügen viele Game-Engines über folgende Funktionen:

Skripting

Skriptsprachen dienen der Programmierung der Spielabläufe. Hierfür könnte man auch Programmiersprachen wie C++ nutzen, allerdings haben Skriptsprachen folgende wesentlichen Vorteile bei der Spieleentwicklung:

  • Skriptsprachen sind meist roubuster und verursachen weniger Abstürze. Änderungen am Spielablauf bedeuten daher weniger Risiko für den Entwicklungsprozess.
  • Spieledesigner, welche den Inhalt der Spiele bestimmen, sind in aller Regel keine professionellen Programmierer. Skriptsprachen sind auch für Nicht-Programmierer schnell zu erlernen.
  • Am Inhalt des Spiels werden meist viele Änderungen vorgenommen. Skript-Sprachen machen es einfach, die Programmierung zur Laufzeit interaktiv zu ändern, ohne das Spiel neu starten zu müssen.

Eine Scriptsprache ist meist langsamer als andere Programmiersprachen wie etwa C++. Die Game-Engine selbst ist daher meist nicht in einer Scriptsprache programmiert, sondern in aller Regel in C++. Die Game-Engine stellt aber meist eine Script-Sprache zur Verfügung. Insbesondere für größere Spieleproduktionen hat sich daher eine Zwei-Schichten-Architektur etabliert: Das eigentliche Spiel wird in der Script-Sprache entwickelt, welche von der zugrundeliegenden Game-Engine zur Verfügung gestellt wird.

Manche Game-Engines greifen auf vorhandene Skriptsprachen zurück, etwa LUA. Aufgrund der besonderen Anforderungen besitzen viele Game-Engines eine eigene Skript-Sprache, beispielweise UnrealScript in der Unreal-Engine, C-Script im 3D Gamestudio, oder Perch in der Shark 3D-Engine.

Unterschiede von Engines für Konsolen und PC

Game-Engines für Konsolen

Konsolen, beispielsweise die Playstation-Serie und Xbox-Serie, unterscheiden sich technisch von PCs vorallem in folgenden Aspekten:

  • Deutlich weniger Hauptspeicher
  • Spezialhardware, insbesondere zur Berechnung der 3D-Grafik
  • CD/DVD als primäres Speichermedium

Je nach Konsole kann man die Hardware zwar ähnlich programmieren wie PC-Hardware; allerdings geht dies dann auf Kosten der Qualität, da die Konsolen-Hardware dann nicht ausgeschöpft wird. Da die technischen Eckdaten von Konsolen aber typischerweise deutlich hinter aktuellen PCs zurückfallen, ist ein optimales Ausnutzen der Konsolenhardware wichtig für eine gute Game-Engine. Konsolen-Engines besitzen daher in aller Regel viel Code, welcher ausschließlich für eine spezielle Konsole entwickelt wird. Da CD und DVD merklich langsamer sind als Festplatten, andererseits Ladezeiten bei Konsolen besonders kurz sein sollen, spielt die Organisation der Daten auf DVD und die Ladetechnik eine wichtige Rolle.

Zertifizierungsprozess

Desweiteren müssen Spiele, die für Konsolen veröffenlicht werden, einen strengen Zertifizierungsprozess des Konsolenherstellers, etwa Sony oder Microsoft, durchlaufen. Um diesen zu bestehen müssen die Spiele eine umfangreiche Anforderungsliste erfüllen, welche beispielsweise bestimmte Anforderungen an die Ladezeiten von DVD fordert. Die meisten Anforderungen haben aber auch deutliche Konsequenzen für die darunterliegende Game-Engine. Auch aufgrund dieser Anforderungen besitzen Game-Engines für Konsolen typischerweise eine ganz andere Software-Architektur als PC-Engines.

Portierung von Konsole auf PC

Einfacher ist dagegen der Schritt von Konsolen zu PC: Eine Engine, die auf Konsolen läuft läßt sich in aller Regel problemlos auf den PC portieren, einfach weil dort die Anforderungen geringer sind. Allerdings beklagen Computerspieler bei derartigen Spielen dann öfters, daß das Spiel auf dem PC nicht die weitreichenderen Möglichkeiten aktueller PC-Hardware ausnutzt. Ein klassisches Beipspiel sind Playstation 2-Spiele, welche auch auf den PC portiert worden sind, und welchen man oft ansieht, daß die Grafik für die technisch eher beschränkte Konsolen-Hardware entworfen worden ist. Ein anderer Aspekt ist, daß die Spiele-Entwickler bei Konsolen nur für eine feststehende Hardware entwickeln müssen, während ein PC-Spiel auf PCs mit verschiedenster Ausstattung laufen muß. Dies hat weniger Einfluß auf die Software-Architektur, bedeutet aber für den Spieleentwickler, daß er die Engine umfangreich mit verschiedenen Hardware-Konfigurationen testen muß.

Entwicklungswerkzeuge

Entwicklungswerkzeuge spielen eine immer wichtigere Rolle bei der Entwicklung von Computerspielen. Viele professionelle Entwickler messen diesen inzwischen sogar eine größere Bedeutung zu als der eigentlichen Game-Engine. Grob kann man verschiedene Ansätze unterscheiden, die meist auch in Kombination eingesetzt werden:

  • Plugins für existierende Programme. Beispielsweise ermöglichen derartige Plugins Daten aus bekannten 3D-Modellierungsprogrammen in ein spezielles Format für die Game-Engine zu konvertieren.
  • Eigenständige Programme.
  • Die Game-Engine hat eingebaute Editierfunktionalität. Dies ist bei |Konsolen nur wenig praktikabel.
  • Dynamische Verbindungen: Änderungen, die man in eigenständigen Programmen oder Plugins vornimmt werden von der Game-Engine direkt übernommen. Dieser Prozess etabliert sich insbesondere für professionelle Konsolenentwicklung.

Immer wichtiger werden die sogenannten Turn-Around-Zeiten: Je schneller ein Spieleentwickler das Ergebnis seiner Änderungen im Spiel sieht, desto produktiver kann er arbeiten. Da Spieleproduktionen immer aufweniger werden, spielt dieser Aspekt eine immer wichtigere Rolle. Aus diesem Grund werden die Entwicklungswerkzeuge und die Game-Engines immer weiter verzahnt.

Engines zum Abspielen vorhandener Spieldaten

Da ältere Spiele (DOS) auf aktuellen Plattformen nicht mehr ohne weiteres laufen, haben engagierte Entwickler verschiedene Projekte gestartet, um neue Engines zur Interpretation von Spieldaten zu schreiben. In diesem Fall liefert das Projekt meist nur die Engine, die Spieldaten muss der Nutzer bereitstellen (auf diese Weise werden von den Entwicklern die Urheberrechte der ursprünglichen Hersteller nicht verletzt). Beispiele hierfür sind die ScummVM, ein auf modernen Plattformen lauffähiger Interpreter für die Scriptsprache von LucasArts-Adventures und anderen oder Exult, ein Emulator für Ultima VII / Ultima VII Teil 2.

Bekannte kommerzielle Engines

Ego-Shooter-Engines, welche für Konsolen- und PC-Spiele eingesetzt wurden

General-Purpose Game Engines, welche für Konsolen- und PC-Spiele eingesetzt wurden

  • Gamebryo: Emergent Technologies (Prince of Persia, Sid Meier's Pirates, Dark Age of Camelot, Morrowind)
  • Virtools Dev: Virtools (Martin Mystere, Sealab 2021 Sweet Mayhen, Alexandra Ledermann, Ballance by Cyparade, Syberia II, Jack the Ripper, Beesly's Buzzwords, Smash Up Derby, Bratz, Post Mortem, Syberia Adventure, Michael Schumacher Racing World, Road to India Adventure Game, Deer Avenger 3D, "Core" Game Concept, Help I'm a Fish)
  • Shark 3D: Spinor (Dreamfall)
  • Renderware: Electronic Arts (EA) (GTA III Reihe, Tony Hawks Reihe) {Anm.: Nach Übernahme durch EA im Jahr 2004 wurde das externe Lizenzgeschäft gerüchteweise inzwischen eingestellt]

General-Purpose Game Engines, welche für PC-Spiele eingesetzt wurden

  • 3D Gamestudio Conitec (Sunset Down, Inago Rage, Josef's Tear, Glider, Macromarkt, Memory Cube, Ploing 2, Neon)
  • Vision Engine: Trinigy (Lula 3D, Desperados 2, Gotcha!, Psychotoxic, Hinter Gittern, Back to Gaya, Emergency 3)
  • Nebula Device: Radon Labs (Project Nomads, Torres, Tigris & Euphrates, Tikal, Löwenherz, Mission Schatztaucher, Brand im Hafen, Chaos am Set, Far West, Railroad Pioneer, Mission Amazonas)

Siehe auch: Grafik-Engine, Surround Sound, Physikengine