HackerTubewatch
Surprise me
Frame from Handmade Hero Day 021 - Loading Game Code Dynamically Plays via YouTube's privacy-enhanced embed

Handmade Hero Day 021 - Loading Game Code Dynamically

18 videos recommended on HN
YouTube
2 HN users recommended this tutorial2 months2021–2024 score 2
Years with an HN recommendation, 2007–2026

Recommended as a clear, from-scratch demonstration of how simple code hot-reloading is with plain OS facilities.

Day 21 of Casey Muratori's Handmade Hero, which covers loading game code dynamically from a DLL on Windows. He builds hot reloading of C game code from scratch in about an hour and a half.

“Casey Muratori writes a hot-reloading functionality for C from scratch in about an hour” (HN, 2024)

2 recommendations · 2 citations · Tutorials · intermediate

4 Hacker News comments

From the HN archive; up to 20 kept per video, favoring different commenters. Recommendations first.

@coley Oct 2022 Recommends
on HN thread Anatomy of Linux Dynamic Libraries
Read more
The first time I learned about dynamic loading was while watching an episode of Casey Muratori's Handmade Hero - a series where he builds a video game, in C, from scratch. He compiles the game code as a dll and dynamically loads it at runtime in the Win32 platform layer code. This way he can keep platform code and game code separate and reload the game code at runtime if any changes are made. Being new to this technique, I was impressed to say the least. I always assumed the same functionality was available in the linux environment, but I hadn't bothered to look it up. Now I know. For those who want to learn how to do this in Win32, here's the episode I mentioned above - [this video]
Shows how to dynamically load game code from a Win32 platform layer
@kleiba Jan 2024 Recommends
on HN thread C and C++ Hot-Reload/Live Coding
In one of the earlier episodes of the Handmade Hero series, Casey Muratori writes a hot-reloading functionality for C from scratch in about an hour (while giving detailed explanations of what he's doing). The following two episodes then improve upon the initial results. [this video]
Builds C hot-reloading from scratch in about an hour with detailed explanations

Citations, criticism and jokes

@nextaccountic Nov 2021 Cites it
on HN thread Paradox of the perfect code editor
Read more
Yes. On Rust specifically [link] (discussed here [link] ) And then there's this crate [link] which works on the same principles as the article above, and is based on C code (i.e. the same approach works for C). On the documentation there's links to "Interactive Programming in C" [link] and "Loading Game Code Dynamically" [this video] (this video by Casey Muratori is btw where I first heard about this technique) There's a bunch of other libraries that work the same way, and some example code that can do this. I can find [link] and [link] and [link] and [link] And there's [link] which has a nice API but uses a deprecated rustc internal API and doesn't build anymore. Anyway there was a library that did this in a more elegant way and I just can't find it (perhaps it was rust-hotswap?).
Casey Muratori demonstrates loading game code dynamically as a DLL
@59nadir Jan 2024 Cites it
on HN thread Show HN: Hook – a simple graphical C/C++ runtime editor
Read more
I don't think any game engine in use today except maybe the ultra-general ones would be without sections that are recompiled and reloaded live for gameplay code in this fashion. For all I know the ultra-general ones probably do it some stupidly complex way that sucks because they're overthinking things. Most setups will likely stream both code and assets to wherever the game is running while you're developing as well, but I wouldn't necessarily call that trivial. Recompiling a shared library and hot reloading it if it's changed is (on the order of 20 or so lines), though, and I wouldn't expect any game to be developed without at least some code being reloaded this way. While I haven't seen it as much, developing servers this way is also very doable, depending on how much you have to change data structures that have to be kept around. Edit: See [this video] for an example of how trivial it is to get this using just your OS facilities (`stat` + `LoadLibrary`/`dlopen`). None of this stuff is new and it's certainly been used with C/C++ or any language like it for a very, very long time.
Example showing hot reload is trivial with OS facilities

Video list and Hacker News comment labels from HackerTube (prompted by @karpathy), released under ODC-By 1.0, built on the open-index/hacker-news archive. Hacker News data is provided by Y Combinator; comments remain the work of their authors. Video titles, channel names and thumbnails belong to their creators and are shown via YouTube. HackerTube Watch is an unofficial edition. Data export of 2026-10-31.

Keyboard shortcuts

/
Search
j k
Next / previous video
r
Surprise me
l
Like (video page)
w
Watch later (video page)
?
This help
Esc
Close