To kick off this blog, here’s a self-indulgent story about the discovery and development of my matching, puzzle game Solomeow’s Magic Blast. Or rather, why a two-month game development project—turned into a three-year monstrosity.
In the future, I will use this blog to write about my games. A lot. Retroactively focusing on development and design, reiteration, and how things changed over time. I will also cover topics such as the medium of video games in general, creativity, productivity, art, and similar.
Solomeow’s Magic Blast, aka Cat Magic
For years, I’ve been harboring feelings of love and hatred towards the casual puzzle genre. The various free-to-play, match, blast, pop, burst, flick, block, flock, lock, and whatever games. Love for their casual and entertaining nature. Hatred for their carrot-on-a-stick, abusive design. Which, despite my better judgment, could easily suck me into addictive behavior.
So in 2018, having learned the basics of programming in C#, I decided to create a parody game. A run-of-the-mill, yet-another-candy-crush-clone for mobile app stores. Except this one would start glitching out and falling apart after several levels. It would freeze on occasion, even crash. Then, a malicious, buggy AI would start taunting the player with unwanted dialog. The goal was to make it unexpected and unnerving. Free too.
The idea felt novel. Until I learned of Doki Doki Literature Club! and Pony Island—two games with somewhat similar premises. Both engrossing, but both having play experiences which lack visceral excitement. Unlike Pony Island, which doesn’t hide the weirdness at all, Doki Doki was a better reference point for my game. However, the clunky, frustrating design weakened the immersion—which hurt the impact of its tonal shift. I felt the game had to be fun and polished before attempting to mess with players. Addictive even. And the idea itself might still be novel enough for the casual, mobile crowd.
That’s how Solomeow’s Magic Blast began its journey.
At first, the name was Cat Magic. Ideally uninspired for a game that had to blend in with the crowd and catch players by surprise. The feline and magic themes seemed a good mix. To both fit in with, and stand out from similar games.
How the game changed over time
Change from Match-3 to Match-2
Cat Magic soon distanced itself from the match-3 design of Bejeweled or Candy Crush. I turned to Toon Blast for inspiration instead.
In match-3, to form matches players must swap adjoined objects. When a group of 3 or more is formed, it gets destroyed and might produce a beneficial effect. Depending on the shape of the group (line, L-shape, T-shape, etc).
In match-2 games, matches form automatically but don’t get destroyed. Whenever two or more, same-type objects are adjoined, they get grouped together. The gameplay consists of simple tapping to instigate changes on the board. When a group is tapped, it produces an effect, depending on how many objects are in it. I find that more satisfying, compared to sliding objects to form matches. I also live with an addict who’s been playing Toon Blast—daily—for over 4 years. Solomeow’s Magic Blast is dedicated to him.
Due to matches getting destroyed automatically, match-3 games tend to fall into long loops of automated play. A player makes a match, it gets destroyed; new objects fall and create another match, which also gets destroyed and new objects fall down… It can go on like that for a while. Not the funnest experience.
Since match-2 games require player input to destroy matches, this theft of agency doesn’t happen in the core gameplay loop.
Monetization consideration and premise change
By the time two months flew by, it became apparent I’d need at least four more. I had only finished implementing some of the core gameplay elements, like Pebbles and rudimentary level mechanics. I barely had any gameplay.
Programming was slooow. So was drawing and animating, as I focused on visual polish too soon.
There was a lot to learn, both with the C# language and Unity’s MonoBehaviour API. I also got stuck in a mess of ideas. In a desire to make the game fun and unique, I kept changing its core gameplay. And as it kept moving further away from references, the story premise also kept changing.
Months later, monetization thoughts started surfacing as well. After investing so much time developing Cat Magic, I could no longer view the game as a mere parody. This in turn influenced the core gameplay, story, and theme implementations. I couldn’t let players spend money on in-game items (even ads removal) if I knew the game would break down soon. In time, the idea of glitching out and breaking apart got abandoned.
Solomeow—the cat intended as the malicious AI with a friendly guise—morphed from villain to companion. Core gameplay settled on casting spells and growing magical power. Or rather, the feelings of unleashing juicy, destructive fireworks from fingertips. Somewhat influenced by my old obsessions: Diablo, Dota, and Dungeons & Dragons.
The game’s name also changed along the way, to Solomeow’s Magic Blast, which felt more descriptive and unique for the project. I still wanted to keep a sense of narrative through dialog with the central character. Not too much, just enough to give a sense of an evolving story to players.
Despite the glacial development pace, the whole process has been fun. Very fun! Testing the game is incredibly satisfying. Every time I playtest, I get sucked into playing longer than necessary. And all the effort of making it juicy and polished only increases the satisfaction potential of the already addictive, casual puzzle game genre. Monkey brain likes.
Noob programmer woes
The code was another matter. Less than stellar and downright HORRIBLE in so… many… ways. When I started, I didn’t know how to use dictionaries, inheritance, polymorphism, or even arrays! Massive methods seeped into each other (across classes) without rhyme or reason, and I sprinkled global variables everywhere. My favorites were the numerous conditional statements with dozens of oddly mixed conditions. Planning and Refactoring? What are those?
All the mistakes a total beginner can make. I only wish my code was as polished as having game states fit neatly into a massive, sprawling switch statement. But it wasn’t nearly that well organized.
It worked, though.
More, it worked with good performance on older, low-end devices. Those were my primary two criteria regarding the code. To perform well and have it work in any way possible. Succeeding at that increased the desire to learn more and get better. Occasionally, a logic problem would arise that needed weeks of trying and learning to solve. Frustrating! But beneficial in the long run for both learning and practicing resolution.
Restarting the project’s codebase
In June (2021), I restarted Solomeow’s Magic Blast from scratch, code-wise. A decision I’ve been mulling over for a year. The codebase reached a point where adding anything new meant jumping through countless hoops, wasting time and mental fortitude. The code was too far gone to refactor, and only a complete rewrite made sense.
It was a good decision. While it slowed down the game’s development in the short term, adding new things is so much simpler. The process is also solidifying and improving previously acquired knowledge. Luckily, many of the problems got solved the first time, so it’s just a matter of reiterating those solutions.
The restart did introduce hundreds of other tiny changes. It is hard to resist polishing and tweaking imperfections I’ve let slide in the past. I find the satisfaction borne out of polished assets keeps me sane(r) and more productive. The journey is as important as the destination, even if it goes against the ethos of “Just finishing things“.
A bigger downside is the desire to overly optimize and spend extra time on systems which were fine and worked, but “could be made better the second time around”. Sometimes it’s hard to surrender to a working solution, when a superior one may be around the corner. Of course, chasing perfection isn’t worth it, that cycle can be never-ending. But without “wasting time” to chase better methods, how can you acquire mastery? It is easy to get lost in eternal rework and optimization, but it’s just as easy to get stuck in stasis of doing the same, subpar things over and over.
Despite a surface desire to make something quick, decisions made along the way served a yearning to create something great… whatever that means. As the project grew, any nascent deadlines that tried to emerge got snuffed out. Discipline is a struggle when you let creativity take control.
There’s still some work ahead for Solomeow’s Magic Blast. The aim is a 2022 release. But it still feels less like a plan and more of a wish. I’m curious to see how that pans out. If you’re interested, stick around and find out what emerges from the chaos.