Wie funktioniert die Physik in Videospielen?
(W-Seminar in Physik/Informatik)
Am Ludwigsgymnasium haben sich zirka ein Dutzend Schüler zum W-Seminar "Wie
funktioniert die Physik in Videospielen?" angemeldet. Das Seminar hat bereits begonnen und
findet damit in den Schuljahren 2009/10 und 2010/11 statt.
Das Seminar ist eine ziemlich interessante fächerübergreifende Mischung zwischen Physik
und Informatik. Denn häufig stecken hinter den tollen, realistischen Bewegungen von
Mario, Sonic & Co. nur ganz wenige, simple Physikprinzipien.
Das Ziel des Seminars ist:
Die Teilnehmer können die wesentlichen Mechanismen verstehen lernen, die die
wirklichkeitsnahen Bewegungen von Videospielfiguren auf einem PC ermöglichen.
Welche Themen sind geplant?
-
Einführung in Vektorrechnung: Videospiele finden stets im zweidimensionalen
Raum (d.h. in einer flachen Ebene) oder gar im dreidimensionalen Raum statt. Wer
Bewegungen im zwei- oder dreidimensionalen Raum berechnen möchte, verwendet am besten
die Vektorrechnung. Erfreulicherweise schreiben sich fast alle physikalischen Gesetze
mit Vektoren genauso, wie wir sie schon bisher kennen. Dort, wo Unterschiede bestehen,
werden wir das im Seminar besprechen. Dass Vektorrechnung bei der Programmierung
ziemlich einfach handzuhaben ist, werden wir in ersten Projekten ausführlich testen.
-
Die nötigen physikalische Gesetze:
Egal ob das Männchen im Videospiel einfach
nur hüpft oder von einer Wand abprallt oder durch einer Sprungfeder in Riesenhöhen katapultiert
wird oder an einer Liane von Ast zu Ast schwingt oder, oder, oder...- es stecken
praktisch immer die elementaren physikalischen Bewegungsgesetze
(Newtons drei Gesetze, Impuls & Drehimpuls) dahinter. Diese Gesetze werden wir im Seminar
theoretisch und praktisch (in Programmbeispielen) kennen lernen.
-
Interaktion von Objekten:
Wenn zwei "Objekte" (Ball mit Mauer? Auto mit anderem Auto? Kanonenkugel mit Steinblöcken?
Männchen hängt an Liane? usw.) sich gegenseitig beeinflussen (Kollision,
Reflexion an Mauern, usw.), dann müssen wir sie korrekt darauf reagieren lassen.
Beispielsweise kann ein Männchen problemlos herumlaufen, solange es Boden unter den Füßen
hat. Ohne diesen Boden stürzt es wegen der Gravitationskraft in die Tiefe. Ein Rennauto,
das von einem anderen Rennauto gerammt wird, wird (mehr oder weniger) aus seiner bisherigen
Bahn abgelenkt. Wie wir dieses Verhalten korrekt auf einem PC darstellen, soll das
dritte Thema des Seminars sein. Die zugehörigen Beispiele sind dann schon echt richtig
interessant!
-
Grafische Gestaltung (Grundprinzipien):
Bislang sehen unsere Programmbeispiele relativ "technisch" aus. Denn
die beteiligten Objekte werden vor allem aus den Grundformen Kreis, Rechteck und Linie
aufgebaut. Wer statt "Strichmännchen" oder Rechtecke als Autos schönere Grafiken verwenden
will, wird in diesem Seminar zumindest Grundlagen dazu kennenlernen. Es hängt dabei aber
auch viel vom Talent der einzelnen Teilnehmer ab, Grafiken am PC zu kreieren - und auch von
der Geduld: Es könnte zum Beispiel sein, dass man alleine für die Laufbewegung eines
Männchens 5 bis 10 verschiedene Bewegungsphasen zeichnen muss.
Download von Programmcode
- Headerdatei "physikengine_v1_11.h" mit den nötigen Bibliotheken zur
Vektorrechnung und Bildschirmdarstellung als Grundlage zum Herunterladen.
Die physikalischen Gesetze fehlen in dieser Datei komplett. Die werden wir im Seminar
Schritt für Schritt ergänzen. (physikengine_v1_11.h, 19 KB)
- Headerdatei "physikengine_v1_20.h": Eine spätere Version der Bibliothek
mit einigen implementierten physikalischen Gesetzen. Beispielsweise gibt es
in der Bibliothek die Gravitations-, die Reibungs-, die Feder- und die Auftriebskraft.
Außerdem ist ein einfacher Kollisionsdetektor bereits eingebaut und eine
Verwaltungsklasse namens Szene, mit der Du physikalische Testszenen recht
komfortabel zusammenbauen kannst. (physikengine_v1_20.h, 41 KB)