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.
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.
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!