Friday, 8 January 2021

My Game Making New Year's Resolutions... One Year Later

 As I type this, it is the 8th of January 2021. A bit late for talking about resolutions for the upcoming year, but a good time to take stock of how the previous year went. Back in December 2019, I was drawing up a set of goals for 2020. I had just given up trying to make a 3D JRPG on my own using Python and Panda3D

After a little over a year, I was still developing the core modules of that game, with no end in sight and worst of all, I hadn't even started debugging the whole mess. I gauged interest by whipping up a version of it with Earthbound characters, and basically there was none. So I took a break and by the end of 2019, I had a game plan. I'll now go through my bullet points and expand on they mean and what was the outcome.

Make and Publish 3 Games in 1 Year

In 2018, I released four games on Steam. It may sound like a lot for a person with a full-time job and, back then, a very long commute. The first one, Oedipus Dating Sim, took me quite a while to finish. But the following three games took the Ancient Greek Quiz module and added a new coat of paint. So I had a Japanese language, a Chinese language and a music quiz in a short span of time. For 2020 I wanted to publish three games. The idea was to force myself to keep things simple. I would have four months to deliver each game and when resources (just me) and time (4 months) are locked down, the only thing left to fiddle with is scope. Luckily, the rest of this list helped me with just that. I ended up publishing five paid for games on Steam and one free game on Itch.io and Gamejolt.

No Jumping (or Physics)

To reduce the number of bugs, I decided to only make games without jumping mechanics or any sort of physics, like balls rolling when colliding against the player character.

Single Boards / No Camera Scrolling

The inspiration for this was old arcade games from the early 1980's and Atari 2600 games. The rationale was to also save time debugging camera behaviour, so I could focus on aspects that bring quality to the game. A buggy camera detracts a lot from any game but a perfectly working camera brings nothing new or exciting. As a one person team, this point was a no-brainer.

No Elevations (Z=0)

In my JRPG project, there were elevations and your character could climb mountains. However, this brought a whole host of bugs: being at a wrong angle when on a slope, missing a hit collision and falling off the stage, climbing over enemies without ever colliding, being bumped by enemies and getting stuck off bounds etc. You name it, it happened. That hellscape of wrong behaviour got me thinking: "What if I made a 3D game that behaves like a 2D one?" From that point on, instead of manipulating position(x,y,z), it was position(x,y,0). If the removal of one dimension didn't take me to Heaven, at least it got me out of Hell

1 Player Only

During my wild daydreams of a one-man 3D JRPG, I even had some code that could handle two players. Now imagine that! I hadn't even finished my Final Fantasy 1 and I was already dreaming of making the Secret of Mana. In 2020, I didn't even consider adding a second player.

No Steam Achievements

This is the only item that I failed to follow through with. My reason for eschewing achievements was simple: they rarely integrated well. Apart from RenPy, which has awesome support for achievements, every other engine I used either didn't support them out of the box or had some archane and convoluted ways of adding them in. I understand why players love them (so do I, by the way) but the benefits outweighed the costs. Regardless, I broke my self-imposed rule and decided to timebox a day to add achievements in Panda3D using Python. I got as far as connecting to Steamworks (basically the first step of the process) but that was it. Then when I switched to developing in Panda3D using C++, I once again gave me a day to learn how to add achievements and... success?!? I was shocked by how easy it was this time around. To be fair, Valve offers plenty of documentation and the code is all in C++, so it's not like I suddenly got smart overnight. It was as straight-forward as can be and 2 of my 5 games support achievements.

Grid system (No More Designing Terrains)

To eliminate time wasted on things I don't particularly enjoy, I switched from designing maps by hand and modelling them in Blender, to a grid system where I would have a string representing a map and I would let the software populate the environment with my own 3D assets.

Just for the sake of illustration, a map could look something like this:
game_map = ""
game_map += "#########"
game_map += "#.d....*.....#"
game_map += "#..............#"
game_map += "#..e..........#"
game_map += "#.........i....#"
game_map += "#########"

Where an * would stand for the player's spawning position, 'e' for enemy, 'i' for item and 'd' for door. It's a very simple way of doing things, but it helped me iterate and redesign maps as much as I wanted. This approach was probably the biggest time-saving measure of them all. 

No cutscenes!

When I started out, I wanted to make SNES or 3DS games. They look great, but they also have huge teams with very specialised roles. From 2013 until 2018, my biggest time sink was working on cutscenes. Animating them, getting the timing just right, rewriting the scripts. And then the players would just skip them! It was like watching someone waltzing all over your carefully planted flower beds. But without cutscenes, how does one convey a story?

The game is the story.

I realised that the way you structure the game can be the story itself. Talking to NPC's. How the backgrounds change as the levels progress. Everything carries meaning. And also, not every game needs a story. It was great to learn how to think of games as an experience, rather than a narrative.


By the end of the year, I had achieved twice as much as I had envisioned at the beginning of the year (The sixth game is coming out by the end of January 2021, but it was completed around the 2020 Christmas holidays). In terms of revenue, I earned a around 30% of my total pot in 2020. Given that I started selling in 2016, that's the remaining 70% divided by 4 years, meaning that I sold in 2020 almost twice as much the average of previous years(17.5%).

I'm not suggesting you take these ideas as Gospel, because they come with severe limitations that suited what I was aiming at. Instead, you could spend an afternoon writing rules that would fit the projects you want to complete this year. And with your rules firmly established, hopefully the path will be smoother for you too.