Available now on Steam and Nintendo Switch
I started this game back in 2020 as a fun little side-project to pass the time during the pandemic with lots of help from my son. Back then we didn’t even expect it to be playable, never mind it turning into a real game with 100+ levels and being released on Steam/PC. But even after that milestone, I never dreamed my son and I would be able to play it together around the TV on our favourite console!
In the beginning…
…my son Ben (19) had no idea I was working on a game. When I first sat down to start planning it out on the 4th of January 2020, I originally wanted to make a 2D platformer game. Super Mario World is my favourite game of all time and I still remember being totally in awe of the World Map the first time I played it as a kid and I wanted to use that as inspiration for my game. As I played around with several concepts, I stuck with the platforming vibe for a few days before I found the game suddenly began to morph into a puzzle game before my eyes. This was a very strange thing to behold – I don’t even typically like puzzle games! It was like the creative process was taking on a mind of its own!
Here is the first mock-up for the game that I drew 3 days into development:
Given how much things changed during development, it’s quite remarkable how accurate this initial drawing turned out to be. Here is a screenshot of the first level in the finished version of the game:
Phase 1 – Core gameplay
Of course, it took months before the game started to look anything like this. For the longest time, I couldn’t figure out how to get anything anywhere near resembling a playable game. I spent months trying to learn Game Maker Studio 2 – the game engine I decided to use to make Kells. It meant learning a custom language from scratch. I’ve been a Software Engineer for over 20 years now so learning a new language isn’t too difficult for me, but this was a different experience altogether. The GML language isn’t exactly considered one of the better programming languages (although to be fair it is getting better all the time). By the 24th of January I managed to get a rough prototype running:
I have no idea what the “PUSH” block is. I was playing a lot of “Baba Is You” at the time so maybe I was blatantly trying to copy ideas from that game, not sure! I was playing around with many, many concepts at the time. I had a rough idea in my mind that the minions (the green dudes) would move around independently of the player, like in Lemmings and you would have to change gravity to manipulate them, but I had no idea how to execute on that concept. It required weeks and weeks of experimentation and trial and error. The green characters were called minions all the way through development. I didn’t decide to call them Kells until the very end so all the code refers to them as minions as well:
As the prototype continued to improve, things were starting to take shape and it was starting to feel like there were elements of fun to be had!
I distinctly remember working on these early mock levels being the first “aha” moment. I was starting to enjoy working on the game by this point. Not only was I enjoying playing, but I was also enjoying the process of creation just as much, if not more.
For any of you who haven’t tried making a game before, getting started and over the initial hump is by far the hardest and most painful part. It’s a massively steep learning curve and it takes a great deal of perseverance and determination to get to a point where it starts to become enjoyable. But I managed to stick with it just long enough to get over the hump and now I had momentum and some motivation to keep going.
Once I had a proof-of-concept, I knew I was onto something but it wasn’t very playable. I couldn’t have given the prototype to my son to play in this state. I could enjoy playing it, but I had to intentionally avoid all the bugs and gloss over all the glitches. Where it didn’t work, I had to use my imagination, and I couldn’t expect anyone else to do that of course. So the next milestone was a playable level that Ben could play to see what he thought of it.
It took about 3 months to get to that next milestone! I remember spending weeks and weeks on collision detection alone, and I was not prepared for how much code would be needed to support the “gravity defying” mechanic. Due to the nature of the game, the Kells can end up walking upside down, for example. Or they can be walking to the right, but on a wall so really they are walking upwards (to the right!). And it got even weirder when they were falling – it was possible to “fall forward” for example. All of this caused a nightmare in terms of coding. I’m sure there is a better way of doing it, but I ended up with a different script for every combination and it got mind bogglingly confusing at times.
All the while I was doing the collision detection, even though it was really difficult and taking a frustratingly long amount of time, I knew in the back of my mind the hardest task was yet to come. Up until this point, I still had basic sprites for graphics with no animation:
I needed to figure out how to animate the main characters and I feared this far more than anything else. The collision detection logic was a nightmare, but at least it was code. It was logical. I could handle that. But graphics and animation are not my thing, so I struggled with the most simple aspects of it for weeks.
Here is an excerpt from the dev journal when I finally got the animation for the Kells working. It was very basic, but it’s probably the one thing in the entire game I’m most proud of.
Over the next few months I worked on features as well as starting to get to a point where I could flesh out full levels. I didn’t want to waste time doing all the graphics for every level as there was a strong chance I would be changing them later so I stuck to the basic building blocks:
By mid April the core of the game was really starting to come together. Most of the basic features were in place but I couldn’t help thinking there was something missing. That’s when my son came up with the most important feature of the game, which we affectionately referred to as DEFAULT GRAVITY!
The way the game had worked up until this point was that the Kells would always enter the level under the “normal” laws of gravity, falling to the ground. Then, if you wanted to make gravity change you had to place “gravity tiles” around the level. When the Kells walked into the tiles, the direction of gravity would change based on the direction of the tile. This was a great base-concept, but after 20 or so levels it was clear there wasn’t enough variation in the mechanic to sustain a full game. I always envisioned this game would have exactly 100 levels (it ended up with more – I’ll explain why later on), but we needed another mechanic or twist on the existing mechanic otherwise the player would get bored.
I played around with different ideas for a few days but nothing felt right. Sometimes, I would spend hours coding up a new concept only to throw it straight in the bin. Then, one day out of the blue Ben said – what about giving the Kells a different default gravity when they enter the level? You could have heard a pin drop. We both were quiet for about 30 seconds, then both of us looked at each other and said “THAT’S IT!” at exactly the same time. It was such a simple idea and that just made it even more perfect. With the Default Gravity mechanic implemented, I could set-up a level where Kells would fall “upwards” from the entrance, for example. This literally turns the gameplay on its head as now the player would have to use Gravity Tiles in a very different way. As soon as you have multiple Kells in a level, all with different Default Gravity settings, the gameplay becomes far more interesting. This simple feature provided so much variety, I knew it was the final piece of the puzzle. By early May the first phase of the game’s development was complete and I even managed to add some graphical flourishes:
Phase 2: Levels, levels and more levels!
But there was still a very long way to go. I still only had about 30 levels and they were rough. And there was no world map or islands like in the finished game. From May to September I basically focused on coming up with new levels and I think this period was by far the most joyful of the entire project. I would try to get through at least one level a night and it was a great deal of fun challenging myself to come up with new ideas for levels.
As well as coming up with new ideas for levels, Ben became my number one (and only) play tester. Whenever I completed a few levels, he would play them and over time the challenge for me when creating a new level came down to one question: Will it pass the Ben Test? You see, Ben knew every inch of the game – he was instrumental in helping me come up with most of the mechanics, not just Default Gravity. So if I could make a level that he couldn’t figure out in under 2 minutes, it passed the Ben Test. And any level that didn’t pass the Ben Test was thrown away.
Fast forward to June and I was in my happy place, knocking out level after level and enjoying the process immensely. Then suddenly, out of nowhere I decided the game looked shit and decided to completely redesign all the graphics. This took weeks and in the end I had this:
I still think this looks cool even now! It was a lot of fun to play around with the graphics like this but in the end, I realised that – while the style was interesting to me – it didn’t fit the tone of the game at all so I threw all of this work away – weeks worth of code and assets gone. I don’t regret any of it though – it was all good fun.
After this brief detour, I got back to work on churning out levels. I had a lot of help from Ben but also friends would contribute with their own ideas all the time, especially naming things. I am terrible at naming anything, but my friends came up with amazing names for things such as “The Total Rekell” and “The Kellective” for example and they were always on hand to help me with level names as well. Although I have to point out that the best named level in the entire game was one I came up with, so I’m quite proud of that given I’m usually so bad at naming things! It’s the name of Level 21 where default gravity changes to be upside down for the first time and I decided to call the level “Upsetting the Applecart“. Get it? Apple is a nod to gravity, and “up” is the direction of the default gravity for the Kells in the level! Genius 🙂
I’m particularly proud of The Kellective. There are 50 Kells altogether in the game but you start with only 3 of them and you have to find the rest while playing through all the levels. I decided to name all the Kells after friends and family as well which is a nice touch. This is what the Kellective looks like:
I even decided to give them all little personalities and moods that impact their performance in-game. If a Kell is overworked and tired their health drops more when they get injured! I probably spent way too long on this aspect of the game but I don’t regret it for a second. It was so much fun to work on and gives the game character and personality so it was all worth it.
Phase 3 – Putting it all together
It was the end of June when I began focusing on the world map. Here are some early prototypes:
All the islands had different names right until the game was nearly ready to launch. For comparison, this is what it looks like in the finished game:
Once the world map was in place I started thinking about all the different things I always envisioned for this game. As I mentioned at the start, I am a massive Super Mario World fan and while Kells didn’t turn out to be a platformer in the end, there were still loads of cool features I wanted to implement that were directly influenced by SMW. For example, there are 100 levels in total but just like in SMW you can reach the credits much quicker if you know how to. There is also an entire secret island in the game called Star World which is a clear nod to SMW. Finally, the number of secrets I ended up adding in this game is insane and it’s all thanks to SMWs elegant and generous approach to secrets, so thank you Mario (and Shigeru Miyamoto!).
So by this point, I would say I was well into phase 3 of development around November/December time. About 80% of the levels were complete, and I’d added all the extra modes I wanted (The Kellective, The Total Rekell, The Iron Kell, Star World, The Secret Tunnel, The Dojo, The extra-difficult purple coins, loads of secrets, the list goes on and on…). I won’t spoil any of them here but suffice to say it took a lot of time and trial and error to arrive at an implementation that worked and fit into the original vision for the game. Without going into details, let’s just say there are a few surprises along the way!
But phase 3 was probably the most brutal of the entire project. It was all about polish and a crazy amount of play testing. As a developer, you are very close to your creation – it’s very easy to subconsciously ignore the cracks without realising it. As soon as I shared a development build of the game with a friend of mine it was clear how broken the game was! While in my mind it was a masterpiece, to my friend it was a confusing mess and practically unplayable! There were so many things I took for granted – I had no idea how confusing it would be for new players. It didn’t help that my son was just as close to the game as me so he didn’t spot the issues either.
It was clear I had a lot of work to do. There were so many problems, I didn’t know where to start. It was very disheartening to accept the reality of the situation. I have to admit, there were times when I felt like giving up – the amazing game I envisioned in my imagination simply wasn’t much fun to play in reality.
I ended up taking a few weeks off which was a great idea as when I returned I finally had some perspective. I tried to be honest and objective when assessing the game and I realised it was actually very fun to play, it just had lots of problems that got in the way. I had to break them down one by one and this was much easier to do once I had some perspective after the break.
There was no difficulty curve for a start. During early stages of development, I had introduced new mechanics and concepts haphazardly without considering how overwhelming it would be for the player. I misjudged the difficulty immensely – I assumed the gravity concept would be easy to understand from the start but it wasn’t. I assumed the permadeath features I had in place would be fun and challenging for the player but it turned out to be anything but. I had the game set-up so that you started with one Kell and if it died it was GAME OVER. You had to collect more Kells on your journey so that when one of them died, others would be available to replace it. It was a sound idea in theory but in practice it essentially sapped all fun out of the game for new players. There was no room to experiment – players had to be extremely careful and often saw the GAME OVER reason without any clue as to what had caused them to die, so they couldn’t learn from their mistake and it didn’t even feel like they did anything wrong. It was a disaster and even after taking regular breaks to gain perspective during this period of development, there were still times where I wanted to give up.
In fact, looking back at my dev-journal entries it seems as though some of the breaks I had initially started out as giving up – I decided several times that I’d had enough. But something always pulled me back. The longer I was away from the project, the more I missed working on it.
Phase 3 became the longest phase of development. Continuous iteration, polish and play testing over and over again. I re-designed the first 10 levels at least a dozen times and that’s no exaggeration. I learned so much about play testing – about the art of gradually introducing the player to new concepts. I had to unlearn everything I knew about the game and get inside the head of a new player. It was tiring, difficult work that required a lot of patience that I didn’t have!
During this time I also couldn’t stop myself from adding new features which meant more bugs and play testing and for a while it felt like the cycle would never end. Feature creep set in – that situation where the fear of sharing your creation makes you dream up with new features just to push back the launch! Even though I probably should have declared a feature freeze at this point, in hindsight I’m glad I added these extra features as they do give the game a lot of character and personality. I added features like a health bar for the Kells:
I also added a really emotional RIP screen for when Kells died which turned out to be one of the most loved features of the game. It really is sad when you lose a member of your Kellective and the music still gets me every time!
Phase 4 – Launch Day!
On the 1st June 2021, I finally launched the game on Steam. I never intended to make this game for profit so it was a strange feeling when I finally launched it – I actually felt sad that it was over. I don’t know why on earth I thought it was over though. Soon after launch, the bugs started rolling in. I didn’t have many players but there were a few and all my family and friends were playing it so the bug reports were piling in. I dread to think how many I would have gotten had the game taken off. I ended up treating the launch period as a kind of Early Access. The game was fully finished but it was still very rough around the edges. I took advantage of the fact there weren’t many people playing and continued to tweak the levels and structure of the game well after launch.
After a while development did calm down but there was one player who kept on providing feedback long after the launch. My son Ben of course! During development he always boasted that on launch he would be able to PERFECT The Iron Kell game within a day so we had a bet on. Of course, he didn’t quite manage it in a day (he was too busy socialising with his mates), but he did play the game regularly. Every now and then I would hear a scream coming from his bedroom then a few minutes later I would receive a screenshot where he died in The Iron Kell after getting so far through it. Agony!
Oh, I should explain what the Iron Kell is. So there are 100 levels in the main Story Mode but when you complete all of them, you are informed (in a massive, shock twist) that everything you accomplished up until this point was just training for the real challenge: competing in The Iron Kell.
The Iron Kell is essentially a special mode you unlock as a reward for completing all 100 levels of the game. In this mode you are tasked with replaying all 100 levels again without a single Kell taking any damage. If any of your Kells gets so much as a scratch on them, you are instantly thrown out of the Iron Kell and you lose all progress.
On the day I heard Ben screaming, I received this screenshot shortly afterwards:
He managed to get through 75 levels without taking any damage then in a moment of madness, when he wasn’t looking one of his Kells fell onto a spike. It was an easy level too – he just wasn’t paying attention.
This is exactly the kind of excitement and exhilaration that I wanted players to experience from the Iron Kell so I was overjoyed. Eventually Ben did complete the Iron Kell and he went on to complete the game entirely and took great pleasure showing off to me about this any chance he could.
But even after fully completing the game, he still wasn’t satisfied. I remember a conversation with him a few weeks later where we were reminiscing on the “late game” experience. At one point he said “I think there needs to be a reward for collecting all the purple coins”.
Let me explain the purple coins. So the way the game works, there is a built-in achievement system where you win different coloured belts as you complete various in-game achievements:
Ben had completed the Iron Kell, restored the Kellective and won every belt, except the Purple Belt. There are 10 purple coins littered around the game and they are intentionally very difficult to find. Some are hidden in secret areas – others are in plain sight but seemingly impossible to reach. Ben had 9 of them but couldn’t find the last. Then, one day he finally did it and… nothing happened.
The Purple Coins were another idea I implemented that were influenced by Mario games. The Mario games often have special coins to collect so I did something similar and I never thought that it would be an anti-climax not to be rewarded at the end – isn’t winning the Purple Belt enough? Not according to my son! He said the challenge was so difficult, it was unfair not to be rewarded with something more exciting than a belt. I knew he was right of course – collecting all the purple coins is an extremely difficult task and seeing as it’s the last belt most players will win, it should be rewarded somehow. But what else could I possibly do to reward players? I had already implemented every conceivable idea I could dream up.
So that’s when I decided to create another 10 levels and Area 42 was born!
Designing these 10 levels was the most fun I ever had in my whole time on the game because the goal was to make them as difficult as I could imagine and also, I knew these levels were only ever going to be played by Ben – no one else would devote that much time to the game and I knew that, and it felt great building a entire section of the game just for him.
This is a huge spoiler but seeing as no one will ever see it anyway, I don’t mind too much. Check below for a screenshot of Area 42:
I had a lot of fun creating the background as well. It’s animated and clearly inspired by one of my favourite films, The Matrix. And the levels – oh the levels! They are so difficult! But not too difficult for Ben evidently – he managed to complete them the same evening I released the update! Now he can proudly claim to be the only person in the world who will ever win the PLATINUM achievement in this game, which is very fitting I think. Here he is showing off about it on Steam:
Phase 5 – The boyhood dream comes true!
But the story doesn’t end there. After a few months, I decided – what the hell, I’m going to release Kells on the Nintendo Switch. When I started this game back in 2020, in the back of my mind I always wondered about the Nintendo Switch as I knew Game Maker Studio supported it, but not in my wildest dreams did I think I would actually release a game for it.
Initially, I told myself I would only do a Switch version if the Steam version was “successful”. But what does success mean to me? I always intended to make this game as a hobby and it was more about enjoying the process rather than a way to make money where the definition of success for me was based on two criteria:
- Don’t half-ass it – make a complete game with at least 100 levels.
- Stick to the original vision of making the game we wanted to play – don’t add features or go in a different direction just because it might appeal more to the mainstream.
So by these standards the game was already a success. I could have stopped there and moved on to the next game. But I couldn’t shake the idea of releasing the game on the Switch. I kept thinking to myself – why not?
So I did. On the 1st August 2022 the game was released worldwide on the Nintendo Switch!
It wasn’t easy – I had to buy the devkit, sign the non-disclosure agreements (which made me feel very special) and work tirelessly for months updating the controls in the game to support all the different ways you can play on Switch, and then I had to go through several rounds of submissions and updates, but eventually Nintendo accepted the game. Watching Ben play a game we both created on a Nintendo console around the TV in our living room is quite a special experience I will never forget.
Kells has been available for a week on Switch at time of writing and so far I’ve had 29 downloads. I do hope the game reaches more people through word of mouth (and maybe this article will help spread the word) but if it doesn’t, that’s okay too. I’ve had a blast making this game together with my son and learnt so much along the way, but all I want to do now is start the process all over again and get to work on the next game!
If you want to give KELLS a try, you can find it for Nintendo Switch here and it’s also available on Steam here.
Thanks for reading,