Physik-Engines sind Softwaremodule, die physikalische Simulationen wie Starrkörperdynamik, Kollisionserkennung, Cloth-Simulation und Fluide für die Echtzeit-Spieleentwicklung bereitstellen.
Rubrik: Game Design & Interactive Media · Unterrubrik: Game Engines · Niveau: Fortgeschritten
Synonyme / Auch bekannt als: Physics Engine, Physik-Middleware, Physiksimulation, Physics SDK
Was ist eine Physik-Engine?
Eine Physik-Engine ist eine spezialisierte Software-Bibliothek oder ein Subsystem innerhalb einer Game Engine, das die Bewegung und Interaktion von Objekten gemäß physikalischer Gesetze simuliert. Ohne Physik-Engine würden Spielobjekte durch Wände fallen, Autos würden keine Drehmomente entwickeln, und Charaktere könnten nicht realistisch stolpern oder gegen Hindernisse prallen.
Physik-Engines sind eines der rechenintensivsten Subsysteme einer Game Engine. Sie laufen typischerweise in einem eigenen Physik-Update-Zyklus (Fixed Timestep, z.B. 50 oder 60 Hz), unabhängig von der Rendering-Framerate.
Erklärung
Kollisionserkennung
Kollisionserkennung ist das Fundament jeder Physik-Engine. Das System muss in jedem Physik-Step überprüfen, welche Objekte sich berühren oder überschneiden.
Broad Phase: Ein erster, schneller Filter reduziert die Zahl der zu prüfenden Objektpaare. Algorithmen wie Sweep and Prune (SAP) oder Bounding Volume Hierarchies (BVH) gruppieren Objekte anhand ihrer Achsen-ausgerichteten Bounding Boxes (AABB).
Narrow Phase: Für die verbliebenen Kandidatenpaare wird eine präzise Kollisionsberechnung durchgeführt. Algorithmen wie GJK (Gilbert-Johnson-Keerthi) ermitteln den genauen Kontaktpunkt und die Eindringtiefe.
Kollisions-Shapes: Physikberechnungen nutzen vereinfachte Geometrie: Boxen, Kugeln, Kapseln, Convex Hulls, Meshes. Einfache Shapes sind performanter; Triangle-Mesh-Kollision ist präzise, aber teuer.
Rigid Body Dynamics (Starrkörperdynamik)
Rigid Bodies sind physikalische Objekte, die sich nicht verformen. Sie haben Masse, Trägheitsmoment, Geschwindigkeit und Winkelgeschwindigkeit. Das Physik-System integriert Kräfte und Drehmomente, um Position und Rotation zu aktualisieren.
Ein Rigid Body in Unity (Rigidbody-Komponente) oder UE5 (Physics Actor) kann:
- Gravitation ausgesetzt werden
- Durch Kräfte und Impulse angetrieben werden
- Mit anderen Rigid Bodies kollidieren und reagieren
- Durch Joints mit anderen Körpern verbunden werden (Scharniere, Kugelgelenke, Federn)
Constraint Solver und Joints
Physikalische Verbindungen zwischen Körpern (Joints) werden durch mathematische Constraints modelliert. Der Constraint Solver ist der rechenintensivste Teil der Physik-Engine – er löst ein System aus Gleichungen, das sicherstellt, dass alle Constraints gleichzeitig erfüllt werden.
Typen von Joints:
- Fixed Joint: Starr verbunden, kein relatives Bewegen.
- Hinge Joint: Rotation um eine Achse (Türscharnier).
- Ball Socket: Rotation in alle Richtungen (Schultergelenk).
- Slider: Translation entlang einer Achse (Kolben).
Soft Body und Cloth Simulation
Cloth-Simulation behandelt verformbare Objekte wie Kleidung, Flaggen und Netze. Das Gewebe wird als Netz aus Massepunkten modelliert, die durch Federn (Stretch-Springs, Shear-Springs, Bend-Springs) verbunden sind. Äußere Kräfte (Gravitation, Wind) und Kollisionen mit der Umgebung verformen das Netz realistisch.
Unity hat eine eigene Cloth-Komponente; UE5 nutzt Chaos Cloth; PhysX bietet ebenfalls Cloth-Simulation. Cloth-Simulation ist teuer und wird oft für wichtige Charaktere (Spielerfigur, wichtige NPCs) reserviert.
Fluid Simulation
Echte Fluid-Simulation in Echtzeit ist sehr rechenintensiv. In Spielen werden verschiedene Annäherungen genutzt:
- Particle-basierte Fluide (SPH – Smoothed Particle Hydrodynamics): Flüssigkeit als Partikelwolke; teuer, aber visuell überzeugend.
- Grid-basierte Simulationen: Wasser als volumetrische Zellen simuliert.
- Shallow Water Simulation: 2D-Annäherung für große Wasserflächen (Meere, Seen).
- Visual-Only Water: Shader-basierte Wellenbewegung ohne echte Physik.
Die wichtigsten Physik-Engines
PhysX (Nvidia): Die am weitesten verbreitete Physik-Engine in der Spieleindustrie. Ursprünglich von Ageia entwickelt, 2008 von Nvidia übernommen. PhysX ist in Unity (bis Unity 2021 primär) und Unreal Engine (UE4) integriert. Nvidia optimiert PhysX für GPU-Beschleunigung auf eigener Hardware.
Bullet Physics: Eine Open-Source-Physik-Engine (zlib-Lizenz), die in zahlreichen Projekten – von Spielen bis hin zu VFX in Hollywood-Produktionen – eingesetzt wird. Godot 4 nutzt Bullet für 3D-Physik. Sehr flexibel und gut dokumentiert.
Havok: Proprietäre Physik-Middleware, lange Zeit Industriestandard in AAA-Spielen. Havok wurde von vielen großen Titeln genutzt: Halo-Serie, Dark Souls, Skyrim. 2015 von Intel übernommen, 2018 von Microsoft. Nach dem Erwerb durch Microsoft wurde Havok für viele Studios kostenlos (für Xbox-Plattformen). Technisch sehr ausgereift, besonders für Charakterphysik und destruktive Umgebungen.
Chaos Physics (Epic Games): UE5s natives Physik-System, das PhysX in der Unreal Engine ersetzt. Chaos ist auf destruktive Geometrie spezialisiert (zerstörbare Welten, Trümmer). Bietet Chaos Cloth und Chaos Vehicles.
Jolt Physics: Neuere, MIT-lizenzierte Physik-Engine mit sehr hoher Performance. Wird in Horizon Forbidden West eingesetzt und hat wachsende Community-Unterstützung.
Beispiele
- GTA V (Rockstar Games, 2013): Nutzt eine eigene Physik-Engine (RAGE) für Fahrzeugphysik und Ragdoll, PhysX für Partikeleffekte.
- Battlefield-Serie (DICE): Die Frostbite-Engine nutzt Havok für Destruktion von Gebäuden.
- The Elder Scrolls V: Skyrim (Bethesda, 2011): Havok für Ragdoll und Kollision – für seine physikalischen Fehler (fliegende Kühe, ragdollierende Leichen) berühmt.
In der Praxis
Die Physik-Engine einer Game Engine ist für die meisten Spielprojekte eine Black Box – man konfiguriert sie über Engine-Einstellungen und Physik-Materialien (Reibung, Elastizität), ohne direkt mit dem Physik-Code zu interagieren.
Wichtige Praxis-Tipps:
- Physik-Update mit
FixedUpdate(Unity) oderPhysicsProcess(Godot), nicht mit dem regulären Frame-Update synchronisieren. - Physik-Shapes so einfach wie möglich halten – keine Triangle-Mesh-Collider für dynamische Objekte.
- Schlafende Rigid Bodies (Sleeping Rigidbodies) für Objekte ohne Bewegung nutzen, um Performance zu sparen.
Vergleich & Abgrenzung
| Engine | Lizenz | Stärke | Nutzung |
|---|---|---|---|
| PhysX | Proprietär (kostenlos) | Mobile, allgemein | Unity, UE4 |
| Havok | Proprietär (kostenlos für Xbox) | AAA, Charakterphysik | Bethesda, Bungie |
| Bullet | Open Source (zlib) | Flexibilität | Godot, Indie |
| Chaos | Teil von UE5 | Destruktion | Unreal Engine 5 |
| Jolt | MIT Open Source | Performance | Horizon, wächst |
Häufige Fragen (FAQ)
Warum verhält sich Physik in Spielen manchmal unnatürlich? Echtzeit-Physik ist immer eine Approximation. Constraint-Solver iterieren nur begrenzt viele Male pro Frame; hohe Geschwindigkeiten können Tunneling verursachen (Objekte passieren Wände); diskrete Zeitschritte verursachen kleines Zittern bei gestapelten Objekten.
Was ist Ragdoll? Ragdoll-Physik ist eine Technik, bei der ein Charakter nach Tod oder Bewusstlosigkeit von animierten Keyframes auf Physik-Simulation umgeschaltet wird. Die Körperglieder werden zu physikalisch simulierten Rigid Bodies mit Joints.
Was ist der Unterschied zwischen statischen und dynamischen Collidern? Statische Collider (Terrain, Wände) bewegen sich nicht und sind in der Physik sehr effizient. Dynamische Collider (Spieler, Gegner, Projektile) bewegen sich und müssen jedes Frame neu in den Breitband-Kollisions-Algorithmus eingebettet werden.
Verwandte Einträge
Weiterführend
- Ericson, Christer: Real-Time Collision Detection. Morgan Kaufmann, 2004.
- Millington, Ian: Game Physics Engine Development. 2. Aufl. Morgan Kaufmann, 2010.
- Gregory, Jason: Game Engine Architecture. 3. Aufl. A K Peters/CRC Press, 2018. Kapitel 13: Collision and Rigid Body Dynamics.
