HackerTube
HomeLongsLikedHistoryWatch laterCategoriesPlaylistsSettings

Handmade Hero Day 021 - Loading Game Code Dynamically

Molly Rocket2 HN recommenders · recommended in 2 months, 2021-2024
YouTube
83K views · 11 years ago · tutorial · evergreen

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.

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

Game programming & enginesC, C++, Rust, Go & systems languages#handmadehero#dll#hotreload#win32#cprogramming

4 comments from Hacker News

@kleiba2024 · in “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

RecommendsView on HN
@59nadir2024 · in “Show HN: Hook – a simple graphical C/C++ runtime editor”

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.

CitesView on HN
@coley2022 · in “Anatomy of Linux Dynamic Libraries”

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

RecommendsView on HN
@nextaccountic2021 · in “Paradox of the perfect code editor”

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?).

CitesView on HN
Handmade Hero Day 001 - Setting Up the Windows Build1:13:51

Handmade Hero Day 001 - Setting Up the Windows Build

Molly Rocket
465K views • 11 years ago
Intro to C on Windows - Day 11:11:59

Intro to C on Windows - Day 1

Molly Rocket
370K views • 11 years ago
Hot Code Reloading in C2:16:18

Hot Code Reloading in C

Tsoding Daily
94K views • 3 years ago
Interactive programming Flappy Bird in ClojureScript6:22

Interactive programming Flappy Bird in ClojureScript

Bruce Hauman
55K views • 12 years ago
HandmadeCon 2015 - Mike Acton1:11:48

HandmadeCon 2015 - Mike Acton

Molly Rocket
102K views • 10 years ago
HandmadeCon 2015 - Pat Wyatt1:07:22

HandmadeCon 2015 - Pat Wyatt

Molly Rocket
33K views • 10 years ago
HandmadeCon 2016 - History of Software Texture Mapping in Games1:22:13

HandmadeCon 2016 - History of Software Texture Mapping in Games

Molly Rocket
15K views • 9 years ago
Handmade Hero | Getting rid of the OOP mindset7:44

Handmade Hero | Getting rid of the OOP mindset

vexe
167K views • 9 years ago
Making Metagun6:39

Making Metagun

Nizzotch
763K views • 16 years ago
Unreal Engine 4 - GT.TV Exclusive Development Walkthrough10:30

Unreal Engine 4 - GT.TV Exclusive Development Walkthrough

GameTrailers
972K views • 14 years ago
Killing the Walk Monster50:00

Killing the Walk Monster

Molly Rocket
59K views • 6 years ago
Bruce Hauman - Developing ClojureScript With Figwheel45:31

Bruce Hauman - Developing ClojureScript With Figwheel

ClojureTV
56K views • 11 years ago
CppCon 2014: Jeff Preshing "How Ubisoft Develops Games for Multicore - Before and After C++11"1:04:33

CppCon 2014: Jeff Preshing "How Ubisoft Develops Games for Multicore - Before and After C++11"

CppCon
53K views • 12 years ago
Unity DOTS vs Handbuilt: Sample Project27:56

Unity DOTS vs Handbuilt: Sample Project

Nick Caston
687K views • 6 years ago
Reboot Develop 2017 - Jonathan Blow, Thekla Inc. / Making Game Programming Less Terrible1:02:49

Reboot Develop 2017 - Jonathan Blow, Thekla Inc. / Making Game Programming Less Terrible

Reboot Develop
112K views • 9 years ago
CppCon 2016: Jason Turner “Rich Code for Tiny Computers: A Simple Commodore 64 Game in C++17”1:19:52

CppCon 2016: Jason Turner “Rich Code for Tiny Computers: A Simple Commodore 64 Game in C++17”

CppCon
264K views • 10 years ago
How I Fixed a 10 Year Old Guitar Hero Bug Without the Source Code12:09

How I Fixed a 10 Year Old Guitar Hero Bug Without the Source Code

ExileLord
404K views • 9 years ago
Ideas about a new programming language for games.1:55:24

Ideas about a new programming language for games.

Jonathan Blow
530K views • 12 years ago
Zach Oakes - Making Games at Runtime with Clojure37:34

Zach Oakes - Making Games at Runtime with Clojure

ClojureTV
31K views • 11 years ago
"Clojure in Unity 3D: Functional Video Game Development" by Ramsey Nasser and Tims Gardner46:22

"Clojure in Unity 3D: Functional Video Game Development" by Ramsey Nasser and Tims Gardner

Strange Loop Conference
24K views • 12 years ago