📧 Learn C++ Important Update
Learn C++ Important Update
Hello C++ learners, this is a quick email to warn you about an important update to the course. There's a bug in older checkouts of the game dev starter pack that you need to fix before you try to use it. You should only need to update the checkout and then clean and recompile.
The Fix
In order to not waste your time here's the fix. If you're curious about why you have to do this, read more at the end.
You need to run these commands on Windows:
git pull
.\scripts\reset_build.ps1
On macOS you need to run these commands:
git pull
.\scripts\reset_build.sh
If git gives you any errors then you messed up your git repo, probably by tinkering with it (as you should). Backup your repo then go grab the project all over again to get the latest code. Or, just delete the whole thing and go get it again.
The git repo is at game-dev-starter-pack or you can just go back through Exercise 01: Gearing Up.
What's Broken
The version of ImGui that's being distributed now has changing APIs that I need to adapt to, but I don't quite have time and the API changes are honestly...kind of dumb. Rather than dive in and fix them up I decided to fix the overall problem that Meson has of constantly using versions of software I didn't tell it to use.
Meson is really good, but it's missing quite a few key features of a build system, like being able to lock dependency versions. Without this you can't make "repeatable builds" but I've figured out a way to get Meson to do what I want, with only a tiny amount of jank.
Meson uses a dependency system called "wraps", and you can see everything they have available at the meson wrapdb projects list. You can also write your own Meson .wrap files which is very nice, and something I do for a lot of my projects. These .wrap files can also take over existing CMake based projects automatically, which is a huge win for C++ projects. Just point it at a CMake based git repo and off you go.
The problem is every time you run meson wrap install X it goes to the Meson wrapdb and downloads the very latest version. There's no way to specify a specific version. This is incredibly stupid, but there is a way around. A very simple way around it:
Cache the
.wrapfiles.
What I did is download the .wrap files like normal, then copy them into a new directory named wraps. This directory holds all of the .wrap files for project dependencies, even the ones I wrote. Then when you run ./scripts/reset_build.ps1 it simply copies the files from wraps to subprojects and doesn't use the meson wrap install command. Now all dependencies are locked at exactly the version I want. It's also faster, doesn't require mesonbuild.com access, and allows me to modify wrap files if I need to.
That's the explanation. If you want to go look at those files just point your editor at the wraps directory and open the files. There's nothing magic in there, and if you want to try writing your own just read the wrap file documentation.
Update on My Studio
As you know, I've been busy rewiring my studio after Hurricane Milton. I'm almost done with that so tonight (Oct 23) I'll be finally doing another C++ live stream on Twitch at https://twitch.tv/zedashaw to work on roguish. It'll be a fairly quiet coworking session with just some nice music and talking about collision systems. Come by if you got time and want to watch or listen to some C++ hacking.
More emails we've sent.
📧 Art Guy Summer 25% Ends Soon
Art Guy Summer Sale Ends Soon -- 25% All Courses
📧 A Brutally Honest Critique of Blender Thus Far
A Brutally Honest Critique of Blender Thus Far
📧 Art Guy Summer Week 1 Review
My first week of Art Guy Summer: Learning blender and re-discovering pastels.
📧 25% Off 2026 Summer Sale
Announcing my 25% off Summer Sale for July.