In my last report from mid-December I was still in the middle of migrating my code from SDL2 to SDL3 in preparation for a Major Update(tm) for my strategic leaf-raking business simulation game, Toytles: Leaf Raking.
I spent the beginning of January reviewing 2025 and planning 2026, but this past week I finally got back to game development and finished the migration work.
Sprint 2026-MJ_1: Preproduction
Completed
- Update SDL2 to SDL3
If you’ve been following along and are interested in the technical details, most of the upgrade was pretty straightforward and easy, especially since the SDL3 migration guide was fairly detailed and a lot of the changes were renames or small interface changes.
But I was struggling with migrating to libSDL3_mixer, which has completely changed, which meant my code also needed to change how it handled audio significantly.
Before, I just played sound effects at a certain volume on whatever free audio channel was available.
Now, SDL_mixer has tracks and mixers, and so now I needed to manage those as well as the sound effects.
Toytles: Leaf Raking doesn’t have music (yet!), which means I could worry about supporting audio looping later.
Once the SDL_mixer migration work was done, I then solved a problem involving mouse input and rendering scaling.
Basically, if you resize the window, such as maximizing it to be fullscreen, the game renders the screen to that new window as best it can. However, I found that the mouse cursor was still only getting recognized in the dimensions of the original window.
That is, if I was running the game at 1280×720, and I change the window to run on my 4k monitor at fullscreen, the mouse cursor and mouse button clicks were still acting like the game was still 1280×720. That is, only the top left of the window.
It turned out to be an easy fix. SDL3 has a function called SDL_ConvertEventToRenderCoordinates which takes an event, such as SDL_MouseMotionEvent, and converts the coordinates based on the current renderer. Well, actually, the docs show it takes in a lot of different things, but the point is that when I use this function, the input works as expected no matter what the window size and logical rendering settings are like.
Now I’m just checking to make sure the game works from beginning to end and on all platforms without any issues before producing a new release.
Oh, I also updated the copyright year, which reads “2016-2026” now. That’s right, this year marks the 10 year anniversary of Toytles: Leaf Raking‘s initial release! That’s why I am very interested in creating a Major Update(tm) to celebrate.
Thanks for reading, and stay curious!
—
Want to learn about future Freshly Squeezed games I am creating? Sign up for the GBGames Curiosities newsletter, and download the full color Player’s Guides to my existing and future games for free!

