2D Game Physics Programming is a 191-lesson 35 hours 7 minutes self-paced course by Gustavo Pezzi. Welcome to the exciting world of 2D game physics!
Course facts
Lessons
191
Duration
35 hours 7 minutes
Level
All levels
Language
English
Updated
Instructor
Gustavo Pezzi
Price
Premium
Welcome to the exciting world of 2D game physics! This course provides an engaging introduction to the mathematics that underpin most physics engines. We will start with a comprehensive review of vectors, matrices, basic trigonometry, and delve into rigid-body collision, with a touch of calculus along the way.
Course Overview
Foundational Concepts
The lectures are designed to teach all concepts from first principles. Throughout our journey, we will explore essential physics topics such as velocity, acceleration, integration, mass, forces, gravity, drag, friction, rigid body dynamics, collision detection, and constraints.
Practical Application
We will transition from theory to practice by coding a simple 2D physics engine from scratch using the C++ programming language. Our initial focus will be on simulating particle physics to introduce concepts like movement, forces, displacement, and integration.
Next, we'll work with rigid bodies, incorporating shapes like circles, rectangles, and polygons into our objects. You'll learn how to implement collision detection and collision resolution between these rigid bodies.
The final part of our C++ implementation will involve adding constraints to our physics engine. This will enable the integration of complex objects like joints and ragdolls, enhancing engine stability and offering a platform to discuss intriguing ideas from calculus.
Required Tools
All you need is a basic code editor and a C++ compiler. We will utilize a cross-platform library called SDL to render our graphics. Whether you're using Windows, macOS, or Linux, a C++ compiler is readily available, allowing you to follow along seamlessly.
Additionally, prepare with pen and paper for the lectures. This course stands out from typical programming courses, as we thoroughly explicate every formula encountered during our discussions.
Who teaches 2D Game Physics Programming? Gustavo Pezzi
Gustavo Pezzi is a UK-based computer-science lecturer (Pikuma) and one of the most distinctive teachers working at the intersection of low-level programming and game development. His material is unusual in the modern course market for how deep it goes into the foundations: assembly, computer architecture, classical raycasting / rasterisation algorithms, and the math underneath modern graphics.
His CourseFlix listing reflects that range: courses on 3D Computer Graphics Programming, Raycasting Engine Programming, 2D Game Physics Programming, NES Programming with 6502 Assembly, PS1 Programming with MIPS Assembly & C, Atari 2600 Programming, Compilers, Interpreters and Formal Languages, plus C++ engine programming and Lua scripting. Material is paid and aimed at developers who want to understand systems from the ground up rather than ship CRUD apps.
What lessons are included in 2D Game Physics Programming?
This is a demo lesson (10:00 remaining)
You can watch up to 10 minutes for free. Subscribe to unlock all 191 lessons in this course and access 10,000+ hours of premium content across all courses.
Learn to build 60 games in Construct 2 without coding. Master game development by building 60 practical projects. Learn to make art and design games in Photosho
This course is a deep dive into the world of PlayStation programming! We'll explore the PS1 hardware, understand its sub-components, and learn how to code games
Code a professional side view 2d game character with the Free game engine Godot! Learn the fundamentals you need to code solid movement for platformers, action-
Become a better game developer! With this course, you will learn to create your own top-down game inspired by Zelda, using the Free and Open Source game engine
With Socket IO it is very easy to create a game where multiple remote players can share data. In this course we start by installing NODE.js, a prerequisite of S
This course provides a gentle and comprehensive introduction to the fundamentals of a 2D game engine architecture. We will explore several popular programming p
This course provides a gentle and comprehensive introduction to the fundamentals of a 2D game engine architecture. We will explore several popular programming p
This course is a deep dive into the world of PlayStation programming! We'll explore the PS1 hardware, understand its sub-components, and learn how to code games
This course will teach you how to create a complete raycasting engine from scratch. We'll use an algorithm similar to the one used in Wolfenstein 3D. The final
This course is a comprehensive immersion into the command-line of Linux and other UNIX-like systems. We'll learn the most popular shell tools and introduce conc
This course is a complete immersion into the fundamentals of computer graphics !
37h 55m
Frequently asked questions
What prerequisites are needed for this course?
The course is designed to teach concepts from first principles, so no prior experience with game physics or advanced mathematics is required. However, a basic understanding of programming and familiarity with C++ is beneficial. The course involves coding a simple 2D physics engine from scratch using C++, so having some experience with this language will help in following along with the coding exercises.
What will I build during the course?
During the course, you will build a simple 2D physics engine using C++. The project begins with simulating particle physics to understand movement and forces. You will then implement collision detection and resolution for rigid bodies like circles, rectangles, and polygons. The final part involves adding constraints such as joints and ragdolls to enhance the engine's stability and functionality.
Who is the target audience for this course?
This course is aimed at individuals interested in understanding the mathematics and programming behind 2D game physics. It is suitable for beginners who have a basic understanding of programming and C++, as well as more experienced developers looking to deepen their knowledge of physics engines and their implementation in games.
How does the depth of this course compare to others on 2D game physics?
The course provides a comprehensive introduction to 2D game physics, covering foundational mathematics such as vectors, matrices, and basic trigonometry. It goes beyond basic concepts by including rigid body dynamics, collision detection, and constraints. While it thoroughly covers these topics, it is introductory in nature and focuses on building a foundational understanding rather than exploring advanced topics in game physics.
What specific tools will be used during the course?
The course primarily uses the C++ programming language for building the physics engine. You will need a basic code editor and a C++ compiler. The course also introduces the P5js web editor for visualizing errors and coding exercises early in the lessons. These tools provide a practical platform for implementing and testing the physics concepts covered in the course.
What topics are not covered in this course?
The course does not cover advanced 3D game physics or complex simulations that go beyond the scope of a 2D physics engine. It focuses strictly on 2D physics, including particle dynamics, rigid body collision, and basic constraints. High-level game development topics such as graphics rendering, sound design, and user interface development are also not addressed.
How much time should I expect to commit to this course?
The course consists of 191 lessons, providing an extensive exploration of 2D game physics. Although the total runtime is not specified, you should expect to invest a significant amount of time in both watching the lessons and engaging in the practical coding exercises. The time commitment will vary depending on your familiarity with the subject matter and your pace in completing the exercises.