Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report: Almost Done Upgrading to SDL3

Last time, I reported that I was still working on migrating my code to SDL3 for a Major Update(tm) for my strategic leaf-raking business simulation game, Toytles: Leaf Raking.

I continued the work this past week.

Sprint 2025-MJ_4: Preproduction

In progress:

  • Update SDL2 to SDL3

At some point, I finally fixed the last compile error, and I was able to run the game, and I was surprised at how well it Just Worked(tm).

Well, I found an issue with the mouse cursor not being where I expect it to be if I change the size of the window. I’ll figure this issue out later, but I suspect it has to do with the game being at a “logical” set of dimensions but scaling the rendering without scaling the mouse cursor’s position.

And I also don’t have text and audio.

Toytles: Leaf Raking - running but without text

Toytles: Leaf Raking - running but without text

I am using the library NFont, and it hasn’t been updated in years, which means it doesn’t have an SDL3 update yet.

So I commented the use of the library out of my code, which explains why there is no text rendering to the screen.

And the audio is missing because SDL_mixer is so different from before that I have to figure out how to change my code to use it.

Within a day, though, I got text back. Originally I thought I would just remove NFont and try to use SDL_ttf directly, but instead I did the work to migrate NFont to SDL3 myself.

Toytles: Leaf Raking with text again

I even submitted a pull request for my changes to NFont in case the library does get updated one day.

Which just leaves SDL_mixer updates. So far I am initializing it with MIX_Init() and creating a Mixer object, but I am also no longer initializing it the way I did before with a frequency, number of channels, and chunk size.

I know I need to load sound effects and music into SDL_Audio objects, and I know that to play them that they should be set to Tracks.

What was nice about SDL_mixer v2 was that if I wanted to play on an open channel and not care about the particular channel I played a sound on, I could just use a channel ID of -1. It is possible to play and SDL_Audio file once, and it will be assigned to an internal track, but it doesn’t let me set the audio to loop or do any other effects I might want, so the fire-and-forget option isn’t ideal.

So I’m trying to figure out if there is a mechanism to do something similar with SDL_mixer v3, or if there is a better approach to playing sounds on tracks.

But I expect I’ll have sound effects implemented soon, and then I just have to fix a few issues like that mouse cursor issue I mentioned above, and then I’ll have Toytles: Leaf Raking running with SDL3.

And then the real update work can start.

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!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report: (Still) Upgrading to SDL3

In my last update, I said I was working on migrating my code from libSDL2 to libSDL3 for a Major Update(tm) for my strategic leaf-raking business simulation game, Toytles: Leaf Raking.

I continued the work this past week.

Sprint 2025-MJ_3: Preproduction

In progress:

  • Update SDL2 to SDL3

Toytles: Leaf Raking

I’ve modified almost 2,000 lines of build scripts and code so far. Most of them are renames of existing functions that didn’t change much, but some of them involved a bit more work.

For example, SDL_mixer is completely different, which means that my code now needs to be changed to create a mixer, then create tracks. Before I just had channels to worry about.

It looks like instead of getting one music track and a bunch of sound effects the way SDL_mixer provided before, I can mix and match multiple music and sound effects in a more unified way. So it will be nice when it all comes together.

Porting can be tedious, but it has been helpful to go through it step by step and see how this migration will directly impact things.

And there is a light at the end of the tunnel as the list of compiler errors is now fitting on a single screen.

So I’m almost done, but I’m not done yet, and these are the days when I wish I was able to dedicate full-time effort to the work.

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!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report: Upgrading to SDL3

Last time, I reported that I had started working on my first sprint for a Major Update(tm) for my strategic leaf-raking business simulation game, Toytles: Leaf Raking.

This past week I started the work of migrating my code from libSDL2 to libSDL3.

Sprint 2025-MJ_2: Preproduction

In progress:

  • Update SDL2 to SDL3

Toytles: Leaf Raking

Technically, this work started in the previous sprint, but it was a very short sprint that started near the end of the week.

Also, this is a somewhat technical update.

Years ago, I wrote an abstraction over my usage of SDL2. SDL3 is a major change from SDL2, but I anticipated that the impact should be isolated to a few files that directly reference SDL2.

Even so, I’m finding that while many variables, constants, and functions are merely renamed, there are some areas in which SDL3 changed how it does things, or at least there is enough change that it requires me to spend time digging into it to determine if the changes are relevant to what I am trying to do.

For instance, the SDL2 to SDL3 Migration Guide mentions that “SDL_WINDOW_FULLSCREEN_DESKTOP has been removed” and that “Windows now have an explicit fullscreen mode that is set, using SDL_SetWindowFullscreenMode()” which makes it sound like I can’t do what I did in SDL2, which is use SDL_CreateWindow() for either fullscreen or resizable windows.

But when I looked into it, SDL_CreateWindow() still lets me pass in a SDL_WINDOW_FULLSCREEN flag. Creating a fullscreen window is still fine, but the way to set an existing window as fullscreen is different…something I never do in my code, so I don’t have to worry about handling this change in my own code.

It’s a little tedious, but the migration guide is very helpful, and the error codes are incredibly helpful:

include/SDL3/SDL_oldnames.h:1168:26: error: ‘SDL_RendererFlip_renamed_SDL_FlipMode’ does not name a type
 1168 | #define SDL_RendererFlip SDL_RendererFlip_renamed_SDL_FlipMode

That’s very thoughtful of the SDL3 developers!

And it also gives me an opportunity to look through some of my oldest parts of my code to see if there is anything I can also cleanup.

My hope is that I can get this migration work accomplished quickly early this week, and then I can make sure that the game still runs the same as before. Then I can start the work of updating the game itself.

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!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report: Logos and Infrastructure

In my last report, I was concerned about how much work I identified for a Major Update(tm) for my strategic leaf-raking business simulation game, Toytles: Leaf Raking.

Last week, I put together an initial roadmap and started work on the first sprint.

Sprint 2025-MJ_1: Preproduction

In progress:

  • Update SDL2 to SDL3

Early in the week, I started looking into fun fonts to use for a new logo for the game.

The current logo, if you can call it that, is pretty simple and uninteresting:

Toytles: Leaf Raking old simplistic logo

So early in the week I started looking into fun fonts to use for a new log for the game.

I found quite a few, fell in love with one, then had to abandon it when it turned out that the font in question required me to pay a license fee for use in a logo for a limited number of uses.

So I found a few others and found that I can love a different font. Here’s an initial stylized logo that I really like:

Toytles: Leaf Raking new logo prototype

I toyed a bit with the kerning and outline, and a colleague added some iconography that showed some potential. Basically, don’t expect it to be the finished logo.

At the same time, though, I got really excited about the project upon seeing it. I think in the future I will spend time making a nice logo early in development of any new projects.

Later in the week, I set to work to finally update libSDL2 to libSDL3. I anticipate it might be tedious work, but I hope it isn’t going to require major surgery on my game’s code.

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!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report: How Is this Backlog So Huge?

Last time, I reported that I was grappling with big questions regarding the scope of a Major Update(tm) for my strategic leaf-raking business simulation game, Toytles: Leaf Raking.

I started by putting together everything I currently would like to see in a Major Update(tm) and would worry about what to cut or streamline later.

For my last few projects, I have found that I tend to have close to 100 high-level tasks.

But those were new projects, built from scratch, and with my part-time efforts, they can take me sometimes a year to develop.

A Major Update(tm) to an existing game shouldn’t be so bad, right?

So why do I already have 70 tasks identified? It’s almost like I might as well create an entirely new project!

Many of these tasks are actually quite big, with some unknowns that I will need to identify and break out into their own tasks.

For instance, if I want to create a better looking town, it isn’t enough to just redraw the background, streets, and sidewalks. I would also need to redraw the houses in the neighborhood, including their yards, and the trees.

And of course the general store will need a facelift.

Store

And that’s just what I can think of offhand.

I’ve also been giving considerable thought to the general art direction as well as audio. I originally thought I would try to preserve the slapdash nature of the art while making it a bit more appealing, but now I am considering really focusing on the “toy” part of Toytles.

What if the game looked like it was a bunch of toys being played with by a kid with an active imagination? The houses would need to look like toy houses, with decals and painted blocks. The characters should look like action figures talking to each other with perhaps barks that sound like a kid is mimicking all of the voices.

Which of course might also impact the scope. But I’m taking my time with figuring this all out before I commit to development.

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!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report: Asking the Big Questions

First, don’t forget that I’m asking for fan submissions for Clown Alley Creator. Send me your clowns, and I might share them here and on social media! See details at that link.

In my previous report, I broke down some of the ideas I had for a Major Update(tm) for my strategic leaf-raking business simulation game, Toytles: Leaf Raking, into a few major categories.

Toytles: Leaf Raking

This past week I had other priorities for my time and energy, so I didn’t make much progress on fleshing out the plan, but I did find myself chatting with a few people about what I am trying to do.

And it got me thinking about all sorts of things, such as:

  • What is the exact impact that I hope to have with this Major Update(tm)?
  • How much time do I want to commit to it?
  • Should I look into contracting an artist, which will cost money but save time (hopefully)?
  • Does one big release make sense, or should I break it up into frequent, smaller releases?
  • Even with the new look and feel I hope to go for, how do I find customers who want to play it?

No matter how big of a Major Update(tm) I want to do, I am confident that I can create a solid game development project plan for it.

But how do I determine how big of a Major Update(tm) to do?

Because I also have to think about opportunity cost: time spent on trying to improve the appeal of Toytles: Leaf Raking is time not spent making a new game.

The faster I can make this update, the sooner I can put it out there and promote it.

But I don’t work on GBGames full-time (yet), so I know that there is only so fast I can go. It takes me months to do what a full-time game developer might do in days or weeks, which means that while I might want to only dedicate a month, realistically I might find that I would put hardly a dent in the update in that time.

In the end, I’m trying to determine how much I want to invest in this Major Update(tm). It’s hard for me to determine because I do not have a ton of market research and insight that justifies such an investment.

It is entirely possible that my strategy game about running a leaf-raking business aimed at pre-teens and teens won’t benefit significantly from significantly improved production values. I want to see what happens if it does, but I also recognize that I don’t want to spend years of effort on it.

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!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report: Getting Expansive with Ideas

Last time, I reported that I was starting to prepare for a Major Update(tm) for my strategic leaf-raking business simulation game Toytles: Leaf Raking‘s 10 year anniversary next year.

Toytles: Leaf Raking

This past week I spent time going through my old notes for the project, some of which date back to 2014.

I had some ideas that sounded good but got cut or changed as progress was made, and other ideas are…less good.

But I’m going through all of them to help me determine what I might want to put into this Major Update(tm).

I had a number of ideas that could be implemented relatively quickly, and other ideas that would require me to add entire features or systems.

At this point, I wanted to think about all the possibilities before limiting the scope by looking at the calendar, my capabilities, and reality.

But I’ve already started to categorize some ideas. Low-hanging Fruit are things like replacing background graphics, updating the font, using better sound effects, adding music, and updating the general user interface. These are things I can do without substantially changing the code or worrying about impacting the game play, but that I think will enhance things quite a bit.

Requires Some Effort to Enhance the Game are things that require me to add or modify code and art to support things that can’t be done yet. For instance, the game supports one save file, but there is no reason not to support multiple saves. There is no way to mute the audio, which makes sense since the game has no music yet, but I should allow the player to not only mute sound effects and music but also adjust their volumes. And I should create a proper ending, as right now the ending is quite anticlimactic.

And then there are Game Play Improvements, which not only require updates to the game but some hard design work to make sure that things are improved and not broken accidentally. I’ve mentioned this before, but I think the main game play of potentially getting interrupted by rain while raking leaves and needing to wait it out can be quite clunky. There are also awkward edge cases that result in what might be seen as unfair situations, such as finishing a yard at midnight and not getting paid because technically midnight is when leaves get added for the next day.

The first two are mostly technical in nature, as in I am doing art swaps or adding features with known constraints and parameters. The third is likely to be the most challenging because there is a risk of potentially unbalancing things and anticipating that I might need to do more work to rebalance the design.

I also have plans to update the app icon:

Toytles: Leaf Raking - app icon

Seriously, it could be a LOT better.

And I want to create a proper trailer and even add translations.

If you’ve played Toytles: Leaf Raking, I’d love to hear from you. What did you love about it, and what do you wish you could do in it?

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!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report: Preparing for a Major Update

I recently released a few minor updates for my games on both Google Play and the App Store. As far as I know, any current requirements are met, and I have time before I need to worry about the next required update.

So I started turning my attention to planning a Major Update ™ for Toytles: Leaf Raking, my leaf-raking business simulation game that was originally released in 2016. I want to release that Major Update for its 10 year anniversary next year!

Toytles: Leaf Raking

So, what is going to be in this update? I’m still figuring it out, but the main pillars of the update will be improving the game play and enhancing the visuals and audio.

I still think Toytles: Leaf Raking is a good game, but there is a lot of room for improvement.

The gist of the game is that you are balancing a number of resources: time, energy, money, yard bags, the durability of your rakes, and your responsibilities to your clients. The weather plays a factor as well, as the wind on a given day will determine how many leaves you might need to rake to earn money, but any precipitation will slow you down as you can’t rake while it is actively raining.

But in practice, it is kind of clunky. If it is drizzling out, you’re supposed to wait 10 minutes and see if it stops. If the drizzle continues, you can’t rake leaves. So wait some more. And if you do get a dry spot, you might find that you need to stop raking if it is drizzling again. While drizzle operates in 10 minute increments, actual rain is an hourly event, so waiting 10 minutes doesn’t make sense unless it is to get to the top of the next hour.

And heavy rain is an all day event, which is likely combined with heavier leaf fall that you can’t actively manage until potentially the next day. Other than getting to rest earlier or meet new clients and shop for supplies, such days don’t let you do much, which isn’t exactly fun.

Later on, I wanted to retroactively make the game feel more alive, so I tried to give the neighbors personalities. Today, if you speak to them, they say different things throughout the season, but it was still quite limited, and in terms of your goal of earning enough money to purchase the Ultimate Item(tm), such dialogue wasn’t relevant.

I also recall that when I was making it that I purposefully made the graphics quickly. That is, I am no artist, and you wouldn’t mistake me for one when you look at this game. I found that I would spend way too long trying to make my art look less bad, and it was still bad, so I tried to avoid wasting time on improving the art and instead focused on making the game.

For example, here is a kitchen scene featuring your parents who give you advice and tips:

Toytles: Leaf Raking - the kitchen scene

I want to say that the background was a 2nd pass effort, but I also remember putting blobs of color on their plates without really having any idea what they might be eating.

In a way, the art has its charm (I hope?), and I want to try to keep it, but I also recognize that there isn’t a lot of consistency and it could be greatly improved. The HUD, menu buttons, and menu frames all look pretty basic and terrible.

The game doesn’t look too great in motion, which means it isn’t fun to watch someone else play and it is probably hard to follow what is happening. I added transitions between screens for one of the updates, which helped to make the game feel more user-friendly and intuitive, but most menus do not have it, so it is still quite jarring at times.

Music doesn’t exist, and the sound effects are very simple and minimal. There is a lot of room for improvement here.

I expect that the art and audio will be the easiest to improve, although it will still be a lot of work to add animations and effects.

But the hardest work will be improving the game play. I want to keep the core strategic focus on balancing resources, but I am considering a complete overhaul of the mechanics to make it more intuitive and more playful. I expect that I’ll be doing quite a bit of prototyping.

I am still figuring out just how much scope is going to be in this Major Update(tm). Maybe this should be a proper sequel? For those of you who have played Toytles: Leaf Raking, I will definitely be looking to hear from you about what you love and what you wish was better. 10 years is a long time, and I really want 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!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report: More Google Play Updates

Last time, I reported that I was creating Google Play updates for all of my games to support 16KB memory pages.

I published those changes last week, so now you can play Toytles: Leaf Raking, Toy Factory Fixer, and Clown Alley Creator on your newer Android devices.

And if you’ve tried out Clown Alley Creator, send me your clowns! I shared my first fan submission last week, and I can share yours next! Learn how at this page, and I look forward to seeing what you come up with!

And don’t forget you can play all of my games on iOS, Windows, Mac, and Linux as well!

Meanwhile, I have started working on a major update for Toytles: Leaf Raking, which will be 10 years old next year. As I said before, I want to update the visuals and streamline the interface to celebrate, and I hope you look forward to it as well.

On a side note, I also did some decluttering of my office to make some of my game design prototyping tools more accessible for me to quickly pick up and use. I’ve been getting some ideas for new game concepts that are starting to excite me. Stay tuned!

Speaking of staying tuned…

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!

Categories
Games

Meet Klwnie the Clown (Fan Submission)

Earlier this week, I asked for fan submissions for Clown Alley Creator, Clown Alley Creator, a creativity tool about creating your own fun clowns.

The first submission comes from Andrew P.

Meet Klwnie the Clown!

Clown Alley Creator - Klwnie the Clown, submitted by Andrew P

Thank you, Andrew P! I love the combination of colors and the make-up!

Now, it’s your turn! Learn how to submit your own clown creations at this page, and I look forward to seeing what you come up with!