Evolution of Game Animation Complexity
- Jonathan Blow shared his experience on animation complexity evolving from simple 2D sprites to complex 3D skeletal animations.
- He explained how collision detection and interaction complexity dramatically increase in modern games.
Gaming's Parallelism Challenges
- GPUs excel at the embarrassingly parallel task of shading pixels independently.
- Most game logic involves heavy data interdependencies, making parallel hardware acceleration challenging.
The Cell Processor Physics Experiment
- Jonathan and friends developed a physics server engine on IBM's Cell processors to run really fast physics for multiplayer games.
- They encountered fundamental latency and complexity challenges that made the Cell unsuitable for this purpose.
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...