This list is a collection of blog posts, videos or stream reuploads that in some way or another have been useful for my programming.
Two blog posts discussing how a typical C programmer and a typical C++ programmer approach the same problem, and the implications that those styles have in regards to program correctness (in part I) and efficiency (in part II).
Is a certain programming language expressive enough for your needs?
On a Handmade Hero stream, a user asks Casey why he doesn't use C++ "smart pointers". Casey answers by talking about how becoming a better programmer is tied to your ability to think about systems rather than individual elements. Smart pointers are, then, only necessary until you improve as a programmer and get past that phase that we all go through.
A chapter in a book about game programming, explaining the basics of the game loop.
This game engine devlog explores various solutions to the variable framerate problem, and explains the reason behind the author's final choice.
An explanation and implementation of a fixed-duration timestep, building up from the naïve solution to the more robust one.
A blog post explaining a multi-threaded solution for the problem of monitors having different refresh rates.
A blog post that goes over the reason why many games stutter despite having a stable framerate, and why the problem is unfixable given the current graphics APIs.
A video version.
About double-buffering, triple-buffering and the window compositor.
Unity developers explaining a change they made to how Time.deltaTime is computed.
A website containing articles explaining shaders, the math of transformations, colors.
Topics covered:
- Minimum Distance between a Point and a Line
- Minimum Distance between a Point and a Plane
- Intersection point of two line segments in 2 dimensions
- The shortest line between two lines in 3D
- Intersection of a plane and a line
- Equation of a plane
- The intersection of two planes
- Intersection of three planes
- Equation of a line in polar coordinates
Topics covered:
- Point/Point
- Point/Circle
- Circle/Circle
- Point/Rectangle
- Rectangle/Rectangle
- Circle/Rectangle
- Line/Point
- Line/Circle
- Line/Line
- Line/Rectangle
- Polygon/Point
- Polygon/Circle
- Polygon/Rectangle
- Polygon/Line
- Polygon/Polygon
- Triangle/Point
- Object-Oriented Collision
- Matrix Transformations
Topics covered:
- Circle/Edge Collision
- Circle/Point Collision
- Circle/Circle Collision
- Rectangle/Point Collision
- Rectangle/Rectangle Collision
- Collision Detection with Moving Objects
- Snapping to an Edge
- Collision Detection between Many Objects
- Grid-Based Collision Detection
- More Advanced Collision Detection
How to Create a Custom Physics Engine - architecture of a physics engine and implementation of rigidbodies
Topics covered:
- The Basics and Impulse Resolution
- AABB and circle collision detection
- Position correction
- Generating information about a collision
- The Core Engine
- Integration methods
- Timestepping
- Bodies, shapes, materials and forces
- The broad phase
- Halfspace intersection tests
- Friction, Scene and Jump Table
- Static and dynamic friction
- The Scene class
- Collision procedure jump table
- Oriented Rigid Bodies
- Cross Product
- Torque and Angular Velocity
- Inertia
- Transforming shapes
- Polygon/Polygon and Circle/Polygon impulse resolution
Topics covered:
- An Introduction to Rigid Body Dynamics
- Collision Detection for Solid Objects
- Constrained Rigid Body Simulation
Realtime collision detection - port of some functions from 'Real Time Collision Detection' book by Christer Ericson to Odin
Topics covered:
- The parabolic equation
- Gravity
- Determining jump height and duration
Topics covered:
- What is numerical integration
- Explicit Euler and its problems
- Semi-implicit Euler
- RK4
- Comparison between Semi-implicit Euler and RK4
Topics covered:
- Moving solids
- Moving actors
- Carrying and pushing