SlideShare a Scribd company logo
Programming Physics Games with OpenGL
Daniel Pope ~ @lordmauve
Code samples are available at
https://bitbucket.org/lordmauve/physicsgames
Outline
• Introduction to OpenGL
• Introduction to physics engines
• Connecting the two
• A bit more about physics engines
• Tips on writing games
What is OpenGL?
• Low-level 2D and 3D graphics library
• Usually hardware accelerated
• Can only draw points, lines, triangles
• But triangles can be textured
• GPUs can evaluate a short program for each vertex or
fragment in a high-level language
What is a physics engine?
Given a model of the world at time t
Apply physical laws to compute a model of the world at
time t + ∆t
(for small ∆t)
(demo 1)
PyBox2D
http://pybox2d.googlecode.com
http://www.pymunk.org
PyODE
http://pyode.sourceforge.net/
PyNewt
http://code.google.com/p/pynewt/
PyBullet
https://launchpad.net/pybullet
OpenGL wrapper/scenegraph
• Higher level API
• Window Creation
• Texture Loading
• Sprites/Texture Atlases
• Model Loading/Rendering/Animation
• PVS – Potentially Visible Set calculation
• Graphics Algorithms
pyglet
cocos2d
kivy
http://www.pyglet.org/
http://cocos2d.org/
http://kivy.org/
Panda3D
http://www.panda3d.org/
Python-Ogre
http://www.python-ogre.org/
PyCrystal
http://www.crystalspace3d.org/main/PyCrystal
apt-get install python-box2d
apt-get install python-pyglet
(pyBox2D == 2.0.2ish)
What a game does
while True:
dt = wait_one_frame()
process_input()
update_world(dt)
draw_world()
(demo 2)
A physics simulation
• Newton's Laws
• Collisions
• Constraints (eg. Joints)
Newtonian Quantities
Mass/Inertia
Force
Position
Velocity
Acceleration
Momentum
Impulse
Rotational Equivalents
Linear Angular
Mass/Inertia Moment of Inertia
Force Moment/Torque
Position Angle
Velocity Angular Velocity
Acceleration Angular Acceleration
Momentum Angular Momentum
Impulse Angular Impulse
Approximately
net_force = sum(forces)
acceleration = force / mass
velocity += acceleration * dt
position += velocity * dt
forces = [GRAVITY * mass]
+ rotational equivalents
Time step
Collisions
• Detect when two shapes intersect
• Broad phase (O(n log n)?, approximate)
• Narrow phase (O(n²))
• Exchange momentum
• Move them apart, keep them apart
Shapes are convex polygons/polyhedra
✔✗ ✔
Separating Axis Theorem
Given two convex shapes,
it is possible to draw a straight
line between them if and only
if the two do not intersect.
Bodies
Collections of shapes
Compute centre of mass
Compute moment of inertia
Creating bodies
Linking physical objects with OpenGL
• Draw sprites
• Create physical models corresponding to sprites
• Instantiate objects into physics simulation
Each frame:
• Step time
• Read position + angle of body
• Draw OpenGL quads/sprites at position + angle
(0, 1)
(0, 0) (1, 0)
(1, 1)
(0, 1)
(0, 0)
(1, 0)
(1, 1)
Texture Coordinates
Drawing textured quads
(demo 3)
Collision Callbacks
What happens in game when shapes collide?
Register a callback to take action
• Destroy/change the object
• Create a joint
• Play a sound
tanks demo
Joints
• pin joint – bodies attached at a point, can rotate
• prismatic joint – keep bodies aligned, like a piston or
a train on a rail
• distance joint – keep points on the two bodies at the
same distance from one another, like a tow-bar or
crank shaft
• pulley joint – the position of a body along one axis is
linked to the position of another body along another
axis
Pin Joint
Joint motors/limits
• Motors apply torques or forces between the bodies
• Joints can have limits – your knees do not bend
backwards
truck demo
heli demo
Features I've not yet mentioned
• Collision groups/masks
• Sensors
• Non-rotating bodies/Infinite moment of inertia
• Introspecting the world
• Sleeping
Complications I've skipped over
• Constraint solving
• Overconstraint
• Stability
Graphics and Sound
• Cute and colourful is attractive
• Simple shapes and outlines are much easier than
other styles
• Free/CC game art resources available
The art of tuning a physics engine
• Tuning magic numbers:
• Forces
• Torques
• Density/Friction/Restitution
• Re-shaping bodies/redrawing sprites
• At which point does a force act?
• Joints/joint limits/joint motors
• Collision groups/filters
“To every action there is
always an equal and
opposite reaction: or the
forces of two bodies on each
other are always equal and
are directed in opposite
directions.”
- Archimedes
Compound effects
• Buoyancy
• Lift
• Explosions
• Soft bodies
• Drag effects
• Joints or objects 'snapping'
Physics Games
• Intuitive for players
• The game is mastering the physics
• Constrain degrees of freedom to balance
difficulty/reward/punishment
Physics Puzzles
Overlapping constraints
• Physical constraints
• Thing in the way
• Thing not in the right place
• How to overcome gravity
• Wrong physical behaviour unless...
• Non-physical constraints
• Player can't breathe underwater
• Only x can pass through this barrier
Reasons to use a physics engine
• Tons of maths for free
• Cool effects/cheap animations
• Game world responds to player; player is
empowered/immersed
• Extra layer of complexity/interest for the player
• Intuitive puzzles
Reasons not to use a physics engine
• Extra dependency/pain to install
• Time consuming to tune
• Too many degrees of freedom may make some
mechanics difficult or impossible to work in
Daniel Pope
@lordmauve
Code samples are available at
https://bitbucket.org/lordmauve/physicsgames

More Related Content

Similar to Programming physics games with Python and OpenGL

august23.ppt
august23.pptaugust23.ppt
august23.ppt
CharlesMatu2
 
Physics Solutions for Innovative Game Design
Physics Solutions for Innovative Game DesignPhysics Solutions for Innovative Game Design
Physics Solutions for Innovative Game Design
John Wilker
 
High speed multibody dynamics _ sherman_Simbody _ 2006.ppt
High speed multibody dynamics _ sherman_Simbody _ 2006.pptHigh speed multibody dynamics _ sherman_Simbody _ 2006.ppt
High speed multibody dynamics _ sherman_Simbody _ 2006.ppt
MariaMarque
 
【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~
【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~
【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~
Unity Technologies Japan K.K.
 
4-Game Physics (Game Design and Development)
4-Game Physics (Game Design and Development)4-Game Physics (Game Design and Development)
4-Game Physics (Game Design and Development)
Hafiz Ammar Siddiqui
 
october23.ppt
october23.pptoctober23.ppt
october23.ppt
CharlesMatu2
 
Ai architectureand designpatternsgdc2009
Ai architectureand designpatternsgdc2009Ai architectureand designpatternsgdc2009
Ai architectureand designpatternsgdc2009
SinisterM
 
From Experimentation to Production: The Future of WebGL
From Experimentation to Production: The Future of WebGLFrom Experimentation to Production: The Future of WebGL
From Experimentation to Production: The Future of WebGL
FITC
 
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...
Terrance Cohen
 
Lecture 5 - Procedural Content Generation
Lecture 5 - Procedural Content GenerationLecture 5 - Procedural Content Generation
Lecture 5 - Procedural Content Generation
Luke Dicken
 
Scene Graphs & Component Based Game Engines
Scene Graphs & Component Based Game EnginesScene Graphs & Component Based Game Engines
Scene Graphs & Component Based Game Engines
Bryan Duggan
 
Game Programming 11 - Game Physics
Game Programming 11 - Game PhysicsGame Programming 11 - Game Physics
Game Programming 11 - Game Physics
Nick Pruehs
 
Killzone Shadow Fall: Threading the Entity Update on PS4
Killzone Shadow Fall: Threading the Entity Update on PS4Killzone Shadow Fall: Threading the Entity Update on PS4
Killzone Shadow Fall: Threading the Entity Update on PS4
jrouwe
 
Object-Orientated Design
Object-Orientated DesignObject-Orientated Design
Object-Orientated Design
Damian T. Gordon
 
Presentation sanlab workshops
Presentation sanlab workshopsPresentation sanlab workshops
Presentation sanlab workshopsArtur Roszczyk
 
Cross platform physics games - NDC 2014
Cross platform physics games - NDC 2014Cross platform physics games - NDC 2014
Cross platform physics games - NDC 2014
Runegri
 
Collision Detection an Overview
Collision Detection an OverviewCollision Detection an Overview
Collision Detection an Overview
slantsixgames
 

Similar to Programming physics games with Python and OpenGL (20)

august23.ppt
august23.pptaugust23.ppt
august23.ppt
 
Soc research
Soc researchSoc research
Soc research
 
Physics Solutions for Innovative Game Design
Physics Solutions for Innovative Game DesignPhysics Solutions for Innovative Game Design
Physics Solutions for Innovative Game Design
 
Core Animation
Core AnimationCore Animation
Core Animation
 
High speed multibody dynamics _ sherman_Simbody _ 2006.ppt
High speed multibody dynamics _ sherman_Simbody _ 2006.pptHigh speed multibody dynamics _ sherman_Simbody _ 2006.ppt
High speed multibody dynamics _ sherman_Simbody _ 2006.ppt
 
【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~
【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~
【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~
 
4-Game Physics (Game Design and Development)
4-Game Physics (Game Design and Development)4-Game Physics (Game Design and Development)
4-Game Physics (Game Design and Development)
 
october23.ppt
october23.pptoctober23.ppt
october23.ppt
 
Ai architectureand designpatternsgdc2009
Ai architectureand designpatternsgdc2009Ai architectureand designpatternsgdc2009
Ai architectureand designpatternsgdc2009
 
From Experimentation to Production: The Future of WebGL
From Experimentation to Production: The Future of WebGLFrom Experimentation to Production: The Future of WebGL
From Experimentation to Production: The Future of WebGL
 
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...
 
Lecture 5 - Procedural Content Generation
Lecture 5 - Procedural Content GenerationLecture 5 - Procedural Content Generation
Lecture 5 - Procedural Content Generation
 
Communityday2013
Communityday2013Communityday2013
Communityday2013
 
Scene Graphs & Component Based Game Engines
Scene Graphs & Component Based Game EnginesScene Graphs & Component Based Game Engines
Scene Graphs & Component Based Game Engines
 
Game Programming 11 - Game Physics
Game Programming 11 - Game PhysicsGame Programming 11 - Game Physics
Game Programming 11 - Game Physics
 
Killzone Shadow Fall: Threading the Entity Update on PS4
Killzone Shadow Fall: Threading the Entity Update on PS4Killzone Shadow Fall: Threading the Entity Update on PS4
Killzone Shadow Fall: Threading the Entity Update on PS4
 
Object-Orientated Design
Object-Orientated DesignObject-Orientated Design
Object-Orientated Design
 
Presentation sanlab workshops
Presentation sanlab workshopsPresentation sanlab workshops
Presentation sanlab workshops
 
Cross platform physics games - NDC 2014
Cross platform physics games - NDC 2014Cross platform physics games - NDC 2014
Cross platform physics games - NDC 2014
 
Collision Detection an Overview
Collision Detection an OverviewCollision Detection an Overview
Collision Detection an Overview
 

Recently uploaded

zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 

Recently uploaded (20)

zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 

Programming physics games with Python and OpenGL

Editor's Notes

  1. Very fast moving objects (eg. bullets) may have passed completely through each other in a single time step – compute time of first intersection