Categories
Game Development Marketing/Business Personal Development Politics/Government

2024 Wasn’t Great, but Perhaps 2025 Can Be Better?

I’ve taken some time at the end of December to look back on the previous year and think about what I want for the coming year.

In 2024, I wanted to build upon the success of 2023, a year that saw me hitting a sales goal for the first time.

One sale per month is barely pizza money, but it is a start, especially since I had never earned that many sales before in the years I’ve been trying to run my indie game development business.

However, I decided that metrics like the number of sales isn’t really an actionable goal. It is more of a lagging metric.

So for 2024, I have the following outcomes I am aiming for:

Increase my newsletter audience from 30 to at least 42 subscribers by December 31st
Earn at least 2 sales per month by December 31st

As for actionable goals:

Release at least 2 Freshly Squeezed Entertainment games by December 31st
Perform at least 2 SEO activities per month by December 31st

My thoughts were that if I make and publish games AND do things to make my website more effective and easier for people to find what they want, then I can increase my audience and my sales.

So, how did I do?

My Goals

Published Freshly Squeezed Entertainment Games (Target: 2) — 0

Two games a year for someone to work on alone very, very part-time is technically doable, but I haven’t been able to do it yet.

In fact, I didn’t do it last year, either:

That’s two years in a row in which I did not publish a new game.

Much of my current business strategy depends on releasing games in my Freshly Squeezed Entertainment line, which are polished, playable prototypes that provide complete entertainment experiences and are given away for free. The general idea is that the games are supposed to be quick to develop and have a low barrier to entry so that they are more likely to find an audience. I hope to get feedback from that audience, and if enough interest exists, I can always create a “deluxe” version of the game that I can sell.

So not releasing a game isn’t great, because there cannot be an audience for a game that doesn’t exist.

At the end of 2023, I had put in a year of game development effort into a family-friendly, non-violent party-based role-playing game called The Dungeon Under My House, and it wasn’t anywhere near done yet. I didn’t have any reason to be optimistic that I could complete it within six months of 2024, but I moved forward as if I could.

About 20 months into the six month project, I decided to put it on hold. I finally sat down and scoped out what I thought the rest of the project looked like, and an optimistic estimate said I still had at least another year of development. Oof.

So I made the hard decision to put the project on hold. I published a post-mortem for The Dungeon Under My House, and I hope one day to publish a second one after I return to the project and truly finish it.

For now, I started work on a project with a much smaller scope. I normally try not to plan everything upfront and instead let the project build up in iterations.

This approach works fine. I’ve built and published games this way. But it clashed with my goal of releasing games quickly. I had to recognize that there was a difference between publishing a game eventually and publishing a game on a more or less predictable schedule, and that only the latter was going to help me satisfy my business goals.

Thanks to some advice I got from Dora Breckinridge (you should hire Dora, by the way), I decided to try to truly capture as much of the scope of my new project as I could, plan on working on features and technical infrastructure for only part of the project’s schedule, and leave the lion’s share of the schedule for leveraging what I had built to fill in the content of the game.

As of this writing, I am finishing up the first phase of work, and thanks to a realization I had about how to arrange the work in a more Agile way, I am incredibly confident that I will ship this project in six months easily, mainly because the project will always be in a shippable state long before then.

Basically, I went from a project with no end in sight to a project that could potentially be done early if I really want it to be.

However, it won’t be released in 2024. I can’t work miracles.

Perform at least 2 SEO activities per month by December 31st (Target: 24) – 2

Ok, so I abandoned this one fairly quickly. SEO felt like a solution that might not make sense in a world where search engines are getting less useful and almost actively hostile towards websites that aren’t in the top results, plus a world where genAI is allowing people to churn out garbage so cheaply that the search results are polluted anyway.

Also, my website barely gets any traffic. Not like it used to when I had more time to blog more frequently about a variety of topics, anyway. Much of that existing traffic is from game developers interested in my blog posts about project management and copyright for indies, and so not necessarily people who would be in the target audience for my games.

But just having this goal, even if I did give up on it, did get me to make some important changes.

I felt like I didn’t have a good baseline to know if my SEO was actually doing anything positive. I didn’t want to make a bunch of changes without any concern about how effective they were. A change could produce a negative outcome, and I would want to revert that change right away. But how would I know?

So I started creating automated metrics reports from my website, plus I started grabbing page visit and download data from the various app stores my games are in and throwing them in a combined spreadsheet. It’s a bit more manual of an effort, but it is worth it to know this data, and I can probably figure out how to automate some of it.

These metrics came in handy when I decided to experiment with ads for part of the year, giving me a good insight into whether or not a particular ad was moving the needle for my games in any particular app store.

I think I might revisit this goal for 2025, not because I want to improve my search engine rankings but because there are things I could do to make my website look and feel better to people who actually visit it. If I optimize the site for real people and their goals as opposed to trying to appease some search engine algorithm, I think things will work out better for everyone.

My Outcomes

GBGames Curiosities Newsletter subscribers net increase (Target: 12) — net 4

My current business strategy has my GBGames Curiosities Newsletter at its core. I want to cultivate an audience of people who specifically said that they wanted to hear from me and are fans of the kinds of games I make.

I don’t have many subscribers yet, and this is the second year in a row in which I was aiming for a net increase of one subscriber per month and didn’t make it.

Unfortunately, I didn’t do anything specifically to try to grow the list, so any efforts to do so were one-offs and not consistent at all. Still, I gained 4 subscribers and lost 0, which is a positive trajectory.

Clearly if I want this number to be higher, something needs to change in terms of my approach.

Earn at least 2 sales per month by December 31st (Target: 24) – 16

Last year I sold 13 copies of my games, beating my 1 sale per month goal by one. I was sure that doubling the goal was both ambitious and doable, especially if I kept up my promotion efforts.

Unfortunately I did not, as I spent much of my capacity trying to make progress on game development.

Now you might think that at least 16 sales is more than 13 sales. And it is true.

But the reason most of those sales appeared is because I spent money on Facebook ads, and unfortunately I spent more on ads than I earned in sales income.

On top of that, this is the first year I have put my game Toytles: Leaf Raking on sale. I was experimenting with the price to see if it might encourage more purchases at a lower price point, or if the act of being on sale made it show up more easily in various app stores. In the end, I think it just served to earn me less money for each sale.

To compare, in 2023 I sold 13 copies of my games and made a total of $103, much of it because of people contributing more than the minimum amount on itch.io. Despite selling 16 copies of my games in 2024, I only made $76 from those sales, and 0 came from itch.io.

Analysis

I sold more copies of my games but made less money, as I said above.

I didn’t take advantage of itch.io sales as much as I maybe should have. I think I was disappointed in the amount of work I put into some sales at the end of the previous year that resulted in nothing, and I am also wondering why I don’t always get advance notice from itch.io about joining an upcoming sale so I can prepare.

But frankly, most of my effort went into game development and not promotion, and so it is no wonder I didn’t see more success in terms of sales.

Last year, I said that my megaphone is tiny, and it still is.

My website has very little organic traffic, and my social media accounts all have limited ability to get awareness out.

I said then:

Basically, the more I rely on social media to promote my game, the more effort and/or money I need to expend for at best a temporary boost in potential traffic.

Focusing on social media isn’t sustainable, and it is partly why I wanted to focus on SEO. However, I worry that the days of useful search engines and a useful Internet in general are behind us.

So should I focus on advertising some more? Maybe. In my experiments this year, I basically proved to myself that if I could get my game in front of the right people that some of those people do, in fact, purchase the game.

That’s good!

But ads are too expensive to run for one-time sales, and I don’t have enough of a backlog of games to cross-sell and make it worth it.

However, if I focused on promoting my mailing list rather than any one particular game, then perhaps the calculus changes significantly. One purchase of a game today doesn’t necessarily mean more purchases in the future, but one mailing list signup today means being able to promote my games indefinitely.

On the other hand, it is entirely possible that people are finding that their inboxes are getting more and more useless the same way that search engines and the Internet as a whole are getting worse. Maybe all the data about how mailing lists are still very effective isn’t accurate anymore?

Or maybe they are, but most game developers are so tied to the app stores and Steam that they don’t find mailing lists useful for THEIR business models.

And I think my target audience doesn’t necessarily even know what Steam is, let alone uses it for finding and playing games.

Relying on Apple and Google to sell my games is therefore a bit risky because I have no way to contact the players who play my games unless they specifically sign up for my mailing list.

Some numbers

I did a total of 359 hours of game development for the year.

For comparison, a full-time game developer working 40-hour weeks would have accomplished that number in a little over 2 months.

I did 62 hours of writing and published 59 blog posts and 12 newsletters.

I did 23.75 hours of video development and published 12 videos.

The above mostly represents a weekly development log, plus the occasional video update, as well as some one-off blog posts and sale announcements.

I originally continued the weekly devlog videos, but the amount of work that went into each video took away from development work. After a couple of months of this pace, I decided to release videos once a month or so. It meant more details in each video, making them more compelling for viewers, plus an easier work schedule for me.

I wanted to focus on my health. In 2022 I had horrible back pain due to an unknown reason, and I think my regular morning exercises are keeping me strong enough to keep it at bay, but I felt like missing a day of exercises was enough to make day to day living feel risky.

So I started doing more exercises meant to help build up strength and stability. I used to do yoga, but I think I was doing something to cause problems. Instead, I started doing weight/resistance exercises.

Unfortunately, I couldn’t keep things up. My knees were hurting until I stopped doing squats only a couple of months after I started doing them, which is too bad because they were supposed to be a great all-around exercise. I did 780 squats total.

Also, my wrists were bothering me from doing push-ups. I stopped doing them in May, so I ended the year with only 1,230 push-ups.

The good news is that I added regular walking, slowly building up from 10 minutes a day to 25 minutes a day and from 2 mph to now warming up at 2.4 mph and increasing to 3.2 mph before cooling down at 2.4 mph again. I have done about 50 hours of walking for the year.

As for losing weight, I didn’t want to count calories or anything too onerous, so I simply cut snacks. I now eat three meals a day and if I have a snack it is once in awhile. I probably still have dessert too often. But I ended the year down a few pounds, despite heading into the holidays to potentially gain them all back.

I read a total of 60 books, of which 26 were audiobooks. Some favorites include:

  • Creativity Inc by Ed Catmull and Amy Wallace
  • The Impact of Iwata by Lucas M. Thomas
  • Secret Iowa by Megan Bannister
  • Black AF History by Michael Harriot
  • What I Talk About When I Talk About Running by Haruki Murakami
  • One Day in the Life of Ivan Denisovich by Alexander Solzhenitsyn (first time reading it since it was assigned reading in high school)
  • Useful Delusions by Shankar Vedantam
  • Killing Commandatore by Haruki Murakami
  • Hunter by Val Gale
  • Natural Beauty by Ling Ling Huang
  • Procedural Generation in Game Design by Tanya X. Short and Tarn Adams
  • Tomorrow and Tomorrow and Tomorrow by Gabrielle Zevin
  • LAN Party by Merritt K
  • Braiding Sweetgrass by Robin Wall Kimmerer
  • Zero by Charles Seife
  • Finna by Nino Cipri
  • This Is What It Sounds Like by Susan Rogers and Ogi Ogas
  • To Sleep in a Sea of Stars by Christopher Paolini
  • Mindful Games by Susan Kaiser Greenland

I was playing Minecraft heavily in the beginning of the year. I played in Hardcore mode, but each time I died, I would create a new world with the same seed and play again. It was like Groundhog Day in that I can’t keep anything I made except the memory of where resources and landmarks were located, and I found it quite compelling.

But otherwise I wasn’t playing games regularly. Steam says I only played 3 games, but most of the games I do play tend to be through GOG or Humble or itch so that’s not representative.

I found out that Flatspace, a game I reviewed a long time ago for GameTunnel.com, is available on Steam, so I played that game quite a bit. I played a little Tooth and Tail as well as Gods Will Be Watching. None are recent games.

More recent games included Once Upon a Jester, which I really enjoyed.

But the game I probably played even more was Kitsune Tails, a fun Super Mario Bros 3-inspired platformer, which did release in 2024, so I’m still hip and with it.

Goals for 2025

Once again, my goals will focus on game development efforts and promotion efforts.

I ended the year feeling very positive about being able to ship my next game in a few months, and I think it has given me confidence that I can repeat this feat.

But I also want to revisit Toytles: Leaf Raking, partly to improve it, which I know will take up some time. While I’m proud of the game and think it is still a good one, I can tell that it is rough around the edges and might not appeal to more people because of it, especially from screenshots.

So two actionable goals are:

  • Publish at least 1 free game by June 30th
  • Publish major Toytles:Leaf Raking quality improvement update (including demo) by December 31st

I think I’ll easily accomplish the first one early. I already have almost two of months of effort in, so I should be able to finish this six month project by the end of April. Still, I’m one person and very, very part-time at that. I could get sick, my day job could take up more of my time, or there might be family emergencies. So between April and June, expect my next Freshly Squeezed Entertainment game.

Meanwhile, I clearly need to do something more proactive and consistent in terms of getting my games in front of people.

I don’t know if I can capture it in a goal by quantifying specific activities such as SEO or ad campaigns, though.

In fact, those are tactics, and while they might be useful and important, I find that I struggle because I don’t have an overarching strategy for them to fit into. I’ve put the cart before the horse.

There are some fundamentals to marketing and selling a particular game, but I also want to promote GBGames as a whole.

Specifically, I want more people to think of GBGames when they think of compelling entertainment that encourages curiosity and supports creativity. I want people to think of GBGames when they think about family-friendly, LGBTQ+-affirming entertainment. I want people to think of GBGames when they want to play games that respect their time and their privacy.

And I’m still figuring out the how for making it happen.

Happy New Year!

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: Clown Make-up

Last time, I reported that I had implemented clown noses and hair and was starting to work on the more complex layered make-up menus for my second Freshly Squeezed Entertainment project called Clown Alley Creator, a creativity tool about creating your own fun clowns.

I made great progress on it and think I’ve had a surprisingly productive December so far.

Sprint 2024-7: Clown Faces

Completed:

  • Create make-up option and submenu
  • Create clown preview make-up cut-outs

Much of this week’s efforts felt like a bit of a struggle, and I’m not sure if it is because I felt like I couldn’t focus on the work or if it was just because it was complicated.

Picking a clown’s nose is just choosing from a set of options, but I had envisioned the make-up menu to be made up of multiple layers.

That is, you don’t just pick a single make-up option. You can layer make-up on top of make-up, allowing you to mix and match options to create a clown face the way you want it.

Clown Alley Creator - make-up submenu with layers

As you can see, there are potentially four different layers of clown make-up available. I created some sample options that include the mouth as a smile or as a frown, a teardrop on either side of the face, and buckteeth.

Here you can see a clown face with a frown and a left teardrop.

Clown Alley Creator - make-up submenu with two layers of menus

To finish up this work, I want to show the icon in the box corresponding to the layer it applies to, number the layers to make it clear which order they go in (I think bottom to top is intuitive, especially for people who use art programs like Gimp or Photoshop), and finally choosing colors.

Right now, make-up is defaulted to a blue color just so I can see it differentiated from the hair and the nose, but I want to allow the player to choose primary and secondary colors for each option. What this means is that the various sprites for the clown face will need to be split into primary and secondary versions. In the case of hair, maybe it look like streaks of color, and in the case of make-up, perhaps outlines around the mouth and teardrops and such.

With Christmas coming so soon, I doubt I’ll be as productive as I’ll be spending more time at family and social events, plus I’ll want to spend time creating my annual year in review blog post. Still, I feel like I’m ending this year having made some great progress on this new project.

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
Games

Three Tips to Save Your Christmas Morning

This is a magical time of year, and if you got your loved ones a phone, a tablet, or a video game console, I hope I caught you before you wrapped it and placed it under the tree because there are three things you are going to want to do to save your Christmas morning.

First, make sure the device is charged!

Imagine it is Christmas morning and you get a Nintendo Switch and thinking you are going to play some fun games only to discover that you get to plug it in and charge it for hours.

That’s no fun. Charge the devices beforehand!

Second, and this is even more important to do before Christmas morning, is to make sure you’ve updated any operating system, firmware, or software updates before Christmas Day.

You might think that it shouldn’t be a problem to wait, that these updates sometimes only take minutes, right?

Wrong!

It’s Christmas morning! EVERYONE is trying to update their brand new devices! All at once!

The Internet pipes will be clogged, servers will be overloaded, and you’ll wish you had thought to update these devices beforehand.

Third, and this goes hand in hand with the previous tip, is to find some quality software to put onto the device now.

Generally these devices aren’t enjoyable by themselves. It’s the apps and software that makes them fun, so it makes sense to find some to pre-install before there is a rush to the app stores, right?

Again, no one wants to sit there with their cool new game console or phone and find out that they can’t download anything because everyone is using up all the Internet!

You’ll want your loved ones playing happily with their new devices instead of feeling frustrated, right?

So get some apps now! May I suggest my game Toy Factory Fixer? It’s fun for the whole family, it doesn’t feature any ads, it doesn’t do any data tracking or other invasions of privacy, and it is free.

Toy Factory Fixer

I hope these three tips got to you in time and that your Christmas morning will be full of curiosity and wonder and not frustration and disappointment.

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report: Giving Clowns Hairstyle Options

In my previous report, I got the spine finished for my second Freshly Squeezed Entertainment project called Clown Alley Creator, a creativity tool about creating your own fun clowns.

I continued to build upon the work, focused on finishing the Gallery view and adding hair in the Creator mode.

Sprint 2024-6: Clown Faces

Completed:

  • Paginate gallery view
  • Create Clown Specific View
  • Delete clown
  • Create Hair & Make-up menu
  • Create hair option and submenu
  • Create clown preview hair cut-outs
  • Create Clown Specific View

As I said last time, I pretty much have everything in place that the player might do.

And yet, there is always something to enhance or improve.

For instance, the Gallery View allowed you to see 12 clowns at a time…but only the first 12 clowns.

So I added pagination in order to see more of them.

Clown Alley Creator - gallery view pagination

You may also notice that I added eyes to the clown faces. It was getting weird not having eyes, and while eventually I’ll let the player select eye options as well, for now it looks less strange.

Since you can add new clowns, you should be able to edit and remove clowns, so I added a close-up clown view with those options.

Clown Alley Creator - close-up clown view

Eventually you will be able to name your clowns and see that name instead of something like “Clown 6” in the title bar.

Editing just opens up the clown creator mode with the existing clown’s settings instead of a completely new clown. I’m very happy with how easy it was to do. In fact, I feel like this project has been surprisingly smooth sailing in terms of writing just enough code to not be wasting time while also writing good code that is easy to expand and extend.

Anyway, finally I added the hair menu. I had some concerns about how to actually implement hair. Clown hair/wigs can be quite wacky, extending quite a ways from the clown’s head, and I wasn’t sure how to approach it. Do I create separate sprites for the top and sides?

For now, I’ve created larger sprites. Basically, the head shape is one size, and the hair sprite is much larger, which allows for the hair to be fairly big if it has to be while also covering any part of the head that needs to be covered. Here are my mock-ups:

Clown Alley Creator - hair mock-ups

Clown Alley Creator - hair mock-ups

Clown Alley Creator - hair mock-ups

And here they are in the Gallery view:

Clown Alley Creator - clowns with different hairstyles in the Gallery

I ended the week getting started on the make-up menu, but I was also trying to figure out how to allow the player to customize colors for various options.

Clown Alley Creator - Hair & Make-up menu with Hair, Nose, and Make-up buttons

Clown Alley Creator - mock-up of color picker

Clown noses should not just come in red, and I think being able to choose primary and secondary colors for hair would be great, too.

But I feel like choosing colors is getting ahead of myself, so that’s on hold for the moment.

The biggest thing I’m trying to figure out is how to implement make-up. I’ve already decided to allow the player to do so in layers, which means making it clear which layer they are working on as well as the ordering of those layers. I mocked up this tabbed view, with the idea that you are currently selecting options for a given layer, and I think it should be intuitive that the layers are applied in order from top to bottom.

Clown Alley Creator - make-up menu mock-up with tabs

I need to do more work on this menu’s design. I expect it would be nice to move layers up and down, which means I need space for buttons to allow for it. I like buttons because expecting the player to know something like drag & drop is an option is harder to communicate, and I think too many modern UI elements are inexplicably hidden from the player, presumably to keep the interface looking cleaner or something.

It’s been a joy to see this project get more and more finished while at the same time feeling like it is always in a good state to be considered done. Last week you could customize noses for your clowns, and this week you can pick clown noses and hairstyles. Assuming I have time to work on the project as we head into the deepest parts of the holiday season, I expect to make it possible to choose make-up options in layers after this coming week, and after that point I’ll introduce color options. Each week, I’ve managed to make the game richer and fuller.

Of course, there is a difference between something being “technically” releasable and something being “marketable.” It is not unusual for projects to struggle with or even ignore being able to create a release until the very end of the schedule, so I feel really great about the way this project has been going.

I anticipated that December would be a slow month for me so part of my schedule assumes I’ll be working on these mock-ups and figuring out flows into January. Even so, I’m impressed with what I’ve put together in just the last couple of weeks. Soon after I’ll switch my focus to creating lots of options for each submenu, allowing a player to create potentially thousands of unique clowns using the existing menus. Then I’ll be polishing things up, testing things, and getting it ready for an official release.

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: The Spine of the Game Is Done

Last time, I reported that I was focusing on getting a thin slice of work to create, load, and view the clown faces in my second Freshly Squeezed Entertainment project called Clown Alley Creator, a creativity tool about creating your own fun clowns.

I focused on creating the infrastructure to support this work.

Sprint 2024-5: Clown Faces

Completed:

  • Create nose option and submenu
  • Create Finish modal
  • Update Gallery View to show all loaded clowns
  • Create clown preview nose cut-outs

I had a fairly productive week, and I am very, very pleased to say that I finished making the game already.

Or at least the spine of the game.

What I mean is that the work I did this week cut across almost all aspects of the project.

As of today, you can start creating a new clown, choose from among a few customization options, then save the clown with those options, then view your creations in the clown alley gallery.

That’s pretty much the scope of this project. Anything else after is content and polish, with perhaps some extra features if I decide I have time for it.

Here’s a video that shows pretty much everything you can do in this game so far:

Now, you might think, “That’s it? You can’t say you are finished making the game yet!”

And you’d be right in that all you can do at the moment is pick from among four nose options. Clowns are more than red noses, obviously. While I could technically publish this, it would definitely feel unfinished and wrong to do so.

Clown Alley Creator - picking a nose

Clown Alley Creator - saving the clown

Clown Alley Creator - clown face gallery

But what else do I have to do? Adding more nose options is just adding more options to the existing menu. Adding color variations is just a different menu and a different variable to save and load. Creating better art is just replacing the existing art. And everything else from hair styles, skin colors, and make-up options are just variations of the same kind of work I’ve already solved.

Basically, instead of adding features and hoping it all comes together in the end like in many projects, I’m in a position of confidence that this project is always shippable from here on out. It just becomes a matter of how much I want to keep investing in it before I actually publish the game.

Now I still anticipate some challenges. Choosing mutually exclusive options such as clown noses is different from picking options that can layer on top of each other such as clown make-up. My code easily handles the former but would need to be changed to accommodate the latter. And I haven’t even touched on the UI problem of communicating to the player that these interfaces would behave differently.

But it is still early in the project’s schedule, and I have time to solve these problems.

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: Plans to Create Clown Faces

In my last report, I finished creating navigation menus, only to rethink the prioritization of my project’s tasks for my second Freshly Squeezed Entertainment project called Clown Alley Creator, a creativity tool about creating your own fun clowns.

I started this week by focusing on how to work on things differently to make it more likely that I can ship something in the six months I originally wanted to.

Sprint 2024-4: Clown Faces

Planned and incomplete:

  • Create Hair & Make-up menu
  • Create hair option and submenu
  • Create make-up option and submenu
  • Create nose option and submenu
  • Create Finish modal
  • Update Gallery View to show all loaded clowns
  • Create clown preview nose cut-outs

I did some rearranging of my backlog and created a subset of tasks much like how I described in my last report. I didn’t expect to actually get all of these things done in a single week, especially not in a week with a major family holiday such as Thanksgiving, but I did like that this list captures what needs to be in place for the spine of the project to be in place, something I can build upon.

Unfortunately, I decided to keep my high level features/tasks as-is rather than rewrite them to more accurately reflect what I was done. It’s not an issue to work within, but it is harder to report here because it looks like I got nothing done.

In reality, what I actively worked on and finished looked more like:

  • Create Hair & Make-up menu with only the Nose option
  • Create Nose submenu

My thinking was that while the entire subset above makes for a good spine, I can get there pretty quickly if I focus on the simplest thing. Rather than provide a bunch of hairstyles or make-up options, I could create a couple of noses.

So my big goal is to make it possible for the player to choose a custom nose from among at least two options, see that nose in the clown preview while doing so, save the clown with the chosen nose, and then see that clown in the gallery: a thin slice/spine for a game about creating clowns!

I imagine if I hadn’t traveled to see family and instead had a normal amount of productivity last week, I would have some better screenshots for you today.

Clown Alley Creator - Hair & Make-up menu

Clown Alley Creator - Nose submenu

Part of the reason for the lack of finished tasks is because I recognized the need for a way to define my menus better than simply hardcoding the buttons into place on each menu.

I originally was writing entire functions to create and setup each menu. It could work, but it is a lot of manual work that risks looking inconsistent from one menu to the next. Instead, I could write an algorithm to lay out the options in a reasonable way, which led to me wanting to make my menus a bit more data-driven.

So two major things came out of this past week’s efforts:

First, I made the menus more data-driven. The menu titles, the submenu titles, and the menu button options and their locations are defined somewhere, and when the menu is created, it is able to grab all of that data and put it together.

It still has some things that are hardcoded, though, but the point is that it does go through this indirection in a way that makes it easy for me to replace those hardcoded values with values that are defined separately.

And second, I think I keep relearning that sometimes the first step to abstracting and generalizing is to get something concrete in the place first. Having a nose submenu with actual nose options hardcoded into place would have informed how to generalize such a menu better than me trying to generalize it upfront.

Doing the generalizing upfront risks creating a tool that I feel stuck with or have to work around rather than one that feels useful and helpful.

Anyway, I will continue to work on the spine of creating a clown with saved options that I can preview and load.

And since we just started the last month of the year, I also need to remember that December is usually one of the least productive months for me (more family holidays, after all) and that I shouldn’t expect to get a full month’s worth of effort out of it. Getting that simple spine in place before the start of the next year will feel like a pretty big win, I think.

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 Post-mortem

Freshly Squeezed Progress Report: Navigation Menus…and an Agile Course Correction

Last time, I reported that I had created some backgrounds and menus for my next Freshly Squeezed Entertainment project called Clown Alley Creator, a creativity tool about creating your own fun clowns.

I had fixed a defect in some of my oldest code and continued to work on the initial in-game menus this past week.

Sprint 2024-3: In-game Menus

Completed:

  • Create Gallery View menu
  • Create Clown Creator Mode general navigation button icons
  • Create Clown Creator mode general navigation menu

Started and incomplete:

  • Create clown preview cut-outs
  • Create clown preview in Creator mode

I mentioned the ButtonControl defect last time, but buttons now work in a much more intuitive and correct way:

Then I started creating the in-game menus. The Gallery View is currently very simple because there is nothing to put in the gallery yet. So I created a button to return to the Main Menu, and I created a button to start creating a new clown in the Clown Creator Mode.

Clown Alley Creator - Simple Gallery View

I worked on some infrastructure code related to menus and widgets, mainly so that the animated button widget I had created would function properly. Basically, I wanted any interactive buttons to periodically let the player know that they are interactive, so every few seconds they will grow and shrink.

Then I created the Clown Creator Mode navigation menus. Basically, creating a clown will involve going through a sequence of menus to choose options related to the head and body shape, wardrobe, shoes, and make-up and hair. When you get to the last menu, you can choose to finish the clown, which will allow you to name the clown and save it to your clown alley and see the clown in the Gallery View.

Clown Alley Creator - Creator Mode view

Eventually. For now, the menus are navigable, either by hitting the previous and next buttons at the bottom or by picking one of the menus along the right side:

I finished the week by starting to work on creating a Clown preview in the Creator Mode. The idea would be create a bunch of sprites that, when composed together, create a clown that might eventually be animated.

Saturday night I went to bed feeling good about how productive the week was.

Sunday morning I woke up and realized that I wasn’t approaching this project in a very Agile way.

What Do I Mean by “Agile”?

Agile has become one of those terms that mean wildly different things to different people, so I want to clarify what I mean.

Some people think “Agile” means some form of dysfunctional approach to running a software project in which certain awkward practices and processes take primacy over everything else, no matter how painful it is.

If it wasn’t clear, that is NOT what I am talking about. You might hear people call it Agile where you work, but it isn’t really Agile. It’s just your probably-large organization not actually figuring out how to apply Agile to their existing processes so they keep a lot of baggage and then blame Agile for it.

But I can complain about dysfunctional work practices all day. For now, I want to talk about how my own approach to this project might be a problem, and I’m kicking myself for not recognizing it sooner, but I’m also patting myself on the head because I saw it early enough in the project to make some changes that I can still benefit from.

When I think about “Agile” I like to think of it as approaching the work in a way that acknowledges that we don’t know what might happen in the future, in a way that allows us to change, add, or cut anything based on what we learn as we go.

I don’t know how long a feature might take to work on and complete. Taken to the extreme, it also means I don’t know how long the entire project might take to work on and complete. I may or may not get sick, or have someone in my family get hurt, and so I end up with a lot less capacity to work on the project.

What does all of that have to do with being “Agile”?

Well, imagine that I continue the work as I have been. Here is a sample of my current backlog of identified work items:

  • Create Clown Creator Mode general navigation button icons
  • Create Clown Creator mode general navigation menu
  • Create skin color menu options
  • Create Head option and submenu
  • Create Body option and submenu
  • Create Wardrobe menu
  • Update Clown Preview to display clothing in layers and colors
  • Create clown preview wardrobe cut-outs
  • Create Shoes menu
  • Create clown preview shoes cut-outs
  • Create Hair & Make-up menu
  • Create hair option and submenu
  • Create make-up option and submenu
  • Create clown preview hair cut-outs
  • Create clown preview make-up cut-outs
  • Create nose option and submenu
  • Create clown preview nose cut-outs
  • Create Finish modal
  • Save/Load individual clowns
  • Update Gallery View to show all loaded clowns

If I were to work on these items in this order, it would make sense in terms of the order of the menus. I would work on creating the skin color and head and body submenus in the Head & Body Menu, then I would work on the Wardrobe Menu, and so on.

And this might work out fine, but it introduces some risks. This is supposed to be a six month project, which means that new development needs to stop before that sixth month, so really I only have a handful of months to implement everything.

Let’s say hypothetically either I take too long to make the Shoes menu or otherwise need to stop working on the project shortly after that point. If I absolutely had to publish the game at that point, what would be the state of the project?

Well, it would be unfinished! There is an entire set of menus related to hair and make-up that would be completely missing, and to make it worse, you could still navigate to that empty menu!

In fact, you couldn’t save or load anything, so the Gallery is perpetually going to be empty even though it is the first place you go after hitting Play on the main menu. How confusing and awkward for the player!

Even if you think it would be fun to just create clowns that you couldn’t save or load, how fun could it be to create clowns without being able to do their make-up? When you think of clowns, you probably think of clown noses, hair, and make-up before you think about their clothing. And yet this game would ask you to make clowns and ask you to ignore the hair and face entirely.

In short, approaching the project in this way would limit how adaptable I could be in the future.

A more Agile approach?

Imagine if I approached the work differently.

There are many valid ways to do so, but let’s pretend that last week I didn’t work on the Creator Mode navigation menus but instead focused on the Hair & Make-up menu as the sole menu. That is, when the player enters Creator Mode, they are exclusively working on hair and make-up.

  • Create Hair & Make-up menu
  • Create hair option and submenu
  • Create make-up option and submenu
  • Create clown preview hair cut-outs
  • Create clown preview make-up cut-outs
  • Create nose option and submenu
  • Create clown preview nose cut-outs
  • Create Finish modal
  • Save/Load individual clowns
  • Update Gallery View to show all loaded clowns

With just this smaller subset of the backlog completed, what would the project look like?

Well, it would be more or less complete as a game. It wouldn’t have everything I wanted, obviously. Clown faces aren’t the same things as entire clowns. I would want to continue working on the project.

But there would be a strong spine in place: you could create clown faces, save them, and see them in the Gallery.

In fact, rather than have “Save/Load individual clowns” as a separate work item, I would instead make it part of the work of each menu. That is, “Create the hair option and submenu” would also have an associated “Save/Load player’s hair option” task. Each menu wouldn’t be considered done until I could make something real happen by using it.

And that’s a much more Agile approach. Instead of merely splitting up the work, I am thinking through how to ensure that whenever I finish some piece of work that the project as a whole is more finished.

I’ll repeat that, because I think the core reason for some of the dysfunctional approaches to work I’ve seen is that people don’t seem to understand this concept.

Instead of just splitting up a project into pieces and then working on those pieces, instead of hoping that by putting enough finished pieces together that they will eventually become an integrated whole (and more likely have extra work trying to make it actually integrated as a whole), I could approach each piece of work as contributing to the whole in an incremental and iterative way. I could create the spine of the project, then continually add more and more to the bones while both maintaining and building a functional whole the entire time.

You know, how Agile is supposed to be.

I can’t go back and change how I worked last week, and it would be silly to completely rip out the menus I already created, but I am going to take some time to rearrange my backlog so that I can build that spine sooner.

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: Backgrounds, Menus, and Plans

In my last report, I had started work on implementing my next Freshly Squeezed Entertainment project called Clown Alley Creator, a creativity tool.

I continued the initial work of the project.

Sprint 2024-2: Menus

Planned and complete:

  • Create a main menu

Unplanned and complete:

  • Create an exit menu

Unplanned and incomplete:

  • Create Gallery View menu

You know, reading the above, it makes it sound like I had a bunch of “unplanned” work, when really I just mean that at the start of the sprint I had identified only one set of tasks to work on and the rest were expected to be pulled in from my project backlog as I finished work.

I need a better way to report this progress.

Anyway, I finished the main menu work, which involved adding variations on the buttons so that they can be animated.

But I was unhappy with the background, and I ended up redoing it. It is still not great, but it is an improvement, and I like the look of the circus tent more.

Clown Alley Creator new title screen

The new font for the title looks great, too, and I decided to use it for the buttons as well.

Next up was sticking the landing and creating a background for the quit verification screen:

Clown Alley Creator quit verification screen

I liked the idea of the Quit button leading you to the Great Egress, which comes from a potentially apocryphal story about PT Barnum.

As you can see, I need to figure out a single art style. I’m kind of all over the place right now. Expect more iterations in the future.

About halfway through the week I needed to leave town for a family emergency. I was in the middle of working on the first in-game screen. Basically, you press the Play button, and it should take you to the Clown Gallery menu.

Unfortunately, other than creating the menu background, I hadn’t gotten to the actual menu options. So for this coming week I will add a button to return to the Main Menu and another button to Create a New Clown, which will take you to the Create a Clown set of menus.

This entire project is just a series of menus, so expect a lot of talk about menus and options.

I did discover that the code for a ButtonControl had a defect in it.

ButtonControl is some of the oldest code in GBLib, my bespoke collection of code I’ve built up over many years of refusing to use an existing game engine. It is based upon the concept of Immediate Mode GUIs, primarily from Jari Komppa’s imgui tutorials. Since my code was test-driven, it has a suite of unit tests, so I added a new test to capture the bug, which has to do with the button’s state getting reset from “active” to “hot” too fast, which explains why sometimes when you click a button that you don’t see it being pressed down.

I can’t believe I’ve ignored this issue for so long and across so many games, because it is a pretty obvious bug, but I suppose I’m paying a lot more attention to the game’s responsiveness to the player in recent years, and maybe this brand new project has almost nothing else to distract me from noticing it.

So expect that to be fixed, too.

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: Initializing a New Project

Last time, I reported that I was still designing and planning my next Freshly Squeezed Entertainment project, which will focus on clowns.

Since last week was the first full week of November, I wanted to get started on actual development while I still figured out the full project plan’s scope.

Sprint 2024-1: Pre-production and Initialization

Planned and complete:

  • Get a basic project building/running/quitting

Unplanned and complete:

  • Create a title screen

Unplanned and incomplete:

  • Create a main menu

As you may know or recall, I write all of my own code. I don’t have a game engine so much as decades of built-up layers of bespoke code that I use as building blocks for my projects.

Unfortunately, it means that each time I start a new project, I need to disentangle the old project to create a new project.

It’s not as messy as it sounds. I’ve already separated out some generic code into something called GBLib. And when it comes to the game-specific code, most of that goes into a directory called GameSpecific, so I can pretty much delete everything in there.

But unfortunately there is still a small part of the game-specific code that gets into what should probably be a more generic area, and THAT’s where most of the effort lies.

Which frankly was still pretty smooth, and I made notes to try to improve the situation so that next time it is even easier to start a new project. The main delays came from spending time on other priorities (there was an election to reel from, after all).

Once I got the project building and running, I had a functioning but ugly main menu (much of this code is the same between projects) with an otherwise blank screen, so the next thing was to create a title screen.

So I created a few thumbnails of how the main menu/title screen would look.

Clown Alley Creator title screen thumbnails

I liked the idea of being outside of a circus tent, so that when you hit the Play button, you are indicating that you want to go inside. Having posters and signs for the other buttons, such as Quit taking you to the Giant Egress, seemed more fun than random floating buttons.

Then I spent time on implementing one, and…well, I’m not happy with it.

Clown Alley Creator main menu with background image

I know I’m not an artist by trade, but I feel like my programmer art skills are better than this.

BUT! This background image doesn’t have to be the final product. I can always improve it later.

For now, I have a menu, and I have buttons for it, and I’d otherwise be done with the Main Menu task except that the buttons need to have a few variations so that they animate when hovered over or when pressed.

Otherwise, I spent part of Saturday updating my project plan’s backlog with all of the scope I could identify upfront. I periodically had to create more mock-up screens to help me figure out what that scope could be.

Clown creation mock-up screen for unnamed next project

Looking at my last two completed projects, I had identified over 100 different backlog items by the end. However, each of those projects took me longer than six months, so while it was helpful to look through those backlogs to see what kinds of things I should document for this project, such as tasks to create app icons and create ports and create ways for the player to toggle audio on and off, I also guessed that maybe around 50 items is likely doable in six months?

I don’t actually know. Some tasks are bigger than others, and I still need to estimate how big some of them are relative to each other. I don’t have some of the more complex features I was hoping for, such as the animation work I was investigating in the last few weeks, and I worry that even without them that it might still be too much for a six month project.

However, I am being mindful to front-load a lot of the core system and coding work in the first few months, with the expectation that later months are all about adding content. I expect this approach means that the project will be considered finished in six months no matter what, and the only unknown is how much or how little variety I can provide, plus how much animation the clowns might have.

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
Games Marketing/Business Politics/Government

Announcing the Post Election Stress Sale

There was a lot of anxiety before the election, and there are a lot of feelings to process now that it is over.

We know that there is a lot of work to do, a lot of organizing and community-building, and a lot of support to provide in the coming weeks, months, and years.

For now, in case you are looking for something to occupy your mind for a little while, I’m holding a sale on my leaf-raking business simulation game, Toytles: Leaf Raking.

Toytles: Leaf Raking

During the 90 days before winter, you’ll:

  • Seek out neighbors who need your services and turn them into paying clients.
  • Make key purchasing decisions, such as which types of rakes to buy and how many yard bags to keep in your inventory.
  • Balance your energy and your time as you seek to keep your clients happy without overextending yourself.
  • Visit the kitchen to ask your parents for their advice and wisdom.
  • Learn about personal responsibility and the importance of keeping your promises.

If you are a fan of older games like Lemonade Stand and other small business sims, or a fan of turtles, you can get it today at 50% off.