Game Programming Patterns | Robert Nystrom | Software Design for Game Developers
Engine developers and technical designers. Object pools and flyweight patterns. Double buffering and other rendering patterns. Practical advice on when to use (and not use) each pattern. Subclass sandbox pattern.