Gaffer On Games

Glenn Fiedler's Game Development Articles

Networked Physics in Virtual Reality

Networking a stack of cubes with Unity and PhysX

Why can't I send UDP packets from a browser?

A solution for enabling UDP in the web

Client Server Connection

How to create a client/server connection over UDP

Reliable Ordered Messages

How to implement reliable-ordered messages on top of UDP

Sending Large Blocks of Data

How to send blocks quickly and reliably over UDP

Packet Fragmentation and Reassembly

How to send and receive packets larger than MTU

Serialization Strategies

Smart tricks that unify packet read and write

Reading and Writing Packets

Best practices for reading and writing packets

State Synchronization

Keeping simulations in sync by sending state

Snapshot Compression

Advanced techniques for optimizing bandwidth

Snapshot Interpolation

Interpolating between snapshots of visual state

Deterministic Lockstep

Keeping simulations in sync by sending only inputs

Introduction to Networked Physics

Three ways to network a physics simulation

Collision Response and Coulomb Friction

Making a go stone bounce and spin realistically

Rotation & Inertia Tensors

Accurately modelling the wobble of a go stone

Go Stone vs. Go Board

Collision detection between stones and the board

How The Go Stone Moves

Simulating the motion of go stones as rigid bodies

Tessellating The Go Stone

Generating a triangle mesh for the go stone

Shape of The Go Stone

Modelling the shape of a biconvex go stone

Introduction to Virtual Go

My project to simulate a go board and stones

Floating Point Determinism

Is it possible to make floating point calculations completely deterministic?

What Every Programmer Needs To Know About Game Networking

A short history of game networking techniques

Reliability and Congestion Avoidance over UDP

How to implement reliability and congestion avoidance in a completely different way to TCP

Virtual Connection over UDP

How to create a virtual connection over connectionless UDP

Sending and Receiving Packets

How to send and receive packets over UDP with BSD sockets


Which protocol is best for games?

Networked Physics (2004)

How to network a physics simulation

Spring Physics

How to simulate springs and dampers

Physics in 3D

How to simulate the motion of rigid bodies

Fix Your Timestep!

How to step your physics simulation forward

Integration Basics

How to integrate the equations of motion