Hey all!
Whoa! 1k views in just one week? Amazing! As thanks, I’ve decided to write a post about the story behind Checkmate, showing off the first couple of (rather ugly) gifs I ever posted online, all the way up to the most recent ones!
Let’s get right into it!
I began developing a new project around Christmas 2015. I didn’t name it yet, but I wanted to build something in it. So that’s what I started out with.
In my previous (scrapped) project (called Bloxia), I experimented with randomly generated terrain and found that it wasn’t all that pretty. I was using a really old laptop (which I still own) back then, so I couldn’t add a lot more precision without losing lots of framerate.
I figured it’d be better to use tiles, instead of one “fluent” world. It would allow me to create blocky world for a reason, instead of not being able to do it performance-wise (and/or skill-wise, I also wasn’t capable enough of this when starting out!)

This is the first image I ever tweeted about Checkmate, and thus the first image to come online about Checkmate. I (almost) never used twitter before (this is back in december 2015 now), so naturally, there wasn’t a lot of response!
It was a really simple prototype: You click somewhere, it builds a thing. Worlds would be randomly generated, as seen below:

This wasn’t all that hard to set up. Generate a random heightmap, than colour the tiles based on the value inside the heightmap and you’re done. Top it off with a simple rectangle which supposibly represents water, make it see-through and voilá - Result!
I wanted to make a small thing where you could build stuff on a small island and you had tiny little people walking around the place as you were building things. I thought it’d be a cool addition!
Seen that this is obviously a very much key feature (and not just a small visual detail which you do at the end of the game, duuuhhh), I immediatly had to implement the feature. I decided to load in blender models, so I had a bit of freedom with modelling - This was my first time ever doing anything like this, previously, I’d hard-code vertex positions for every single model! sigh
Seen that I didn’t really know how Blender worked (like, at all), I was barely able to extrude a surface and making something man-like. It didn’t have arms, nor legs, but just a flat surface and a big head for it to stand on. I thought it looked like a pawn and I put it in the game.

So.. I added a pawn. Which made me think of Chess. - Why not, make a strategy combined with chess pieces? That’d be cool!
By the way, if you didn’t notice yet, I had no idea what I was doing; I just made up ideas on the fly.
And so it all began. I decided to work on the buildings a bit more. One of the ideas I had was to have just a single building, but you would be able to add interior and use that to define what type of building it would be!

Although this concept sounds interesting, I soon figured out that there’d always be one “best interior layout”, which would ruin the purpose of the interiors. It also was an amazing hassle to get working, especially with furniture rotation, etc.!
Next up was resource gathering (again: there was no plan, I just figured I needed resources in the game, so I added them).

You were now able to spawn a house and a “worker” would come out and sit in the pre-created mine. It would eventually return to the house. There were future plans to have a nighttime, where pawns would have to move back into their house.
Note that you couldn’t physically spawn pawns (yet). You could only create a house, which contained one of these pawns; Whether you liked it or not!

The ore counter was also born! You’d gain sooo much ore in such a short amount of time, though! That would require a bunch of rebalancing later!
You probably didn’t think about this in the previous gifs, but the pathfinding of the pawns wasn’t defined at all. I was still using a built-in pathfinding system from Game Maker, which (I have to admit) was fast and worked, but it wouldn’t support the features I needed in the future!
I decided to overhaul the system and create a new pathfinding mechanic based on A* myself:

The script worked out perfectly well, but it wasn’t amazing & very poorly optimized, although I’d find out much, much, much later!
Alright, so there’s resources, building, moving pawns - What is there more to want from the game? I figured that, since it’s a strategy game, you’d come across the enemy sometime soon and it wouldn’t be fair if you could just build stuff next to the enemy, right?

Introducing borders! A castle would spawn somewhere and you would now only be able to build inside your borders!
Note, how the buildings would emit smoke if a piece was occupying that particular building. It’s one of the few details which I’ve kept from those really old builds!
Fun fact: The gif above is totally set up. I had a tool to “draw” borders wherever I liked using the middle mouse button. I simply built stuff inside the borders!
It’s also around this period where I set up my IndieDB page (now deprecated) and made video’s every week showcasing the new features. I’d soon run out of progress to show every week and thus I’d stop updating my IndieDB page!
I was playing around with the game for a bit and decided that it’d be fun if I’d add some enemies for me to fight against. In true chess style, I made it so pawns would attack sideways only and made sure that one hit would kill.
I figured out quickly that it’s really irritating to click on the pawns when they’re constantly moving around in order to let them attack properly, so I added a thing which you could enable/disable and the pawn would just attack anything as soon as it came near it.
Guess what? That wasn’t a really good idea…
I scrapped the system entirely where you had to “lock” pawns to not make them move, disable/enable the attacks of each pawn, etc. It just wasn’t fun in real-time.
So I added turn-based mode:

Note, how all pawns are still moving randomly. This was still a thing from the early game and I quickly figured out that it was really annoying if you wanted to control your pawns when they were constantly moving into bunches of random directions. - I disabled the feature, but the code is actually still present inside the current release (although unused)!
If two pawns would come near each other, turn-based mode would trigger and you would have time to think about your moves! Suddenly, everything improved and it really became like chess!
Obviously, the turn-based mode needed a cool effect and that’s where the wave effect comes from.
I also started experimenting with maintaining your pawns, such as having to feed them. Quickly, farms popped up and soon, hunger became one of the new “features”!

And then I added shadows… And OH GOD THEY WERE UGLY!

I used a projectional light back then, which meant that shadows stretched out further, the further you were removed from the light source. This looked absolutely horrible. But I was happy with it for a bit, then. So I continued with it…
I added a board mode, which allowed you play on a simple chess board. This started out as a quick test thing to check how the pieces felt & to setup and test the AI, but it quickly became a standard feature for people to try and master the mechanics of the game.

With the new modes, I decided to also seperate the world board into “Sandbox mode” and “Classic mode”. Together with Classic mode came the new and fresh (FPS-draining) fog of war too.

Now the game suddenly got context. You’ll have to find the enemy and checkmate their king using chess pieces! First you build your army and city in real-time and finally you end up in turn-based when you get close to confrontation.
And so, I went on Greenlight!
I quickly got criticized for the awful shadows, painfully bright tiles and really bad managed saturation. I decided to resolve the issues as soon as possible and introduced a new shadow system, which are currently still in the game!

I finally got Greenlit at a Wednesday, somewhere after 1 month of being on Greenlight, with a miserable 40/60 (%) Yes-No ratio!
Either way, I made it, and that really motivated me to continue with the project, which had been slacking for quite a bit…
I pushed in bunches of new features; I introduced the research tree!

I also updated and improved almost all menus available in the game to look better than before and actually be useable!
I added group movement, allowing you to create teams and move those teams all together at once!

And, here’s a personal favourite, artifacts which had a chance of turning into something good (like free resources), or… a bird.

Finally, I even made a bold decision to change the entire building mechanic and replace it with a construction mechanic, where pieces now had to construct buildings, instead of allowing for them to be build instantly!

As the game got more and more ready for release, I asked some Reddit users for feedback on a Feedback Friday session, where I got bunches of responses giving me tips on what I should improve. I added things like “names when you hover over things”, “an indicator to show when a piece will move again in real-time”, “research descriptions” and a lot more open-door features which should’ve been in there from the very start!
Overall, this has been a great adventure and a big learning experience for me as a gamedev. Although the code is quite a mess on some parts (especially the older bits), it does sometimes remind me of the fact that you learn by doing. It allows me to look back into it and enjoy the old pieces of code of mine which (although bad), always show me how much better I’d do this time!
I hope you enjoyed this little devlog about the progress of Checkmate over the two years! You can also check out my moment on Twitter to see a bunch of the actual old tweets I sent out, right here!
I hope to continue the project for a bit longer, although hopefully not that much longer, I should finish this anytime soon now.
I’m almost there now! Let’s finish this project!
Have a great day and catch y’all later!
0 comments