Game Engines sind großartige Lösungen, die die Komplexität der Spieleentwicklung reduzieren und damit den Fokus auf die Idee selbst lenken können. Leistungsstarke Engines wie die Unreal Engine, Source Engine und Indie-Darling Unity3D sind Beispiele für gute Tools, die von Leuten entwickelt wurden, die Spiele größer und besser machen wollen. Game Engines bieten Entwicklern eine Reihe von Komponenten und Helfern, mit denen sie ihre Spiele schneller und mit weniger Aufwand erstellen können, aber die wichtigsten Faktoren sind die Interoperabilität zwischen den verschiedenen verfügbaren Spielsystemen. In dem folgenden Beitrag möchten wir ein wenig näher auf die Funktionsweise von Game Engines eingehen.

Alles zu Game Engines

Wie Computer funktionieren.

Um zu verstehen, wie Game-Engines funktionieren, müssen wir uns zunächst ansehen, wie Computer im Allgemeinen als eine Sammlung von Systemen funktionieren. Computer arbeiten nach einem Prinzip, das man als „Schichten abstrahierter Komplexität“ bezeichnen kann, was nur bedeutet, dass alles in einem Computer auf etwas Kompliziertes aufgebaut ist, mit dem man leicht arbeiten kann. Im wahrsten Sinne des Wortes ist ein Computer eine Maschine, die Muster von schwankenden Spannungen in einem elektrischen Signal verwendet, um Arithmetik zu machen, aber es wäre unmöglich, etwas auf einem Computer zu erledigen, wenn man jedes Mal, wenn man etwas bauen wollte, darüber nachdenken müsste.

Um ihnen ein Beispiel zu geben, wie dumm ein Computer ist, werden wir versuchen, die verschiedenen Ebenen in den einfachsten Begriffen zu beschreiben: Unten in der Tiefe der Hardware eines Computers befindet sich ein Stromkreis, der so manipuliert wird, dass sich die Spannung im Stromkreis ändert. Diese Schaltung durchläuft Transistoren, die die sich ändernden Spannungen in ein vorhersagbares Signal von entweder aus oder ein (0 oder 1) interpretieren. Auf diese Weise wird die Spannung, die bei direkter Messung eher wie eine Welle aussieht, zu einem Musten von 0 und 1 Sekunde, die in der obigen Schicht als binäre Muster interpretiert werden. Diese binären Werte können in „Worten“ aneinandergereiht werden, um Befehle zu bilden, die der Computer verstehen muss. Diese Befehle werden dann wiederum in Prozessen zusammengefasst, die noch kompliziertere Dinge wie die Manipulation des Speicherplatzes und das Senden/Empfangen von Signalen von Peripheriegeräten, die an das Computersystem angeschlossen sind, ausführen können. Kombinieren Sie genügend Prozesse und Sie haben ein Betriebssystem, das so programmiert werden kann, dass es wundersame Aufgaben erfüllt, um zu unterhalten und zu erziehen, zu beleuchten oder zu löschen.

Diese Schichten sind die Grundlage der Informatik, wobei jede Schicht ihre eigenen Spezialgebiete hat, jedes Gebäude übereinander liegt und zusammenarbeitet, um den modernen Allzweckcomputer funktionsfähig zu machen. Auf dieser Säule der Komplexität stehen die Hochsprachen, die einfach zu lesenden und schreibenden Skriptsprachen, die Webbrowser und Game-Engines antreiben. Dank der Abstraktionsebenen können Sie der Game Engine sagen, dass sie einen 3D-Charakter in einem Raum zeichnen soll, ohne sich Gedanken darüber machen zu müssen, welches elektrische Signal Sie an den Bildschirm senden müssen, um die richtigen Pixel zu zeichnen.

Wenn Sie mehr wissen wollen, veröffentlichen die Leute von Computerphile regelmäßig Videos über die Funktionsweise von Computern: Computerliebhaber auf YouTube.

Komponenten einer modernen Game Engine.

Game Engines sind komplizierte Sets von Komponenten, die viele nützliche Funktionen für die Erstellung von Spielen bieten. Im Gegensatz zu allgemeinen Entwicklungs-Framework wie Cocoa Touch (zum Erstellen von iOS-Anwendungen) oder .NET (zum Erstellen von Windows-Anwendungen) sind Game Engines speziell für die Erstellung von Spielen konzipiert und haben alle ihre Komponenten so organisiert, dass sie genau das tun, zum Nachteil anderer Anwendungsformen. Um den Mangel an einfachen Werkzeugen zum Erstellen von Menüleisten und Widgets auszugleichen, haben die Game-Engines Grafik-Engines optimiert, um so schnell wie möglich zu sein und statt Standard-PopUp-Fenster und System-Sounds zu verwenden, erhalten Sie Sound-Engines, die Sounds im 3D-Raum platzieren.

Input.

Einer der wichtigsten Aspekte eines Spiels ist die Möglichkeit, es zu spielen, so dass die Game-Engines in der Regel eine Reihe von Eingabetypen unterstützen: Tastatur, Maus, Gamepad und Touch sind die wichtigsten und alle weniger verbreiteten Eingabemethoden (Joystick, Lenkrad, Rollerball, Multi-Touch) sind Teilmengen davon. Es gibt verschiedene Möglichkeiten, mit Eingaben umzugehen, aber es gibt zwei gemeinsame Mittel: Events und Polling.

Eingabe-Ereignisse funktionieren, indem der Computer auf irgendeine Form der Eingabe wartet (Maustaste gedrückt, Tastaturtaste losgelassen, Joystickachse geändert, Berührung gedrückt) und ihren benutzerdefinierten Code auslöst. Dies kann mit einer „Mapping-Tabelle“ kombiniert werden, die Tastatur-/Controller-/Maus-Tasten mit benannten Aktionen wie „Springen“ oder „Schießen“ verbindet, so dass Sie ihren Code erstellen können, ohne sich darum kümmern zu müssen, dass der Benutzer mit einem anderen Layout als dem, um das Sie ihr Spiel herum bauen, spielen möchte.

Polling wird normalerweise durchgeführt, wenn es um Positionswerte geht, wie z.B. die x/y-Koordinaten der Maus oder die Neigung des Analog-Sticks eines Gamepads. Die Game-Engine bietet die Möglichkeit, die Werte abzurufen, wann immer der Entwickler es wünscht und es ist Sache des Entwicklers, auf Änderungen dieser Werte zu reagieren, egal ob er einen Charakter bewegt oder die Position des benutzerdefinierten Mauszeigers ändert.

Grafiken.

Außerdem, was wäre ein Spiel ohne innovative Grafik? Ein wichtiges Verkaufsargument von Game-Engines (insbesondere von hochkarätigen wie der CryEngine) ist die beeindruckende Grafik, die sie in der Regel mit der einfachen Produktion kombinieren können. 3D-Spiele basieren auf 3D-Assets, die normalerweise in einem externen 3D-Rendering-Programm wie Maya oder Blender erstellt und in die Game-Engine importiert werden. Game Engines, die viele Importformate unterstützen, tragen diese Tatsache mit Stolz, so dass Spieleentwickler in dem ihnen vertrauten Programm arbeiten und es in ein funktionierendes Spiel importieren können, ohne dabei Unmenschliches leisten zu müssen.

Sobald das Asset importiert wurde, können Sie es zusammen mit Bump-Maps, spiegelnden/transzulenten Materialien und Schatten zum Spiel hinzufügen, um ein glaubwürdiges Objekt zu erstellen. Game Engines bieten auch eine Reihe von Beleuchtungstechnologien und -effekten, die den hinzugefügten Assets Leben einhauchen und die Animation dieser Assets handhaben, einschließlich verrückter Dinge wie das Überblenden von Animationen zum Übergang zwischen Laufen/Springen/Schießen in einer glaubwürdigen Art und Weise.

Die Beschreibung aller grafischen Funktionen, die die Game-Engines bieten, würde Tausende von Wörtern erfordern, aber im Grunde genommen sind alle Game-Engines da, um ihre Aufgabe so einfach und unkompliziert wie möglich zu gestalten. Entwickler wollen sich nicht damit beschäftigen, ihre sorgfältig erstellten 3D-Modelle in kryptische Formate zu konvertieren oder Metadaten manuell zu erstellen, um sie korrekt darzustellen. Game Engines machen ihre beste Arbeit, wenn beim Nutzer bei seiner praktischen Kreativarbeit nicht zu viel Ärger entsteht. Dies, kombiniert mit Post-Processing-Effekten, Geländebildung und Partikeleffekten, bedeutet, dass Sie eine ganze Spielwelt innerhalb der Game-Engine erstellen können, indem Sie Assets aus verschiedenen Quellen kombinieren.

Sound.

Sound ist ein integraler Bestandteil von Spielen, obwohl er die meiste Zeit übersehen wird. Das Hinzufügen von Soundeffekten zu Spielen ist nicht so einfach, wie man denkt, besonders mit dem Aufkommen von 3D-Spielen.

Soundeffekte kommen in der Regel nicht nur aus den Lautsprechern, wie sie aufgenommen wurden, sondern die meisten Game-Engines haben die Möglichkeit, Sounds innerhalb der 3D-Welt zu platzieren, die die Lautstärke verändern, je nachdem, wo ihr Charakter relativ zum Sound ist. Es gibt auch viele Möglichkeiten, den Realismus eines Sounds zu verbessern, indem man Tonhöhenmodulation und Nachhall hinzufügt, um den Eindruck zu erwecken, dass der Sound von den Wänden seiner Umgebung abprallt. Nehmen wir z.B. den Klang kollidierender Schwerter in einem offenen Feld oder in den Tiefen eines Verlieses und wie er zur Athomasphäre beiträgt, wenn die Klänge die Welt um sie herum reflektieren.

Musik und GUI-Sounds funktionieren anders, da sie ohne Rücksicht auf eine 3D-Position hinzugefügt werden, sondern so gespielt werden, als ob der Sound aus dem Kopf des Spielers kommt. Natürlich muss die Engine die Mittel bereitstellen, um die Musik an die Stimmung des Spiels anzupassen, anstatt Sie nur auf die volle Lautstärke zu bringen.

Networking.

Es ist Jahrzehnte her, seit Spiele mit Online-Multiplayer begonnen haben und wir sind inmitten eines sozialen Gaming-Phänomens, das all ihre Gaming-Abenteuer mit ihren Freunden verbinden will. Dies erfordert ebenso viel Logik, die sich um die Kommunikation mit verschiedenen Servern oder sogar anderen Client-Computern dreht, was ein kompletter Alptraum ist, der manuell zu handhaben ist. Glücklicherweise bieten die meisten modernen Game-Engines eine Menge vorgefertigter Komponenten und Helfer-Skripte, die den Großteil des Schwertransports übernehmen und es ihnen ermöglichen, an der Reaktionsfähigkeit und dem Spaß des Multiplayers zu arbeiten, anstatt sich um die Feinheiten des TCP/UDP-Traffics zu kümmern.

Physik.

Es ist noch nicht lange her, dass realistische Physik nicht wirklich ein Verkaufsargument für Spiele war, wobei die meisten von ihnen sich auf ihre eigene verrückte Interpretation der Gesetze der Physik verlassen haben. Heute gibt es mehr als eine handvoll Game-Engines, die größten sind Havok, Box2D und PhysX, die in die Game-Engine verwoben sind, um die komplizierte Mathematik zu beherrschen, die nötig ist, um die Welt realistisch zu simulieren.

Eine Sache, die verstanden werden muss, ist, dass Physik kein integraler Bestandteil des Renderings von 3D-Spielwelten ist, obwohl moderne Game-Engines beides kombinieren, so dass der Endbenutzer sich der Unterscheidung nicht bewusst sein muss. Wenn man einen Würfel in einem Spiel rendert, ist es nur ein visueller Effekt, vielleicht kombiniert mit Lichtbrechung und Bump-Maps, um ihm das Gefühl zu geben, dass er wirklich in der Welt existiert, aber es gibt nichts, was dem Würfel innewohnt, was besagt, dass er sich an physikalische Gesetze halten muss. Die Physik muss dem Würfel hinzugefügt werden, damit er auf die Schwerkraft reagiert oder vom Benutzer geschoben/geshootet wird. Der Würfel erhält eine physische Form, die möglicherweise nicht mit der visuellen Form übereinstimmt, sowie Masse, Reibung, Sprungkraft und andere Eigenschaften, um ein Objekt zu schaffen, das mit der Welt um ihn herum interagieren kann.

Der Umgang mit Physik ist ein kostspieliger Prozess und nur das Hinzufügen von physischen Körpern zu den Objekten, die reagieren müssen, ist ein einfacher Weg, um Spiele schneller laufen zu lassen. Dies ist der Grund, warum Sie entlang einer Reihe von Bäumen gleiten können, als ob sie eine flache Wand wären, denn die Berechnung, die notwendig ist, um ihre Kollision mit jedem einzelnen Baumstamm zu bestimmen, ist eine Zeitverschwendung für das Spiel, wenn Sie nur dem Korridor folgen sollten, anstatt diesen zu erforschen.

Grafische Benutzeroberflächen.

Obwohl sie nicht wirklich in der Lage sind, die typische Benutzeroberfläche eines Windows-Programms mit einer Menüleiste und schwebenden Fenstern zu erstellen, neigen Game Engines dazu, zumindestejns rudimentäre GUI-Fähigkeiten zu bieten. Spiele neigen dazu, ihre eigene benutzerdefinierte Benutzeroberfläche zu haben, die zum Stil des Spiels passt, daher ist die Bereitstellung einer Standard-Benutzeroberfläche nicht wirklich so wichtig wie die Bereitstellung von Mitteln, mit denen Entwickler ihre eigenen benutzerdefinierten Buttons, Dropdowns, Slider und dergleichen erstellen können, indem sie Texturen, Farben und Ereignisse kombinieren.

Verschiedene Game-Engines behandeln das Problem der GUI unterschiedlich, wobei einige das Problem völlig ignorieren und die Entwickler die Funktionen manuell erstellen müssen. Das ist nicht gerade das Schwierigste, denn eine GUI ist nur eine Liste von Texturen/Bildern, die mit der Tastatur/Gamepad angeklickt oder ausgewählt werden können.

Skripte.

Ein weiterer großer Teil der Game-Engines sind vorgefertigte Skripte, die an Objekte in der Spielwelt angehängt werden können. Die Terminologie unterscheidet sich von Engine zu Engine, einige verwenden den Begriff „Behaviors“, während andere von „Spielobjekten“ sprechen, die sich von „visuellen Objekten“ unterscheiden, aber am Ende läuft es auf eine einfache Sache hinaus: Jemand anderes hat die Arbeit für Sie erledigt.

Die meisten Game-Engines enthalten Skripte, um ein Spiel mit dem Spieler in einer bestimmten Position zu beginnen, Kameras hinzuzufügen und zu bewegen, Partikelgeneratoren zu starten/stoppen, Lichter zu manipulieren, Ereignisse auszulösen, wenn sich ein Spieler in einen Bereich bewegt und eine ganze Reihe anderer Funktionen. In manchen Fällen kann es so einfach sein, ein 3D-Modell in die Spielwelt einzufügen und es als 3rd-Person-Player-Charakter zu bezeichnen und die Game-Engine verfügt über vorgerfertigte Skripte, um den Charakter zu bewegen und zu animieren, die Kamera zu drehen und die Welt auf die Position des Spielers reagieren zu lassen.

Künstliche Intelligenz ist ein großer Teil der Skripte/Module/Behaviors und steckt in nahezu alles, was die Game-Engines bieten, wobei die kompliziertesten die Möglichkeit bieten, zu diktieren, wie Charaktere reagieren, indem sie einen Baum von Verhaltensknoten aufbauen, anstatt Hunderte von Zeilen Code schreiben zu müssen. Die „Skripte“, die eine Game-Engine zur Verfügung stellt, hängen davon ab, wie viel sie für Sie tut, was eine große Hilfe sein kann, um ein Spiel schnell fertigzustellen, aber auch ein Problem darstellen kann, wenn Sie etwas außerhalb der bereitgestellten Funktionen tun wollen.

Vor- und Nachteile.

Einer der größten Vorteile von Game-Engines ist, wie sie Entwicklern Werkzeuge für die Entwicklung von Spielen zur Verfügung stellen, damit sie das Rad nicht neu erfinden müssen. Von der Handhabung der niedrigen grafischen Optimierungen, die für eine gute FPS-Rate notwendig sind, bis hin zum Import gängiger Asset-Formate, erledigen Game-Engines im Wesentlichen die „Routinearbeit“ der Spieleentwicklung, damit sich die Entwickler auf die Athmosphäre, die Story und andere Faktoren konzentrieren können, die für ein gutes Spiel wichtig sind.

Dies ist auch einer der größten Nachteile der Game-Engines, da Sie die Spiele, die gebaut werden, homogenisieren. Eine Game-Engine für Ego-Shooter ist möglicherweise nicht die Beste für ein Renn-RPG und ihre Wahl der Engine kann am Ende ihren kreativen Ausdruck behindern. Ein typisches Beispiel ist, dass alle Spiele der Unreal Engine 3 das gleiche visuelle „Feeling“ haben, trotz unterschiedlicher Stile und dass sie alle mit Textur-Pop und Soundeffekten zu kämpfen haben , die auf die technischen Grenzen der Engine selbst zurückzuführen sind.

Am Ende ist das aber egal, denn Game Engines bieten etwas, was in der modernen Welt des Desktop-/Mobil-/Konsolenspiels absolut notwendig ist: Plattform-Interoperabilität. Die Idee ist, dass Sie das Spiel auf einer Engine bauen und ihr Spiel auf eine Vielzahl von Plattformen exportieren können, abhängig davon, wie viele die Game Engine unterstützt. Der Vorteil für Entwickler ist schwer abzusprechen, da Sie ein Spiel einmal erstellen und dann auf mehreren Plattformen mit nur einem Knopfdruck verfügbar machen. Ob das Spiel für diese Plattform optimiert ist (Touch vs. Controller vs. Tastatur), ist eine andere Frage, daher ist die allgegenwärtige Interoperabilität ein zweischneidiges Schwert, das zu schrecklichen Posts führen kann, wenn es in gefühllosen Händen bleibt.

Schlußfolgerungen.

Game-Engines sind großartig! Sie geben Entwicklern Werkzeuge an die Hand, um Spiele schnell und effizient zu erstellen und gleichzeitig die harten Teile zu verstecken, die mit der Entwicklung von Spielen für die verschiedenen Plattformen verbunden sind. Selbst wenn du nur darauf abzielst, ein Spiel für eine bestimmte Plattform zu bauen, können dir Game-Engines einen Schub geben, der dein Spiel schneller und mit mehr Features herausbringt, als wenn du das Ganze von Grund auf neu bauen würdest.

Vielen Dank für ihren Besuch.