The LCTHW Not-Really-Weekly Update #5: May 14, 2025
The LCTHW Not-Really-Weekly Update #5: May 14, 2025
No, you didn't miss any weekly updates, I just didn't send any. Right after sending the previous "Weekly" update back in December, 2024 I became obsessed with making games in C++. You see, I discovered that game development combines my love of painting with my love of programming and that absorbed all of my free time and attention. Now that I've made a few games I'm back to doing updates with helpful tips and content for you.
You can read this email at:
https://learncodethehardway.com/emails/15-lcthw-weekly-update-5/
Year End 20% Off Sale Ending Soon
I started a "Year End Sale" last year and...then became obsessed with making games in C++ and totally forgot to disable it. I'm going to finally end the sale May 19th (Next Monday) so if you need a course please buy it before Monday to get the discount:
https://learncodethehardway.com/courses/
Announcing "Painting for Programmers" on Youtube
I've spent years trying to figure out how to teach Drawing and Painting to my fellow code monkeys and I simply couldn't quite figure it out. Actually I couldn't even articulate why a programmer would want to learn how to Art other than...uh...it's like fun? After working on games I'm finding that my ability to paint is a definite super power when making games. There's so many things that I shouldn't be able to do but weirdly figure out intuitively and I find there's mostly not too much holding me back. Coding+Painting really is the winning combo, and learning to draw is not difficult, it just takes time.
Read more about the series on my blog
I've Made 3.5 Games
Since we last talked I've managed to put together 3.5 games of low to average quality. I have to say that making games is easily the greatest creative experience of my life and I am absolutely obsessed. Originally I thought I'd make enough games to give the C++ course credibility but now I'm declaring this my one true passion...at least until I get fascinated by something like making an operating system. You think I'm joking but...
Anyway, the games I've made are:
- Turing's Tarpit
- This was the first "game" I made, and I put quotes around "game" because really I think I'm the only person even remotely interested in playing this one. It's a game that watches me code by monitoring my files, and every time I save it runs my build, so an auto-builder. However, it also processes the build process's error reports and every time the compiler reports an error I take damage. I have about 100HP and different kinds of errors do different amounts of damage. When I play it, if I lose all of my HP then I run
git checkout .
to reset my code and try again. You'd think this would slow me down but weirdly I find it doesn't. I play this game regularly on Twitch and I might even do an evening of "Permadeath Programming" where I delete my entire project if I lose all of my HP. - The Roguelike
- This was the second game I started working on and is a simple Roguelike. I got it to a point where you can kind of play it and it mostly works, then became distracted with...
- Raycasted Dungeon Crawler
- This is my current obsession and it's awesome. The reason I like this project so much is it's an opportunity to paint. All of the sprites and textures in this game are hand painted by me and most of the design is just an excuse to do a bunch of painting for a game. It's general theme is a retro style dungeon crawler with Raytraced and 2D graphics similar to Anvil of Dawn or Stonekeep. Currently you can download the latest version for OSX, Windows, and Linux and walk around setting a few enemies on fire.
- Clicker the Dog
- This is a demo I made in my LEL-GUECS GUI library that I kind of like as a game on its own. Idle Clicker games are a popular genre of game that's another "excuse to do some painting" type of game, so I'm thinking of kicking this off into a new project directory to tinker with. Right now it has a funky dog painting that you click on and it barks, but you have to build it yourself.
I've Made a GUI Library
I got to a point in my games where I needed to do the typical GUIs. Inventory, Looting, Character View, Status, etc. I also needed to make a fairly complex UI for one game that involved opening a blanket. When I looked around there wasn't too much that fit the bill, with most people either using ImGUI or hand coding every pixel like a neanderthal. What I wanted was just enough GUI to let me easily use everything my game library already has to create my UI elements. I can already do mouse and keyboard, graphics, sprites, animation, shaders, and sound effects. All I need is a layout engine and a way to organize my existing game engine capabilities.
Then I remembered something I made in 2014 called "Layout Expression Language." I actually forgot I made this until I was googling for possible solutions and remembered it. I couldn't find the code but until I found an InfoQ article about what I made in 2014. That article lead me to find my old code and then I created a replica of LEL in C++. About a month later I had a full GUI library that does what I want but doesn't do any of its own drawing and graphics. It's just a layout system and an ECS system for structuring the components.
I'll be writing about this more but you can checkout the LEL-GUECS code and what I've written there about it. I'd say it's currently a bit "works for Zed" code, but soon I'll have a guide on how to use it and how to make your own for your own system and language.
Twitch Live Shows for Calm People
I stream on Twitch everyday at 10AM and 10PM EST (Miami,NYC) time and my theme is "The Bob Ross of Code." I keep very relaxed and make it something you can watch while you're trying to get work done. If you're like me, you like to be left alone but realize you need people around you to actually focus on work. I don't know why but it's probably something related to working in that kind of environment my whole life.
So if you find you can't focus, come to my Twitch and see if you get motivated to work. I mostly play music without lyrics, typically Classical, Jazz, or Ambient music. Usually there's about 30-60 lurkers watching me code, and sometimes people pitch in and help with tech problems someone's having.
Awesome Links for You
- Lode's Raycasting Tutorial
- This is the tutorial I followed to make my raycaster game that turned into a long term project.
- Codebase64
- Do you yearn for the Comodore 64 era? Curious about learning 6502 Assembly Language? Check this place out.
- VICE C64 Emulator
- This thing is amazing. I have a few people who hang out in my Twitch chat that do C64 programming and they use this. It also emulates other computers like the Vic20.
- Intro to 6502 Assembly
- This site teaches 6502 Assembly but it embeds a little emulator so you can learn it right away rather than having to get into doing it in the VICE Emulator.
- Mesen NES Emulator
- The NES also uses 6502 Assembly, so you could also use this. There's many emulators for this platform.
- Emulator Zone
- Tons of other emulators listed here, for many different PCs.
- Shaders have an Assembly Language
- Did you know you can code shaders with an assembly language called ARB? I may tinker with this soon just to see what it's doing, but weirdly this is actually a sort of reasonably assembly language.
Week 15 Food for Thought
This week's food for thought is this:
I (and many people) love to paint, even though I (we) can take a photo. Will this also happen with AI and programming?
More emails we've sent.
LCTHW Newsletter #7: Go is One of The Languages of All Time
LCTHW Newsletter #7: Go is One of The Languages of All Time
The LCTHW Weekly Update #6: July 8, 2025
The LCTHW Weekly Update #6: Free Upgrades to Some Courses Coming
The LCTHW Not-Really-Weekly Update #5: May 14, 2025
The LCTHW Weekly Update #5: Where I've been, and cool new stuff in my game development journey.
The LCTHW Weekly..ish Update #4
The LCTHW Weekly Update #4: