Puzzle Fantasy – Charity Game Jam Postmortem


During the 24th – 25th of November, we participated in the Charity Game Jam hosted by Christer Kaitila. As the name suggested, the jam is to raise awareness and help raising fund for two charities which are Make-A-Wish and Kiva

The theme for this jam is NES, the Nintendo Entertainment System. It’s always been something we wanted to do but never got around to. It’s true that the games on our site are mostly in pixel art style, but none of them follow the NES technology limitation, which is 64 colors with a resolution of 256 x 224 pixels. Seeing that the game we make will be presented in the Funkytron, we are even more excited!

Our Result

Here’s what our final game look like!

Title Screen of Puzzle Fantasy with Funkytron overlay.

Play the game : Puzzle Fantasy

Simply put, the game is a clone of Samegame Fighter by Hojamaka Games with our own twist and variations. This was actually not what we planned at first. While the graphic theme stays the same, the gameplay was changed completely during the development process, which I’ll discuss later in this entry.

Day 1

Choosing Tools

We started with choosing what tools to use for this project. We wanted to make it an html5 game that is playable on mobile browsers as well as desktop’s ones. At first I went with TreSensa’s TGE-SDK, considering I’ve always wanted to make something with it.

However, after I got some basic game scenes to work, I can see that there might be some problems coming up later on. This is mainly because the library is still new to me. The documentation is also lacking at the moment, given that the SDK is still in its early stage. So while the SDK has potential and is capable of making a game that runs on Android and iOS mobile devices, it was not an appropriate choice for a 48 hours game jam for me.

I went back to enchant.js, the library that we have always used for games on Coffee Dog Games. I had just finished writing a spritesheet manager class for enchant.js, which allows me to use a spritesheet generated from TexturePacker easily. Seeing that I won’t be spending much time just to get started, I decided to go with enchant.js

Game Design

Being a fan of puzzle and RPG games, we’ve always wanted to do something similar to BioGems by Dom2D. We love the idea of having each gem representing and action, making the game’s pace much faster than the resource gathering approach like Puzzle Quest. Hence, we decided to make a BioGems clone with Final Fantasy theme.

Mockup image of the game's first idea, using graphics from Final Fantasy 1 from NES

Mockup image of the game, using graphics from Final Fantasy 1 from NES

Nevertheless, we didn’t want our game to be just a HTML5 version of BioGems. We want to try doing something different, gameplay wise. One thing we noticed in BioGems is that each character is not that much different in terms of their ability. While it is true that their stats differ, what’s more obvious to the players are the graphics and animation. Since we only had less than 48 hours, making awesome animations for all enemies and players like BioGems was out of the question.

Instead, we took a look at the Special Attack gem in BioGems. In the game, all special attacks are the same, which is a higher damage version of a normal attack. So we decided to try adding special properties to each character’s special attack.

For example, Poisonous Mushroom enemy’s special attack would also poison the player, decressing their health every turn. Golem’s special attack cannot be countered. These would require players to come up with different strategy for each enemy.

Since we’ve already made a match-3 game before in Unity/C#, we thought that it would be easy to port the code to JavaScript with enchant.js, and we should be able to finish the game within the given time. We were wrong.

Day 2

When a Programmer Said 5 Minutes, They Meant 2 Hours

If you haven’t read Programmer Time Translation Table by Anders Abei, you might want to check it out. It’s highly accurate. Porting our codes from our old match-3 game to JavaScript is not so straightforward and took longer than we though.

And then came the unexpecting news. While working on the game, I got a call from my co-worker. He told me that he just caught a cold and wouldn’t be able to make it on Monday class. This meant I had to fill in his spot on Monday, which was the next day. It also meant that I wouldn’t be abel to stay overnight working on the game like I planned to. This cut down my time on the jam by around 6 hours.

The news affected my performance. I was now under pressure, and the basic system of matching and erasing the gems weren’t even finished yet. After 4 hours this was what we got.

The first board with swapping and matching working correclty.

The board with swapping and matching working correclty.

While the basic system of a match-3 game was finished, it’s still far from BioGems. All the actions must be put in a queue, and the character will execute actions in the queue one by one. Not to mention porting the A.I. code. At this point, I could see that the time wasn’t enough.

Even if I could finish this system , there’d still be a lot more stuffs to adjust. In BioGems, the average damage is a two digits number. There are also various parameters to adjust, meaning tweaking the game to feel just right would take time. On top of that, coding each special skills for each character would take time as well. And with different skill, each enemy might require different AI as well. At that moment it was clear to me. If I sticked to this plan, I would fail. I wouldn’t be able to make it in time.

Coming Up With a New Design

We did not want to give up. We just failed one game jame before, which was F*ck This Jam, due to me catching a cold during that time. Failing to finish this game in time would mean we fail two game jams in a row.

I scrapped the BioGems idea, and looking at what we had, trying to come up with what I can do with them. It’s still have to be a puzzle game with RPG elements. Then I realized I used to make a PopStar! clone called Professor Gatou’s Jewel Hunt. Looking at that game, I recalled a similar puzzle game I played last year, Samegame Fighter.

I started considering adapting my game idea to Samegame Figther. Samegame Figther deal with mainly 1 digit number. And there aren’t that many parameters, which means balancing the game won’t take that much time to adjust the game. The game mechanic itself is also fun and challenging, although running out of block means game over is a bit brutal. We decided to remove that and refill the blocks once the player runs out of move instead.

A screenshot of Samegame Fighter by Hojamaka Games

A screenshot of Samegame Fighter by Hojamaka Games

Next, we thought about what we could do differently, or combining it with the old idea we had. In Samegame Fighter, there are two blocks that are essentially the same thing : the sword and the axe blocks. What if we make them different? What if we make one of them a special block that differs depending on the character you choose?

I really love the counter attack gem in BioGems, so Martial Artist was the first alternative class that came to my mind. Knight’s special gem would be an axe that deals extra damage, but Martial Artist has a counter attack that can be stacked up until it’s’ activated. By giving different character a different block set, it should change the play style greatly.

To find out if there’s anything I could do diffirently, I started playing Samegame Fighter again. I went to stage 4 or 5 in the game, where I fought a Salamander. The Salamander’s attack power is 0, but it deals 7 damage to the player, ignoring player’s shield. I asked myself, why can’t a player do the same? As you might have guessed, that was when I got the idea for the game’s last class – Mage. The Mage is given an unblockable attack, but starting with very low life points.

Character selection screen in Puzzle Fantasy

The final three classes in the game

Thanks to Piti‘s excellent skill, he could finish all of the graphics I need within 3 hours, just in time when I finished rewriting the game!

In the end, we could finish our entry in time. And I still have time to prepare for tomorrow’s class!

What We Got In The End

We got to try something new with an interesting concept from Samegame Figther. It was unfortunate that we couldn’t finish what we planned at first, but I’m glad that I could finish the 48 hours challenge and didn’t fail two game jams in a row.

Our testers also love the game and how different each class is. We think this is a start of something fun and we got so many ideas to expand or adjust the game. Some of which are as follow:

  • Re-design of the rage system. The problem is the game can be too frustrating when there aren’t many blocks left. Your attack won’t deal any damage to the enemy. After a long discussion, I’ve decided to solve this problem by basing it from Hebi Quest, an rpg game that I considered it to be one of the best indie RPG games.
  • More classes. We got so many ideas for classes, as well as giving each class a passive and an active skill. Maybe it will be something like perks or traits like Dungeon Raid class system.
  • Achievement. Our testers want something to show that they have cleared the game with that class already. Currently we’re marking the character that you already clear with ‘*’, but this should be something more graphically satisfying. Maybe a big golden star on top of the character.


The jam was a really fun experience for all of us at Coffee Dog Games. We were all happy to make it through and finished the game in time, despite of what happened. It was a really big morale boost and we are looking forward to another jam in the-not-so-very-near future. Big thank you to Christer for holding the jam, and every developer who participated!

We were also glad to hear that people like the game, as well as many suggestions. Currently, we are thinking about making a new Puzzle Fantasy with all the improvements we listed above!

Thanks for reading! Don’t forget to visit Charity Game Jam for other games as well!


Leave a Comment

Let us know your thoughts on this post but remember to place nicely folks!