March 2025: Book update, game jam, new libraries... and the future!
Hi! Welcome to my first-ever newsletter. I'm happy that so many have signed up. Let's look at what happened in March!
Updates to my book and the future of it
My book "Understanding the Odin Programming Language" got a 1.6 update. It was mostly about updating a few things that had changed in the language. I also added some new sections, such as how to break cyclic package imports using callbacks and interfaces. You can read the whole change log here: https://zylinski.itch.io/odinbook/devlog/909629/version-16-keeping-the-book-up-to-date
I also want to talk about the future of the book.
My aim is to keep it up-to-date. This means that I'll update it if important things change in the language. These updates will be free for those who have already bought the book, just like past updates.
I have also decided to not make a physical version of the book. Sorry anyone who was waiting for that! My reasoning is like follows: When I wrote the book I wanted to create a semi-interactive work. It does explain many things in great detail, but I also don't shy away from linking to articles, videos, documentation and code. I do it in a kind of informal way, without footnotes. Changing all that for a physical version is a lot of work. Frankly I just don't think it'll work very well in physical format. A second reason is that I just didn't find the energy to work on the physical version. So I just won't.
A huge thanks to everyone who has bought the book and said such nice things about it. It's my first independent work that has sold well enough in order to sustain me for a while. Everything I currently do is funded by book sales.
I told my programming life story on a podcast
I was a guest on the Wookash Podcast (previously known as the "Game Engineering Podcast"). You can listen / watch here:
It was very fun! The front part of it ended up being me talking about all the twists and turns that can lead to one's current occupation. The second half is more specific about game development and Odin. Thanks to Łukasz for hosting and having me on!
Handle-based map blog posts and library
It's often important to store references to objects within your code. However, many of us have probably had problems with dangling pointers etc.
A common remedy is to store handles instead of pointers. A few days ago I made a blog post about that: https://zylinski.se/posts/handle-based-arrays/
Towards the end of the blog post I talked about some further ideas regarding how to use virtual memory arenas in order to make the code more robust. My curiosity resulted in the following odin-handle-map library: https://github.com/karl-zylinski/odin-handle-map
Note: I say handle-based array, handle-based map and handle map interchangeably.
In many ways my blog post was meant as a follow-up to Andre Weissflog's 2018 article named "Handles are the better pointers".
I made a Sokol + Hot Reload template
Speaking of Andre Weissflog. He's also the creator of Sokol. It is a library that, among other things, lets you talk to the GPU through an abstract interface. This means that you write the code once, but it will use Direct3D, OpenGL or Metal depending on the platform.
I'm well known for my Odin + Raylib hot reload template. But I also wanted hot reload capabilities when working with Sokol. So I created a template for that: https://github.com/karl-zylinski/odin-sokol-hot-reload-template
When comparing this template to my Raylib Hot reload template, you may note a major difference: This template has a build script written in Python. So instead of several batch / bash scripts, there is a single Python script for all platforms and build modes. There is a thing that tipped the scale towards writing a Python script for this template: I wanted to automate the download and build of the Sokol bindings and libraries.
I was also considering writing the script in Odin itself, but since Odin has no bundled HTTP client yet, I decide to go with Python.
Here's a technical overview and demo of the template:
I hosted the Odin 7 Day Jam
The game jam I hosted March 8 - 15 was a big success! In the end we had 62 games submitted. The winner was decided by the participants voting. The result is here: https://itch.io/jam/odin-7-day-jam/results
Let's talk about four of the games!
The winner was "Pass Whales", a very nice and cozy little puzzle game: https://gordonshamway23.itch.io/pass-whales
The second place was "Voidcrawl", which is a 3D dungeon crawler with an amazing atmosphere! https://lucypero.itch.io/voidcrawl
Third place was "Slice Slash", which was a cleverly designed puzzle game: https://tacohej.itch.io/slimeslash
Those three games are playable in the browser.
But I also want to mention another game: Barry's Revenge! It's a Hotline Miami-meets-"western movie" game. It's absolutely spectacular. It has nice graphics, tight and challenging gameplay and even voice acting. I was floored that it was made in 7 days! It didn't make the top 10 because it does not have a web build, so it didn't get enough votes. But I encourage you to check it out here: https://blunderguru.itch.io/barrys-revenge
All-in-all, a huge thanks to everyone who participated! You're all an amazingly creative bunch.
My future
Personally, I had a bit of trouble making a game during the game jam. I think the pressure of hosting and being creative got to me. I might host jams in the future, but in that case I'd probably have a more “tutor role”: Answer questions on stream, show how to do specific game development things, hang out in Discord voice chat rooms and help people with their problems, etc! I'm actually quite excited about that idea; I really like teaching and helping.
But also, I've realized something else about my game making: I've tried to make another game for about a year and it hasn't gone that well. I ended up making a book instead, which was great fun. But the idea that I "should" make another game has been looming.
After the jam I came to a realization: I made CAT & ONION as a solo developer. It a great experience and I learned a lot! But I actually don't think I should make games alone, I should have at least one more person to work with. The most important aspect for me is to have someone who is deeply involved in the game. That way we can collaborate on the game design.
So I won't try to make another game alone unless some magical inspiration comes around. But I might do it in a group. We'll see!
Other than that I'm excited to continue making educational content such as videos and blog posts as well as open source libraries and host game jams.
Support me
If you like the videos, blog posts and libraries that I make, then you can support me by:
Buying my book: https://odinbook.com
Becoming a patron: https://www.patreon.com/karl_zylinski
Sponsoring me on GitHub: https://github.com/sponsors/karl-zylinski
Saying something nice on my Discord server: https://discord.com/invite/4FsHgtBmFK
Thanks for reading!
/Karl Zylinski
March 29, 2025