B Physik der Computerspiele - Einführung
Advanced Games Physics

Einführung in die Physik der Computerspiele

Alle Themen in diesem Kapitel:

Motivation

In meiner Tätigkeit als Lehrbeauftragter an der Hochschule für Technik und Wirtschaft Berlin habe ich mehrere Semester in Advanced Games Physics unterrichtet. Über die Jahre hinweg sind eine Reihe von Manuskripten und Beispielprogrammen entstanden, die ich auf diesem Wege allgemein zugänglich machen möchte. Mit dieser Einführung in die Physik der Computerspiele wende ich mich an solche Interessenten wie Studenten der Physik, Entwickler von physical engines oder Computer-Spielen, interessierte Schüler oder Abiturienten des Leistungskurses Physik
Advanced Games Physics soll das Verständnis für die physikalisch-mathematischen Grundlagen bei der Entwicklung von Spielen, die sich durch natürlich wirkende Bewegungsabläufe auszeichnen, wecken. Im Fokus stehen dabei
  • die physikalischen Gesetzmäßigkeiten, die die Bewegungen beschreiben,
  • maßstabsgerechte Objektdimensionen und eine geeignete Zeitskalierung,
  • sowie die Interaktionsfähigkeit, also die Einflussnahme des Spielers auf den Spielverlauf.
Der heutige Spieleentwickler kann auf eine Vielzahl von Games Development Tools mit integrierten Physics Engines zurückgreifen, so dass bis auf wenige Ausnahmen eigene Software-Entwicklungen für die elementaren Bewegungsabläufe nicht erforderlich sein werden. Dennoch scheint es mir wichtig, die Arbeitsweise solcher Physics Engines zu verstehen, um sie auch richtig anwenden zu können.

Alle Exkurse in die - im weitesten Sinne - Teilgebiete der Kinematik - werden mit interaktiven Programmbeispielen hinterlegt. Hier kann der Leser selbst ausprobieren, wie bestimmte physikalische Gesetze wirken. Meistens sind diese Beispiele parametrisiert, um so Erfahrungen experimentell zu gewinnen. Im download-Bereich stehen diese Programme auch im Quellcode zur Verfügung. Die Programmierung erfolgt in processing oder p5.js (Lizenzierung: Can I distribute my sketches?)


Zuletzt noch eine Bemerkung in eigener Sache: Für die hier vorgestellten Teilgebiete der Kinematik erhebe ich Ansprüche weder auf Vollständigkeit noch auf letzte theoretische Herleitung der verwendeten Algorithmen. Alle Kapitel wurden unter dem Aspekt verfasst, dass der Leser ein Verständnis für die Abläufe in Physicsl Engines bei der Entwicklung von Spielen erlangt und deren Umsetzung in Code leicht nachvollziehen kann.

Systemvoraussetzungen

Wichtigste Voraussetzung für das Lesen der html-Seiten und die Benutzung der Beispielprogramme, egal, ob in die html-Seite eingebettet oder autarkt, ist die Benutzung eines Browsers, der den Spezifikationen des W3C folgt. Dies trifft insbesondere auf den Browser Firefox und Google Chrome zu. Deshalb sind diese Browser die erste Wahl für die Entwicklung meiner Site. Alternative Browser wie IE empfehle ich nicht, weil diese z.B. javascript als Kern der Beispielprogramme anders interpretieren, so dass die Beispielprogramme z.T. nicht korrekt ablaufen.

Für die Entwicklung der Beispielprogramme verwende ich processing und seitdem processing 3 aktuell ist, auch p5.js. p5.js ist eine javascript-Version von processing, die es ermöglicht, so entwickelte Programme im Internet zu veröffentlichen. Dieser Schritt machte sich erforderlich, da beim Übergang von processing 2 zu processing 3 der javascript-Export der Programmcodes eingestellt wurde.

Nutzungsbedingungen

Bei Implementierung und Hosting haben wir uns nach kostengünstigen Angeboten umgesehen, um den Betrieb dieser Website zu minimalen Kosten und frei von Werbung anbieten zu können. Trotzdem: es entstehen Kosten. Und um diese gerecht verteilen zu können, haben wir uns das folgende Nutzungsmodell ausgedacht.

  1. die web-Inhalte, also alle Texte, Abbildungen und Formeln sind frei,
  2. ebenso ist die Benutzung der Programmbeispiele auf der Seite Darstellung bewegter Objekte als ein Schnupperangebot frei verfügbar,
  3. entscheidest Du Dich für die Benutzung der Programmbeispiele, d.h. deren Start und die Durchführung von Experimenten, fällt eine einmalige Schutzgebühr in Höhe von 2,- € an oder
  4. Du entscheidest Dich außerdem für den Download der Programmcodes, dann gilt ein Volumenmodell: für je 10 downloads ist eine Schutzgebühr in Höhe von 2,- €; fällig. Selbstverständlich kann jederzeit ein weiteres Volumen von 10 downloads erworben werden.
Die Bezahlvorgänge erfolgen, in dem Du ein user-Konto, gekennzeichnet durch Nutzernamen und Passwort, anlegst. Dann wirst Du zu PayPal weitergeleitet, wo Du die Schutzgebühr entrichten kannst. Nach dem erfolgreichen Bezahlvorgang werden Dir alle Zugänge freigeschaltet. Solange Dein Volumen nicht ausgeschöpft ist, hast Du jederzeit Zugriff auf die kostenpflichtigen Leistungen, indem Du Dich mit Deinem Nutzernamen und Deinem Passwort einloggst (detailiertere Angaben findest Du in den AGB bzw. den rechtliche Hinweisen).
Die Entrichtung der einmaligen Schutzgebühr für die Benutzung der Beispielprogramme entfällt, wenn Du das Download-Modell in Anspruch genommen hast. Ebenso hast Du einmalig 10 downloads frei, wenn Du Dich für die Benutzung der Beispielprogramme entschieden hast.
Voraussetzung für die Nutzung unserer Angebote ist das Anlegen eines user-Kontos, gekennzeichnet durch Nutzernamen und Passwort (detailiertere Angaben findest Du in den AGB bzw. den rechtliche Hinweisen).
  1. die web-Inhalte, also alle Texte, Abbildungen und Formeln sind frei,
  2. ebenso stehen Dir die Nutzung und der download der Beispielprogramme frei.
  3. alle Urheberrechte verbleiben bei uns!
  4. alle oben genannten Inhalte stehen unter Creative Commons Licenses (BY-NC-SA).

Die Bedienung der Beispielprogramme

Das Verständnis der physi­kalischen Gesetz­mäßigkeiten, die in den einzelnen Kapiteln vermittelt werden, wird mit Beispiel­programmen untermauert. Dazu wird das neben­stehende PC-Symbol angezeigt:

Durch Anklicken des PC-Symbols wird zum hinterlegten Beispielprogramm verlinkt. So können die physikalischen Gesetze erlebbar gemacht.

Versuch's doch mal!

run program
Gehe mit der Maus über das PC-Symbol und klicke dann mit der linken Maustaste darauf. Es öffnet sich das dazugehörige Programmfenster! So steht das Beispielprogramm zur Verfügung.

Die meisten der Beispielprogramme sind sehr Detail reich. Das hat zur Folge, dass diese Programme auf mobilen Endgeräten wie Smartphones oder kleinen Tabletts nur schwer zu bedienen sind. Darum die Empfehlung: lasse die Beispielprogramm auf dem Desktop laufen. Die Programmbedienung per Maus ist eben doch präziser als jedes Touch-Element und das Bedienen macht dann auch Spaß!

Die Bedienung solcher Programme erfolgt durch beschriftete Schaltflächen (Button), Schieberegler (Scrollbar) oder Griffe (handle). Unter Umständen ist nicht sofort zu erkennen, dass einige Objekte auch den Charakter eines Griffes in sich vereinigen, z.B. die Pfeilspitze eines Geschwindigkeitsvektors oder eine Kugel(projektions)fläche. Oft hilft aber nur Ausprobieren!

Ziehe die Maus über das Bild, um weitere Erläuterungen zu erhalten:

Bitte einen Augenblick Geduld
während das Programm geladen wird!

Abb. Beispielprogramm "dezentraler Stoß"

Gestartet wird das Programm mit der START-Taste. Am Ende des Laufs wird aus der START-Taste die RESET-Taste, die die Möglichkeit eines weiteren Experiments bietet.
Vor jedem Start hast Du die Möglichkeit, die Parameter (hier die Startorte der beiden Kugeln, ihre Geschwindigkeitsvektoren oder ihr Masseverhältnis) zu variieren.

Achtung bei mobilen Anwendungen! Hier wird unterschieden in innere Touch-Aktionen, die der Bedienung des Beispiel-Programms dienen und in äußere Touch-Aktionen, die z.B. dem scrollen auf der HTML-Seite dienen. Damit sich beide Aktionen nicht in die Quere kommen, wird diese Trennung programmtechnisch konsequent eingehalten. Um das scrollen auch in Höhe eines Beispiel-Programms zu ermöglichen, werden links und rechts des Programmfensters freie Flächen bereit gehalten. Wischst Du über eine solche Nebenfläche scrollt die ganze HTML-Seite. Wischst Du hingegen im Inneren des Fensters, bewegst Du z.B. einen Scrollbar-Knop oder die Spitze eines Vektors.

Noch ein Hinweis. Taucht irgendwo eines der folgenden Symbole auf, dann steckt noch eine ergänzende Erläuterung dahinter. Die ist nicht ganz so wichtig, kann aber doch interessant sein!

Für so gekennzeichnete Hinweise, die sich zum Teil auch über das Fenster hinaus erstrecken können, gibt es den anklickbaren Geistesblitz. Nochmaliges Anklicken macht den Hinweis wieder unsichtbar:
Geistesblitz
on/off


Die CD-Symbole signalisiert Dir, dass Dir die gerade besprochenen Beispielprogramme im Quellcode zum Download bereit gestellt werden. Einfach anklicken und den weiteren Anweisungen folgen!

Hier werden Dir zwei Programmvarianten bereit gestellt. Die meisten Beispielprogramme liegen als processing- oder als p5-Version vor. Und es steht Dir frei, die passende Version herunter zu laden!
download processing
download p5.js

Weitere Bedienhinweise

Bisweilen wirst Du auch auf diese Symbole stoßen:

Hier findest Du die Herleitung komplexer Formeln im Detail mit allen Zwischenschritten. Per Doppelklick auf das Symbol erreichst Du die Abhandlung als .pdf zum Lesen oder download.

step by step explanation

Dieses Symbol verlinkt mit einer Übungsaufgabe. Denn parallel zum vermittelten Stoff kann ein Übungsprojekt - Bedrohung der Erde durch einen Kometen - zur Festigung des Gelernten bearbeitet werden.

Übungsprojekt

Und noch ein Wort zu den Formeln. Es geht nicht ohne! Um das Verständnis der Formeln zu erleichtern, ist es möglich, durch Klicken auf die Formel eine Erklärung der verwendeten Formelzeichen und dazu passender Links zu erhalten. Das Ausblenden der Formelerläuterung erfolgt durch nochmaliges Klicken auf eine beliebige Formel oder auf den Hinweis selbst. Probier es aus:
(0.1)
Formel

Danksagung

Mein Dank gilt meiner Tochter Antje, die mir stets mit ermunternder Kritik und wertvollen Hinweisen zur Gestaltung der Internet-Präsenz zur Seite stand. Besonders aber danke ich ihr für die Heinweise zur Benutzung der unterschiedlichen Entwicklerwerkzeuge, die mir erst die Umsetzung meines Anliegens ermöglichten.
Und mein ganz besonders inniger Dank gilt Thomas Schostag, der sich um die Fragen des Web-Hostings, der Nutzerverwaltung und des Payments gekümmert hat.
Nicht zu vergessen Frau Margret Pfeffer, die sich mit Engagement und dem scharfen Blick des Pädagogen der kleinen und großen Fehler im Script angenommen hat. Ihr gebührt mein Dank für die Mühen des Nachlesens und Formel Überprüfens. Auch für die didaktischen Tipps danke ich ganz herzlich!

Das Beispielprojekt

Am 15. Februar 2013 ereignete sich in der Nähe von Cheljabinsk (Russland) ein Meteoriteneinschlag, der in den umliegenden Städten Fensterscheiben zerbrechen lies. Ein Team von inter­nationalen Wissenschaftlern hat sich diesem Ereignis gewidmet und Daten zum Meteoriteneinschlag am Rande des Urals v eröffentlicht. Diese zeigen, wie heftig der Einschlag von Cheljabinsk wirklich war. Obwohl der Meteorit lediglich eine Größe von 20 Metern beim Eintritt in die Atmosphäre hatte, setzte er dabei eine Energie von ca. 400 - 600 kT TNT frei, das entspricht der Energie, die bei der Explosion von ca. 20 - 30 Atombomben vom Hiroschima-Typ frei gesetzt werden würden. Als der Cheljabinsk-Komet auf dem Erboden aufkam, betrug dessen Größe nur noch 0.05% seines ursprünglichen Durchmessers, und hatte trotzdem solche Wirkung! Was würde passieren, wenn ein größerer Meteorit auf der Erde einschlägt? Spätestens wenn ein Stein einen Durchmesser von einem Kilomter hat, da sind sich Wissenschaftler einig, droht dem meisten Leben auf der Erde das Ende.

Um Dir die Herausforderungen bewußt zu machen, vor denen die Menschheit stünde, wenn die Rettung der Erde mit heute zur Verfügung stehenden Mitteln erfolgen sollte, könnte das folgende Projekt als Übungsbeispiel von Dir Schritt für Schritt bearbeitet werden. Ich habe das Szenarium in Anlehnung an die Daten des Cheljabinsk-Kometen entwickelt.

Über das Spiel

Ein Komet kreuzt die Erdbahn und es droht eine Kollision. Um eine Katastrophe zu verhindern hat sich der UN-Sicherheitsrat entschlossen, den Kometen mit Hilfe einer starken Rakete entweder aus der kritischen Bahn zu verdrängen oder so zu zerstören, dass die Bruchstücke des Kometen in der Erdatmosphäre verglühen.
Die Herausforderung besteht darin, dass der Komet mit einem mittleren Durchmesser von 20 m relativ klein ist und sich mit einer Geschwindigkeit von 72.000 km/h auf die Erdoberfläche unter einem Winkel von 20° zu bewegt. Damit die Abdrängung oder Zerstörung des Kometen keine nachteiligen Folgen für die Erde hat, soll der Zusammenstoß von Komet und Rakete in einer Höhe von über 30 km erfolgen. Bei einer Aufprallgeschwindigkeit unter 20 km/s wird der Komet abgedrängt, darüber zerstört. Der Raketentreibstoff reicht für genau 14 s Flugdauer. Die Rakete sei einstufig und hat eine Höhe von 100 m und einen Durchmesser von 20 m. Die Rakete trifft mit ihrer Leermasse + Resttreibstoffmasse auf den Kometen.
Die Astronomen haben festgestellt, dass der Komet zu 10% aus Gesteinsmaterial mit einer Dichte von 4 g/cm und der Rest aus Wassereis besteht.
Der Spieler hat nun die Aufgabe, bei festem Startort den richtigen Startzeitpunkt der Rakete (Button) zu wählen. Zusätzlich kann er die Neigung der Rakete (Schieberegler) beeinflussen.
Hinweis: Im Vergleich zu den räumlichen Dimensionen sind die Maße von Komet und Rakete sehr klein. Damit der Spieler beide Objekte überhaupt sehen kann, werden die optischen Abmessungen, also die sichtbaren Größen, beider Objekte um das 200-fache vergrößert.

So etwa könnte die Szenerie aussehen:
Spielszenarium

Spielszenarium