
On The Metal Jonathan Blow
Jonathan Blow traces game-making from Prince of Persia’s pixel-perfect animation to modern GPUs, networking, and the hard limits of parallel processing. He also takes on programming languages, software reliability, and why game design should be about more than flashy graphics or keeping players glued to a screen.
02:51:26
Diverse Game Design Priorities
- The mainstream game industry focuses on high-budget immersive experiences, but many popular games are simple and gameplay-focused.
- There's tension between creating visually complex games and games that emphasize core gameplay.
Early Game Influences
- Jonathan reminisced about early text adventures like Infocom's Trinity, which deeply influenced him.
- He also played networked games like Netrek during college, fostering his early experience with multiplayer games.
Porting Doom to SGI Set-Top Box
- Jonathan ported Doom to an SGI set-top box, a technically interesting but commercially limited project.
- The project challenged him to optimize reading data over slow networked storage, illustrating early internet gaming issues.
Get the Snipd Podcast app to discover more snips from this episode
Get the app 1 chevron_right 2 chevron_right 3 chevron_right 4 chevron_right 5 chevron_right 6 chevron_right 7 chevron_right 8 chevron_right 9 chevron_right 10 chevron_right 11 chevron_right 12 chevron_right 13 chevron_right 14 chevron_right 15 chevron_right 16 chevron_right 17 chevron_right 18 chevron_right 19 chevron_right 20 chevron_right 21 chevron_right 22 chevron_right 23 chevron_right 24 chevron_right 25 chevron_right 26 chevron_right 27 chevron_right 28 chevron_right 29 chevron_right 30 chevron_right 31 chevron_right 32 chevron_right 33 chevron_right 34 chevron_right 35 chevron_right 36 chevron_right 37 chevron_right 38 chevron_right 39 chevron_right 40 chevron_right 41 chevron_right 42 chevron_right 43 chevron_right 44 chevron_right 45 chevron_right 46 chevron_right 47 chevron_right 48 chevron_right 49 chevron_right 50 chevron_right 51 chevron_right 52 chevron_right 53 chevron_right 54 chevron_right 55 chevron_right 56 chevron_right 57 chevron_right 58 chevron_right 59 chevron_right 60 chevron_right 61 chevron_right 62 chevron_right 63 chevron_right 64 chevron_right 65 chevron_right 66 chevron_right 67 chevron_right
Introduction
00:00 • 3min
Prince of Persia
02:55 • 4min
How Do We Animate the Geometry of a Person Walking Around?
06:57 • 6min
GPU Programming Is a Different Kind of Acceleration Than CPU Programming Right So CPU Talking to GPU Is Slow GPU Talking Back to CPU Is Slow
12:30 • 2min
Deep Learning and the Bitcoin Miners
14:14 • 2min
NVIDIA 2080 TI - It's a Little Too Early but It Works
16:11 • 2min
Speculative Execution and the Cell Processor
18:15 • 3min
How Do We Accelerate Clocks?
21:09 • 2min
How to Schedule a Video Game Using a Co-Producer
22:49 • 2min
I Think the Reason That GPUs Are So Successful Is Because of the Interconnectedness of the GPUs
24:30 • 3min
Hardware People Are Lazy and Stunny Yeah Yeah Yeah
27:28 • 2min
The Cell Is an Important Experiment and I'm Not Sure if You're Trying to Do That or Not
29:03 • 3min
Using a Physics Engine in a Multiplayer Game
31:53 • 2min
Infiniband Servers - The Infinite Band
33:47 • 2min
Is Your Baby Ugly?
35:28 • 2min
The Metal on the Metal Podcast
37:56 • 2min
Game Developer Jonathan Blow
39:45 • 2min
Is Minecraft Really a Reasonable Game?
41:30 • 2min
Tetris and the Butterfly Effect
43:13 • 4min
The Problem of Latency in First-Person Shooter Games
46:48 • 2min
What's the Difference Between Hit and Not Hit?
49:09 • 3min
Why Do You Play Shooter Games?
52:28 • 5min
Video Game Industry - Is That a Fair Assessment?
57:50 • 3min
Is There a Game That Helped Inform Your Career in the Game Space?
01:00:52 • 3min
What Was Your First Experience With Networked Games?
01:03:52 • 3min
Doom and It's a WOD File for a Set Top Box
01:06:24 • 3min
NVIDIA 286 Graphics Accelerator
01:09:07 • 3min
Doom to Sgis Doomed Set Top Box
01:11:57 • 2min
What Did You Do After After Sgis?
01:13:48 • 4min
The Secret of Quake
01:17:22 • 2min
The Reuse of the Frame Pointer
01:19:29 • 3min
How to Program a Game Console Right?
01:22:50 • 2min
Doing a Lot With a Little Right Is a Good Idea Right
01:24:44 • 3min
The Number One Thing to Understand in a PC Is CPUs
01:27:14 • 4min
C++ Is Not the Best Programming Language
01:31:06 • 2min
C++ 11 and C++ 17 and I Can't Go Back to C++ Right?
01:32:39 • 3min
Open Source Software
01:35:29 • 3min
Javascript and the Go Ecosystem
01:38:08 • 5min
Using a Smart Pointer in a Game Is a Good Idea
01:43:23 • 4min
Is Open Source a Good Idea?
01:47:00 • 2min
Is Rust a Good Compiler?
01:48:32 • 2min
Rust and the Entity Component System
01:50:21 • 2min
Rust and the Multiple Ownership Problem
01:52:44 • 2min
Is Your Problem a Global State Manipulation Problem?
01:54:14 • 2min
Do You Need a Doubled Linked List?
01:55:54 • 3min
We're in a Golden Age of Software
01:58:27 • 2min
The Way You Ship Software That Works Robustly Means You Know What's in There
02:00:21 • 2min
Is It Hard to Run a Program You Know on Linux or Windows?
02:01:59 • 3min
Containers Are Trying to Get You Back to That Model You Had
02:05:24 • 2min
C Is a Language That Can Compile for Multiple CPUs
02:07:40 • 5min
Is There Still So Much to Be Had in Computer Programming Languages?
02:12:13 • 4min
Programming Languages
02:15:43 • 2min
Are We More Productive in Python?
02:17:55 • 2min
Is It Better to Regurgitate Code Than to Rewrite Code?
02:19:37 • 2min
C Programming and Rust
02:21:39 • 2min
Java Programming - Memory Management Is Impossible
02:23:09 • 2min
Using a Cpu in a C++ Environment Is a Good Idea but It's a Bad Idea.
02:24:50 • 3min
The Number of Programmers That Are Writing Game Engines Is a Smaller Number Than the People That Were Writing System Software
02:28:16 • 2min
Rewrite It in Rust Is Not the Right Thing
02:29:58 • 3min
Compiler Performance Comparison
02:32:34 • 2min
Compilers Aren't Compiling at All Right
02:34:27 • 2min
I've Identified a Breakpoint in a Macro in the Debug Format
02:36:57 • 4min
The Units Philosophy
02:40:29 • 2min
Using Unix to Prototype a Complex Programming Language
02:42:05 • 2min
Unix Redundancy Is Not Just a File Descriptor but It's a File on Disk
02:44:14 • 2min
I Don't Like Java When It Comes Out
02:46:16 • 3min
On the Metal Tails From the Hardware Software Interface
02:48:55 • 3min
You can find Jonathan on Twitter at https://twitter.com/Jonathan_Blow.
Some of the highlights of the show include:
- The Witness: https://en.wikipedia.org/wiki/The_Witness_(2016_video_game)
- Prince of Persia: https://en.wikipedia.org/wiki/Prince_of_Persia_(1989_video_game)
- Prince of Persia source code: https://github.com/jmechner/Prince-of-Persia-Apple-II
- Sprite: https://en.wikipedia.org/wiki/Sprite_(computer_graphics)
- Atari 800: https://en.wikipedia.org/wiki/Atari_8-bit_family
- Atari CTIA (chip performing, among many other things, collision detection for the Atari 800): https://en.wikipedia.org/wiki/CTIA_and_GTIA
- Commodore 64: https://en.wikipedia.org/wiki/Commodore_64
- VIC-II (CTIA-equivalent chip found in the C64): https://en.wikipedia.org/wiki/MOS_Technology_VIC-II
- Skeletal animation: https://en.wikipedia.org/wiki/Skeletal_animation
- GPGPU: https://en.wikipedia.org/wiki/General-purpose_computing_on_graphics_processing_units
- GeForce 2080 Ti: https://en.wikipedia.org/wiki/GeForce_20_series
- Cell microprocessor: https://en.wikipedia.org/wiki/Cell_(microprocessor)
- Dennard scaling: https://en.wikipedia.org/wiki/Dennard_scaling
- Amdahl's Law: https://en.wikipedia.org/wiki/Amdahl%27s_law
- Embarrassingly parallel: https://en.wikipedia.org/wiki/Embarrassingly_parallel
- Client-side prediction: https://en.wikipedia.org/wiki/Client-side_prediction
- Particle system: https://en.wikipedia.org/wiki/Particle_system
- Minecraft: https://en.wikipedia.org/wiki/Minecraft
- Red Dead Redemption 2: https://en.wikipedia.org/wiki/Red_Dead_Redemption_2
- Rewinding time to address lag: https://en.wikipedia.org/wiki/Lag#Rewind_time
- Chronostasis (the illusion of time standing still after eye movement): https://en.wikipedia.org/wiki/Chronostasis
- Counter-strike: https://en.wikipedia.org/wiki/Counter-Strike
- SimCity: https://en.wikipedia.org/wiki/SimCity
- Trinity: https://en.wikipedia.org/wiki/Trinity_(video_game)
- Brian Moriarty: https://en.wikipedia.org/wiki/Brian_Moriarty
- Infocom: https://en.wikipedia.org/wiki/Infocom
- Lost Treasures of Infocom: https://en.wikipedia.org/wiki/The_Lost_Treasures_of_Infocom
- Netrek: https://en.wikipedia.org/wiki/Netrek
- Apollo Computer: https://en.wikipedia.org/wiki/Apollo_Computer
- Silicon Graphics (SGI): https://en.wikipedia.org/wiki/Silicon_Graphics
- Time Warner's "Full Service Network" (SGI Orlando project): https://www.nytimes.com/1994/12/12/business/time-warner-s-time-machine-for-future-video.html
- Netscape Communications: https://en.wikipedia.org/wiki/Netscape
- Doom: https://en.wikipedia.org/wiki/Doom_(1993_video_game)
- Wolfenstein 3D: https://en.wikipedia.org/wiki/Wolfenstein_3D
- Ultima series: https://en.wikipedia.org/wiki/Ultima_(series)
- SGI engineers transferred to Nvidia, ca. 1999: https://www.eetimes.com/sgi-graphics-team-moves-to-nvidia/
- Quake: https://en.wikipedia.org/wiki/Quake_(video_game)
- Quake source code: https://github.com/id-Software/Quake
- John Carmack: https://en.wikipedia.org/wiki/John_Carmack
- Michael Abrash: https://en.wikipedia.org/wiki/Michael_Abrash
- Total Entertainment Network: https://en.wikipedia.org/wiki/Total_Entertainment_Network
- boo.com: https://en.wikipedia.org/wiki/Boo.com
- Braid: https://en.wikipedia.org/wiki/Braid_(video_game)
- SIMD: https://en.wikipedia.org/wiki/SIMD
- Pentium U-pipe and V-pipe: https://en.wikichip.org/w/index.php?title=File:24281603.pdf&page=8
- Data-oriented design: https://en.wikipedia.org/wiki/Data-oriented_design
- Jonathan's rant on Rust: https://www.youtube.com/watch?v=4t1K66dMhWk
- Catherine West's closing keynote at RustConf 2018: https://www.youtube.com/watch?v=aKLntZcp27M
- JAI language: https://en.wikipedia.org/wiki/Jonathan_Blow#JAI_language
- "Worse is better" and the "MIT approach": https://en.wikipedia.org/wiki/Worse_is_better
- Smart pointer: https://en.wikipedia.org/wiki/Smart_pointer
- D language: https://en.wikipedia.org/wiki/D_(programming_language)
- Entity-component-system: https://en.wikipedia.org/wiki/Entity_component_system
- Jonathan's talk "Preventing the Collapse of Civilization": https://ww...

