Resources

These are some of my favorite resources for learning about various topics. Most topics are technical and/or game-related. I try to only include the ones I find particularly useful, so topics that I haven’t found great reference for might not be included.

This list is in progress, somewhat disorganized, and too rarely updated… I try to group related resources together, but they might also be separate. If looking for a specific topic, Ctrl+F is your friend.

See also: Influences list

general getting into stuff

games writing roundups (mostly criticism, analysis, and interpretation): Critical Distance

animation clips database: Sakugabooru

art stuff: Hyperallergic, e-flux

lots of stuff, just follow people in whatever area: twitter

a couple games blogs i like: my friend pokey (thecatamites/Stephen Murphy), Radiator Blog (Robert Yang), Electron Dance (Joel Goodwin), Tevis Thompson, Brendan Keogh

graphics

physically based rendering: Filament: Physically-based rendering engine - Google Filament team

physically based rendering: SIGGRAPH 2015 Course: Physically Based Shading in Theory and Practice - various

modern opengl: Modern OpenGL - Philip Rideout

opengl: Raw OpenGL - Alain Galvan

pronunciation: Computational Graphics Pronunciation Guide - Morgan McGuire

gamma: What every coder should know about gamma - John Novak

modern real-time rendering techniques (assorted): Advances in Real-Time Rendering in 3D Graphics and Games - various authors

various tech art techniques: Game Art Tricks - Simon Schreibt

some general intro graphics (good illustrations): Making WebGL Dance - Steven Wittens

bezier curves: A Primer on Bezier Curves - Pomax

perlin/gradient noise: Perlin Noise - Eevee

walkthroughs/explanations of rendering systems in various AAA games:
Deus Ex: Human Revolution - Graphics Study - Adrian Courreges
Doom (2016) - Graphics Study - Adrian Courreges
GTA V - Graphics Study - Adrian Courreges

GPU voronoi and distance maps: Voronoi Diagrams on the GPU - Ryan Kaplan

dithering algorithms: Image Dithering: Eleven Algorithms and Source Code - Tanner Helland

z-buffer precision: Maximizing Depth Buffer Range and Precision - Brano Kemen

poisson disk sampling:
Poisson Disk Sampling - Herman Tulleken
Poisson Disc II - Mike Bostock

parallax mapping: A Closer Look At Parallax Occlusion Mapping - Jason Zink

fxaa: Implementing FXAA - Simon Rodriguez

anime-style 3D rendering: GuiltyGearXrd’s Art Style: The X Factor Between 2D and 3D

math + number-y algorithms (see also physics, computational geometry)

spring dynamics (getting accurate+consistent behavior; intuitive parametrization): Spring dynamics for production - Huw Bowles

spring dynamics (alternative intuitive parametrization): Game Math: Precise Control over Numeric Springing - Allen Chou

Frame Rate Independent Damping Using Lerp - Rory Driscoll

weighted random number generation / data structure for loaded dice: Darts, Dice, and Coins: Sampling from a Discrete Distribution - Keith Schwarz

linear algebra (textbook): Linear Algebra Done Right - Sheldon Axler

fourier transform: The Fourier Transform, explained in one sentence - David Smith

game/graphics math (textbooks): Mathematics for 3D Game Programming and Computer Graphics - Eric Lengyel
Foundations of Game Engine Development, Volume 1: Mathematics - Eric Lengyel

geometric distance queries, with source: Geometric Tools: Mathematics: Distance 3D - David Eberly
computational math (various, with source): Geometric Tools - David Eberly

physics simulation (see also math section)

collision detection (textbook): Real-Time Collision Detection - Christer Ericson

gjk collision algorithm: Implementing GJK - Casey Muratori

computational geometry

computational geometry (textbook): Computational Geometry: Algorithms and Applications - Mark de Berg et al

misc/general programming stuff

kalman filters: How a Kalman filter works, with pictures - Tim Babb

c++ vector/matrix implementation with zero-cost swizzling, row/column extraction, transpose: Linear Algebra Upgraded - Eric Lengyel

bitmask operations on C++ enum classes: Type-safe Bitmasks in C++ -

fast-paced online multiplayer implementation:
Client-Server Architecture - Gabriel Gambetta
Client-Side Prediction and Server Reconciliation - Gabriel Gambetta
Entity Interpolation - Gabriel Gambetta
Lag Compensation - Gabriel Gambetta
Sample Code and Live Demo - Gabriel Gambetta

overview of game engine components, with useful details: Game Engine Architecture - Jason Gregory

radix sort on floats: Radix Sort Revisited - Pierre Terdiman

ai steering / context maps: AI Steering - Rory Driscoll

using llvm with haskell; basic compiler programming: Writing a JIT Compiler with Haskell and LLVM - Stephen Diehl

unreal engine

great engine structure and systems overview: Unreal Engine - Jorge Israel Peña

rendering: How Unreal Renders a Frame - Kostas Anagnostou

software engineering

overview of data-oriented design (and memory performance, by necessity): Data-Oriented Design and C++ - Mike Acton

lua codebase (a good read even if not using lua):
Programming in Lua – The Lua Implementation - Fabio Mascarenhas
The Implementation of Lua 5.0 - Ierusalimschy et al
Lua 5.1.4 Annotated Source - Steve Donovan
Recommended reading order for Lua codebase - Mike Pall

assorted game engine code reviews:
Doom 3 Source Code Review - Fabien Sanglard
Doom 3 BFG Source Code Review - Fabien Sanglard
Quake 2 Source Code Review - Fabien Sanglard
Quake Source Code Review - Fabien Sanglard
Doom Source Code Review - Fabien Sanglard
Jurassic Park: Trespasser CG Source Code Review - Fabien Sanglard

latency numbers: Latency Numbers Every Programmer Should Know - Colin Scott

hybrid/small data structures (for cache performance):
Efficiency with Algorithms, Performance with Data Structures - Chandler Carruth
High Performance Code 201: Hybrid Data Structures - Chandler Carruth

writing code for better compiler optimization: Optimizing the Emergent Structures of C++ - Chandler Carruth

specific programming languages

lua: Lua 5.1 Reference Manual - Roberto Ierusalimschy et al

lua performance: Lua Performance Tips - Roberto Ierusalimschy

haskell: What I Wish I Knew When Learning Haskell - Stephen Diehl

practical/misc game development

juice (the game feel concept): Juice It or Lose It - Martin Jonasson and Petri Purho

game feel: An Incomplete Game Feel Reader - Brendan Keogh

action game juice: The Art of Screenshake - Jan Willem Nijman

practical scope-aware code architecture: Free-falling through the Goldilocks Zone - Andy Hull

reuse and recombination of simple visual tech: Technical Art Culture of ‘Uncharted 4’ - Andrew Maximov

buddy AI design/development: Ellie: Buddy AI in The Last of Us - Max Dyckhoff

completing a complex, multi-faceted tech art challenge: Huddle Up! Making the Spoiler of INSIDE - Mikkel Bogeskov Svendsen et al

building basic environments in Unity: How to make cool stuff in Unity - Bronson Zgeb

action game stuff: Embracing Push Forward Combat in ‘DOOM’ - Kurt Loudy and Jake Campbell

structure: The Nature of Order in Game Narrative - Jesse Schell

game design broadly considered; ways play and relate to games

orthogames (textbook): Characteristics of Games - George Skaff Elias, Richard Garfield, and K. Robert Gutschera

speed running (general and specific games), impact of deep game knowledge: Games Done Quick Archives

high-level competitive play: Playing Out Loud  - curated by Zach Gage

high-level ssb: melee: Melee introduction - Cosmo

good intro-level framework for thinking about games (textbook): Rules of Play - Katie Salen and Eric Zimmerman

explore some really good world layout: Dark Souls Map Viewer - FROM Software, vlad001 et al
(note: can also import map data into unity, blender, etc)

usability (basic book, good examples): The Design of Everyday Things - Don Norman

types of players in versus multiplayer games: Timmy, Johnny, and Spike Revisited - Mark Rosewater

designing for different player types: Design Language - Mark Rosewater

special dynamics of 2-player games: 2-player games - Michael Brough

technical game design:
Imbroglio notes (1-6) - Michael Brough 
inventory management 
blood and mana 
monsters 
when this
imbroglio friends 
meditation

game balance (competitive game focused):
Balancing Multiplayer Games - David Sirlin
definitions 
viable options 
fairness 
intuition 
game balance and yomi

solvability (why balance is important): Solvability - David Sirlin

card bans as the last defense against game solvability: Skullclamp, We Hardly Knew Ye - Aaron Forsythe

communicating game experiences: Pitching Feelings - Rami Ismail

accessibility and challenges of tabletop game paraphernalia: Let’s Get Physical - lessons from the real world - Zach Gage

(in)stability in game systems and level design: Dark Past (part 4): The Useful Post (?) or Randy Smith’s “valence theory” of level design - Robert Yang

preserving a sense of discovery in the age of spoilers: Preserving a Sense of Discovery in the Age of Spoilers - Jim Crawford

design/implementation of specific aspects of games

movement grid alignment in original Zelda: Movement Mechanics (Deconstructing Zelda) - Troy Gilbert

SotC: various efficient lighting and blur techniques; colossus collisions; fur rendering; LOD; etc: The Making of Shadow of the Colossus

CRT simulation and retro shaders (many articles): Filthy Pants Blog - Hunter K

CRT simulation: CRT Simulation in Super Win the Game - Kyle Pittman

narrative in games and in general

basic game rhetoric (in Passage): What I was trying to do with Passage - Jason Rohrer

lore building:
Dark Souls Lore - Artorias of the Abyss - EpicNameBro
The Legend of Artorias the Abysswalker - VaatiVidya

world building: Dark Souls Design Works

non-western narrative structures: On Narrative Structure: Kishōtenketsu and Obokuri-Eeumi T.E. Waters

issues with monolithic plot structure: Save the Movie

screenwriting; narrative and storytelling: Screenwriting 101 - Film Crit Hulk

formation of meaning in games, art, etc; ideas about games as a medium

meaning in games as built on abstraction: The Immersive Fallacy - Frank Lantz

formation of meaning: Of Grammatology - Jaques Derrida

complexity and contradiction in design: Complexity and Contradiction in Architecture - Robert Venturi

individual agency of works and objects: “Context Stinks!” - Rita Felski

games are not reducible to code + art: A Tale of Two Jousts: Multimedia, Game Feel, and Imagination - Douglas Wilson

importance of aesthetic coherence: Basic Animation Aesthetics - David OReilly

isolating “style”: Exercises on Style - Raymond Queneau

choice and (non)linearity in games: Stop Crying About Choice - Joel Goodwin

“A novel is a medicine bundle, holding things in a particular, powerful relation to one another and to us”: the novel as un-heroic; sci-fi as fundamentally tragic: The Carrier Bag Theory of Fiction - Ursula Le Guin

intent as what distinguishes good games: The Center Of All Things - Rami Ismail

major dialogs game studies: Game Studies, Year Fifteen - Ian Bogost

when the idea of a thing comes before the thing itself: Double Futures - Frank Lantz

the sign that points only to other signs; the hyperreal: Simulacra and Simulation - Jean Baudrillard

creative communities; “z-games”; games as weird objects; pushing back against popular critical conception of play: dump.txt - thecatamites

make games u wish 2 see on the dreamcast: Arcane Kids Manife$to - Arcane Kids

games as rational and irrational: Hearts and Minds - Frank Lantz
(see also “A Tale of Two Jousts”)

rules systems as truth; pursuit of same: Truth in Game Design - Jonathan Blow

games as mirrors for thought: Life and Death and Middle Pair - Frank Lantz

implications of systems and modeling in games: Sims, BattleBots, Cellular Automata God and Go - Celia Pearce in conversation with Will Wright

game formalism: Parley - Frank Lantz

games as music: Music Object, Substance, Organism - David Kanaga

games as forces and rules: Intro to Ludic Ecologonomy (Pt. 1) - David Kanaga

game design as communication of rules: The Door Problem - Liz England

more on rules/systems/truth in games: Designing to Reveal the Nature of the Universe - Jonathan Blow and Marc Ten Bosch

games should be humanist: Realtime Art Manifesto - Auriea Harvey and Michaël Samyn

“it’s more important to witness a game than to play it”: Not a manifesto; on game development as cultural work - Robert Yang

creative/artistic practive

artistic practice; art/artist relationship: Sentences on Conceptual Art - Sol LeWitt

making/finishing a game: Hello World - Brendon Chung

process-based methods for making original work within constraints: DOOM: Behind the Music - Mick Gordon

misc

recognizing creative goals when evaluating games: How I analyze a game - Raph Koster

against violence in games: Violence Considered Harmful - Pippin Barr

stop worrying about games being art: The Great Art Upgrade Or: How the Game Community’s Desperate Quest for Art Cred Makes All of Us Look Pathetic and Ignorant - Paolo Pedercini

technical work towards general goals; live programming and fast iteration tools: Inventing on Principle - Bret Victor

monetization and free-to-play

free-to-play games - strategies and ethics: Chasing the Whale: Examining the ethics of free-to-play games - Mike Rose

against free-to-play (as it’s typically used): Game design: the medium is the message - Jonathan Blow

positive implementations of free-to-play: Microtransactions Aren’t Evil - Why Viridi is Free-to-play - Kevin Maxon

good game crits of specific games

(section is short right now due to lack of attention; there is a lot of great stuff out there)

crit: The Witness: The Unbearable Now: An Interpretation of The Witness - Joel Goodwin

crit: Vanquish: Vanquish - A Retrospective - Adam Saltsman

the origin of “ludonarrative dissonance”: Ludonarrative Dissonance in Bioshock - Clint Hocking

other good collections, syllabi, and reading lists

experimental games and weird internet stuff (syllabi): Courses - Paolo Pedercini

z-buffer precision: Reading list on Z-buffer precision - Julien Guertault

many topics: No Excuse List - various

undergrad computer graphics: Graphics courses - compiled by Ivan Malopinsky

undergrad computer science:
A Bachelor’s Level Computer Science Program Curriculum - Madmin
An Intensive Bachelor’s Level Computer Science Program Curriculum - Madmin

mixed bag of basic rendering stuff: CIS 565: GPU Programming and Architecture - Patrick Cozzi

numerous math topics (generally cs-related): Primers - Jeremy Kun