Playing Video Games One Frame at a Time
summary
Shows how programmatic play actually works: runs Doom demo files deterministically to approval-test a C++ refactor, executes dozens of demos in CI and compares numeric outputs; uses OpenCV color HSV heuristics and template matching with OpenCV to locate 64×64 gem cells and identifies exactly 32 possible moves; injects a DLL with Microsoft Detours into a DirectX9 game, hooks EndScene to emit per-frame keyboard events (200 ms throttle during tests) and records frame-accurate input scripts for replay.
AI-written summary · about
chapters (22)
- 0:00Introduction
- 2:53Why this talk is fun
- 5:47Remote game control challenges
- 6:31Games with built-in support
- 9:20Doom demo files speedrunning
- 12:14Doom's deterministic engine
- 15:22Approval testing with Doom demos
- 19:42Bejeweled image recognition
- 27:31Gem colors with HSV
- 30:19Best Bejeweled move
- 31:55Automating Bejeweled clicks
- 33:55Live Bejeweled demo
- 34:59Games without built-in support
- 36:01Game loop understanding
- 40:26Frame-based timing
- 41:51Hooking VBV DirectX calls
- 45:02Detours for DirectX interception
- 48:33Hooking end scene for input
- 51:49Live VBV frame demo
- 56:02Summary and applications
- 57:30Resources for TAS and Doom
- 58:15Q&A
related talks
07mBecome A Game Developer In 5 Minutes Or Less
52mOptimising your game AFTER it ships
51mOptimising Games for a Complex World
08mCreative Console: A Player-driven Game Based on A Modular Fast-Evolving-And-Verifying Framework
36mDebug, Analyze and Optimize Games with Intel Tools
08mInterview with
11mGames People Play
24mFrom C to Ruby: Porting Doom
