Friday, May 17, 2013

Post Mortem: The Proper Care and Feeding of Your Demons

A new Game in Ten Days (GitD) jam was started in Kongregate last week, this time with Collection as the theme. Every time I hear of a new GitD contest, my eyes mist over, and visions of a game start playing before my eyes. If I didn’t have other projects ongoing, I’d probably join every GitD contest as they come just so I could materialize the visions I see before me.

For this month’s theme, I chose to make a game called “The Proper Care and Feeding of Your Demons.” It’s basically a match-3 game where the objective is to defeat your rivals in astral combat by summoning demons to fight for you. Each time you defeat an opponent, you learn how to summon one of his demons. In my game, you can collect up to six demons to summon, but you can only pit up to four at a time in combat. The concept for this game is partly inspired by Pokemon of all things.

Pokemon wasn’t the only inspiration I drew upon. Prior to the contest, I had recently bought a game that was on sale in Steam called “Puzzle Kingdoms.” Like the Puzzle Quest series before it, Puzzle Kingdoms is a match-3 game. Unlike Puzzle Quest, where matching tiles gives you the mana to cast spells, matching tiles in Puzzle Kingdoms allows you to ready the troops at your command for an attack. I liked the tactical aspect of this game, so the mechanics that I came up with isn’t too far off from that of Puzzle Kingdoms.

In my game, players are presented with a 9×9 grid filled with sigils, each of which represents an emotion. Demons feed on the emotions that they are associated with, so players need to make enough matches of their particular sigil to summon them. Once a demon is summoned, players will need to match the minimum number of sigils that the demon needs to get it to attack.

By the time I was deep into the development of this game, I started to worry that deeply religious people might take offense to it. Fortunately, religious beliefs were never an issue among the players who commented on my game.

My game didn’t win the contest, but it didn’t do too shabbily in terms of number of votes garnered. Early during the voting period, feedback was few and far between, so I had to encourage voters to post their comments on the games. It looks like my encouragement bore fruit, because our entries soon had plenty of good feedback from the voters.

Raw Feedback

Here are the comments that I got on my game:

  1. Love the graphics, the humor, the theme. Not such a fan of the gameplay (too much randomness, not enough diverse effects, not clear who attacks what when), and the music after the first two loops. Proper theme fit.

  2. Proper Care and Feeding of your Demons gets my (hypothetical) third vote. I love the professionalism in this game. The reason I didn’t give it my second vote is because I personally have a moderate distaste for these kinds of games. I must still admit that it is very well done.

  3. Feeding Your Demons: You were my third place choice. Love the menu, love the concept, though you didn’t really hit the theme too well. It’s very hard to plan in these games, but maybe it’s because I’m bad at them. random moves would give me 12 combos that I never could have foreseen, and I never got any benefit from. overall, too luck based, and very easy to win.

  4. First thing instantly apparent. Great art! Got confused abit about how to actually play until I read the description. I think I managed to break the game though. It seems to be stalled without me being able to click anything. (I think I was randomly clicking around the board and that it read me trying to swap 2 gems on the board?)

    Alright a smoother run 2nd time around. Interesting concept for me, but as others have stated it was very reliant on luck. Would be interesting to see more varied styles of attack, as well as more strategy in choosing which sigils to take. (Such as activating certain special abilities of demons that have different effects, both on the enemy and on the board itself.)

  5. Nice implementation, though as others have said, it is far too luck-based (which is a common problem for those types of games). Maybe have the sigils that drop in be inactive for two turns (thus not being auto-collectable for the current player or their opponent, but also allowing the opponent an opportunity to disrupt any auto-matches that would occur for the current player)? Or having the dropped sigils be “blanks” that would determine their type based on its adjacent sigils’ type (thus making any auto-matches rare; it would probably be best to have a weighted random selection, where the most common adjacents get the least weight)? Or perhaps the dropped-in sigils could be inactive until an adjacent match is made (though this would potentially still allow auto-match chains)?

  6. Fun game mechanic. Not sure about the demon stuff, seeing a ton of combos is cool, because usually that is good… then you realize they’re all useless and it’s like :/ Also matches were too esay, didn’t lose when I didn’t know the rules, then once I did I was winning before they could even summon them

  7. I’m not concerned with the amount of luck involved. The battles are long enough that one or two big combos won’t ruin your chances. I spent enough time labouring over many decisions to feel as though I had sufficient control over my fate.

    You probably shouldn’t be able to use more demons than your opponent. Not only does it make for some easy fights, but it meant there was little need to consider the differences between the demons and make strategic selections. You just play them all until the final round.

    As for the theme, I’d have been more impressed if I didn’t have the full set until after the last fight.

    Kudos for start muted.

  8. Interesting start to the game. The graphics are very cleanly done and most of the UI looks professional. Navigating your way to look at your Demons and back to a fight is pretty confusing, though. Once the match starts things go a bit down hill. The matches seem to mostly be about placing your pieces and hoping you get a seriously long chain. The game also seems to bug out sometimes and cause your creatures to attack on the other players turn. For that matter telling the difference between your turn and the other players turn can be quite the hassle unless you are watching the boxes around the player icons. Having some sort of pop up over the center of the playing board for a second that shows the current players name might go far to fix that.

    The primary issue I have with this game is that while it covers the theme as you have to collect the Demons to fight with it is secondary to the gameplay of the game.

  9. I liked the idea behind this, but it was a little tricky to get into, not enough was explained or simplified. I found I could use my opponents sigils, I don’t know if that was inentino or not. Gameplay was too slow and froze when a board icon went missing entirely. I didn’t really know how to play effectively, eg whether certain icons were better to clear than others and so on. Polish it it a ton more!

  10. I loved the idea but the actual combat has too much luck involved in it for my taste also not a fan bejeweled

  11. Simple match3, I know, but I liked it. There was a bug when I played it: I fought the opponents, from left to right, and accidentally clicked the second-to-last guy twice. Beating him a second time completed the game, before I even fought “Wicked Wendy.” Also, it’d be cool if I could choose my character name/avatar…unless you planned on building an actual story around ol’ Sam. Anyhow, when a game holds my interest all the way to the end, it’s done something right. Nice job. Maybe for polish, give the demons different-looking attacks (Ifrit should be throwing fireballs, not lightning bolts!) By the way, I quite enjoyed the music. Where’s it from?

Common Points Raised

I got some really good feedback on my game, so much so that I’d like to list the different points raised and reflect on how I might address them.

Randomness of the Gameplay

Early during the development of this game, I was startled with how often a cascade of successive matches was made whenever a player made a match. In the Puzzle Quest series as well as Puzzle Kingdoms, a quick succession of matches in a single move would happen on occasion, but in my game, it was happening almost every turn. I didn’t have enough time to address this particular problem, but now that the contest is over, I’ve had time to figure out what was going on.

Apparently, there are a number of features in my game that contribute toward the frequent random matches that are made.

  • What qualifies as a match. In many match-3 games, an adjacent set of matching tiles have to be in a single horizontal or vertical line to count as a match. In my game, however, as long as the matching tiles are adjacent to each other, the game considers them to constitute a match. Hence, L-shapes, T-shapes, or any other shape involving horizontally and/or vertically adjacent tiles of the same type are all considered matches. This is also how Puzzle Kingdoms counts matches, but it should be noted that for some reason, Puzzle Kingdoms doesn’t have frequent random matches the way my game does. What I like about this mechanic is that it is easier to match more tiles when they don’t have to be in a single row or column. It is easier to make matches in this manner, but it is also easier for random matches to appear. I’ve verified that if I were to consider only adjacent matching tiles in a row or column as match, I would significantly reduce the number of successive random matches that take place. With the combat mechanics as they currently stand, however, battles would also take much longer.
  • The size of the grid. I’ve found that if I were to reduce the size of the grid, I would effectively reduce the chances of making any match, deliberate or random. The size of my game’s grid is currently 9×9. By comparison, the grid in Puzzle Quest is 8×8, while that of Puzzle Kingdoms is 7×6. Even with a to 5 ×6 grid in my game, however, the number of randomly occurring matches is still disconcertingly high.
  • The number of different tile types. My game has only six different tiles, each of which represents a particular emotion, whereas Puzzle Quest has eight different tiles. Puzzle Kingdoms also has eight different tiles, but one of them (the wall) cannot be used to make a match. It stands to reason that the more tiles there are in a match-3 game, the less likely it is for a random match to appear.  Nevertheless, I’ve found that increasing the number of tiles in my game will only result in a slight reduction of random matches and makes it more difficult for players to produce matches.

The fifth comment that I received on my game presented a number of suggestions for reducing the occurrence of random matches, but they all look unnecessarily complicated. It seems that my best options are to either consider only adjacent sigils within a row or column as a match or to reduce the size of my grid to 7×7 and increase the number of sigils to eight. I’ve tried both, so I know that either of these options will significantly reduce the number of randomly occurring matches.

Needs Different Attacks, Special Abilities, and Combos

Now this is a very interesting set of comments. Although the demons differ in terms of stats, these differences may not be obvious to some players. From my playtests, I’d say that the differences are significant enough to affect the gameplay, but I could have done more to distinguish the demons further if only I had the time to do so. Now that the contest is over, I guess I have as much time as I need.

All the demons in my game have only one kind of attack. It would be interesting if they could launch different attacks depending perhaps on how the sigils are matched. Even more interesting would be to find ways to combine the demons’ attacks to launch special combos. Finally, the suggestion that certain effects may be able to affect the board is seriously worth looking into.

Confusing to Play

During a battle, the only way to tell whose turn it is is to check which player’s portrait has an orange frame around it. In the meantime, a lot of sigil matches and demon attacks may be occurring in rapid succession, making it confusing to tell who is attacking whom. It doesn’t help that attacks are indicated by having a bolt of lightning instantaneously arcing from the attacker to its target. To make matters worse, none of the figures in my game are animated, which makes it even more difficult to distinguish the aggressor from the victim.

The way to solve this issue is to have more graphical indicators of whose turn it is. The orange frame around the active player’s portrait is not enough. I can dim the portrait of the inactive player perhaps. I can also animate all the figures to make it obvious which ones are attacking and which ones are taking damage. In addition, I can have the player avatars do appropriate gestures for swapping sigils, summoning demons, and commanding them to attack.

To top it all, my game lacks a tutorial, which would have alleviated some of the confusion that arose. Unlike most match-3 games, swapping tiles in my game involves choosing a tile from the player’s set of tiles and exchanging it with one of the tiles on the board. Also, depending on the player’s roster of demons, some tiles are important to match, and clearing others has no effect at all. If I had enough time, I would have included an in-game tutorial that explains how to play and win.

Too Easy

During my playtest, the sheer randomness of outcomes meant that there were often times when I would lose despite my best efforts. Consequently, I decided to err on the side of making the game too easy because I didn’t want to risk frustrating my players to the point that they wouldn’t want to play my game anymore. Neither extreme is ultimately acceptable, however, so the only solution is to put in lots of playtesting and to tweak the game’s difficulty in the process.

Great Aesthetics

In truth, I didn’t make most of the art myself. I downloaded them from the Internet and gave credit to those whom I could identify as the artist. I’m actually a capable artist myself, but I’ve learned that trying to make a lot of good art during a game jam gives me precious little time to program and test the game. Nevertheless, I was responsible for putting everything together in an aesthetically harmonious way, which makes me glad that I do have some talent in the arts.

That said, I’m not entirely satisfied with the Facebook-style interface that I designed. I would have preferred to show a section of the city where the player character lives. The city scene would have buildings that players can click on to bring their avatars inside, where they could then meet other characters for them to interact with. All this would have needed far more time to implement however, so I had to cut corners by making an interface that looks a bit like an office application. For an expanded version of this game, however, I would prefer to go with my original idea of having an interactive city map.

Good Concept

I’m not sure if what was meant here is that demon summoning made for a good game concept in itself or if the match-3 mechanic for demon summoning was good. Personally, I think that sigils as tiles, a grid that is reminiscent of magic squares, and the subject of demon summoning all combine in a cohesive way in my match-3 game, but of course I’m biased. On the other hand, if I were to expand this game further, I would probably have to consider how to make it palatable to players who uphold strict religious beliefs. To me, the demons in my game are a kind of metaphor for strong emotional forces and how they can drive people to do either wonderful or terrible things. I don’t want to lose that metaphor as I believe it has some potential for a good story. Nevertheless, it is not my intention to espouse real-life attempts to summon demons, just as game developers who let players take on the role of gangsters do not espouse a life of crime. This is an area where I will have to tread carefully.

Doesn’t Fit the GitD Theme Well

This is the least of my worries. I have my sights set on a much bigger prize than winning the contest itself. I want to be able to make games that are popular and highly rated on a consistent basis. As far as I’m concerned, the GitD serves as both a source of inspiration and as a trial balloon of sorts. I find that it is a good opportunity to rapidly prototype a concept and see how well it is received. From the looks of it, I’d say that this particular game may be worth developing further.

Voting Results

It seems that my game development skills are improving because I got a good number of votes this time around. Among the twelve entries in this month’s GitD, my game got sixth place, a decent showing if not a particularly good one. I interpret this to mean that there is some potential in my game that may be realized if I address the issues raised.

It should be noted, however, that I only got about a third of the votes of the first place winner. Apparently, the frequency with which random matches would come up was the most critical issue among voters. Also, some voters prefer action platformers to match-3 games. I, on the other hand, dislike action platformers and prefer more cerebral entertainment. There is probably a much bigger market for action games than match-3 games, but I prefer to develop for a niche I enjoy than one that I don’t.

Another issue that voters took very seriously was whether my game fit the Collection theme. Some voters believed that it did. Others didn’t think so. This issue isn’t really important to me as far as learning how to develop enjoyable games is concerned, but I can’t help but wonder if my game would have gotten more votes if everyone allowed for a liberal interpretation of the theme. If it did, that would have confirmed all the more that I have a potentially good game in my hands.

Wednesday, May 15, 2013

Component-Oriented Programming

Over at the Kongregate forums, a guy named Drakim wrote a series of posts on a relatively new programming paradigm that has come to be called Component-Based Development or Component-Oriented Programming. Basically, this new paradigm does away with inheritance to create classes and builds software entities by assembling components instead. Using this paradigm doesn’t require new languages for component-based development. You can still use your favorite Object-Oriented Programming language as long as you avoid the temptation to use inheritance to build classes. In truth, there’s nothing to stop you from mixing and matching the two paradigms if you wish, but inheritance forces child classes to inherit all the properties and methods of its parent, whereas classes assembled with components will have only the functionalities that their components provide, no more and no less.

What I like about this new paradigm is that it solves an issue that I’ve been wondering about for some time – multiple inheritance. Most OOP languages don’t implement multiple inheritance and with good reason. Things can get messy pretty fast if the multiple parents of a class have their own way of implementing common properties or methods. With a component-based architecture, however, all you need to do is to build and slap on the components that each class needs, and you’re good to go.

All this is fairly new to me, so I’m in no position to talk about it at length. Instead, I’m posting the links to Drakim’s series of articles for future reference.