So, last weekend I made Bad Puppy for Ludum Dare 25. I didn’t realize it as I was making it, but it seems that I’ve come up with a game that is really pretty fun. I’ve gotten many compliments from people who’ve tried it, and the more I’ve played it, the more it’s grown on me.
I think it’s worth analyzing the game to identify factors that contributed to it being fun.
Bad Puppy is cute. Everyone loves puppies, they are irresistible. So this makes the game inherently enjoyable — if the puppy works. I think I did a good job with making the puppy cute enough, using just a simple animation and some basic sound effects. The running and wagging animations are winners.
One of my most frequent feedbacks has been that the “graphics could use a little polish” — I agree. But I also don’t want to lose the charm of the simple/crude 8-bit pixel art aesthetic. I think the style works for the game, but it could be enhanced by more variety. That’s why I added an enhancement to make the sweater color random. I’m also planning on doing something similar to vary the skin tone of the person, and maybe create a selection of hair styles. There will definitely be a female person too, as soon as I’m able to create her.
The graphics for the pickup bonus items are rather crude, and I’d like to improve them as well. I’ll probably try something subtle, like adding shading and shadow to them, and see whether that works.
I’ve also thought about doing something with the drab grey background color, but I’m not entirely sure what I want to do with that yet.
The barking sounds, panting, and “good boy!” are also cute. I just recorded myself barking and manipulated the sample a bit in Audacity to make it sound 8-bit. Something about the lo-fi, crude aesthetic seems to enhance the cuteness.
Bad Puppy is a very simple game. It is also a relatively fast game (in terms of short play times). A typical play usually doesn’t last more than a minute or two. Short play makes the game enjoyable to repeat.
I made the game short by increasing the difficulty, and by providing no means of regaining lost meanness, or gain extra lives. This means the game must inevitably end, and a play is only as long as the player is able to make it with their skill. When you play a short game and the length of play is determined by skill alone, it tends to make you want to play again, because you just know you can do better the next time.
The controls are very simple. You run around, and bark. The controls are simple enough that they could be done with a 1-button Atari joystick. The game doesn’t need anything more than this.
Despite being simple from the user input standpoint, the motion that is governed by the controls have a little bit of polish in them. First, you don’t keep moving if you release the controls, but you also don’t stop immediately, either. Rather, if you are not pressing an up/down control, your speed in the y-axis decelerates gradually until it reaches 0; and the same for left/right and the x-axis speed. This gives the puppy a slightly “slippery” feel, makes the motion feel like a more natural curve, rather than orthoganal directions, and “de-diagonalizes” the motion so that the only way you move diagonally is if you are pressing in both the x and y axis simultaneously. It is a motion mechanic which feels natural as well as puppy-like.
The play mechanics and strategy are something I’m proud of. I can’t say I designed this from an ingenious flash of insight, but the way it came together, it felt very natural and like things were coming together in a way that felt right, and following my instincts to do the least complicated thing that seemed necessary worked well.
With the gameplay, there are a few things that stand in tension against each other, which result in a kind of dynamic equilibrium that makes the game fun.
- To bark at someone, you have to be close to them. You don’t get points for barking at someone who is too far away, you have to be a certain distance away from them or nearer. This means that you can’t be just anywhere in the room, and have to move in order to be in a good position to bark for optimal points. It also means that you have to put yourself at risk, because…
- When a walking person gets too near to you, they start to chase you. They don’t simply walk a predetermined course, unresponsive to your position. This creates a sense of adversary, as opposed to uncaring/ambivalent people who just walk and don’t react to your presence. It makes the game more interactive.
- Chasers give up if you get too far away from them, and go back to horizontal walking. This gives you additional incentive to run from them. But it can also influence the player to not run too far away from them, either, if you are trying to lead/herd them. Keeping you closer to the people makes the game riskier, and keeps the player on their toes more.
- You are faster than the people, which is good because if you weren’t, the game would end too quickly. You need to be able to get away. Puppies running faster than people is natural and feels right, and is in that sense realistic.
- The room wraps. You can take advantage of this to escape at the edge of the screen, rather than get boxed in by the edges of the room.
- People will wrap horizontally, but due to the way the homing AI works, someone chasing you will “lose” you if you wrap off the edge of the screen, effectively giving up chase. However “normal” walkers who are not in pursuit of you will continue to move in the direction they are heading in, and wrap. Since there’s no visual way to differentiate between these two modes, it makes the enemy AI difficult to predict, and forces the player to react rather than anticipate.
- People do *not* wrap vertically, and mostly do not move in a vertical direction unless they are in pursuit mode. After playing a while, a player can pick up on this and use it as a strategy to evade a group of people when they are surrounded.
- To bark at someone, you need to be facing them — barking does not increase your score if you are facing away from the person, even if you are close enough to bark at them. This means a strategy of always running away while barking will not work; you need to repeatedly turn around and bark toward your pursuers. Coincidentally, this is very puppy-like behavior, running away and then turning around and running back, but trying to stay out of reach.
- An effective strategy is to try to “herd” the people by taking advantage of their pursuit response, in order to get them to bunch up. When bunched up, there is a lot of room to run around and avoid petting. And you can bark at the entire herd, which multiplies the points you get per bark. Having an effective strategy available to the player which they can discover through play makes the game more fun, because it rewards them for playing and making the discovery, and gives them a tactic through which they can feel they have achieved mastery over the game.
- To effectively counter the herding strategy, and prevent people from bunching up too much, I added an AI behavior, whereby a person who has been barked at too many times (which is randomly variable) will run away. Run away mode is mostly identical to walking mode, except that the direction is always away from the player, and the trigger distances to return to normal walking mode puts them a far enough distance from the player that they will not immediately revert to pursuit mode. The result of all this is that after a short time of successful herd-barking, the tactic’s reward diminishes as people start running away, and the risk increases because the retreating people spreading out makes the room more crowded, and it becomes harder for the player to avoid petting.
- The original version of the game lacked bonus pickup items. I realized quickly that with the player having only one thing to do, the game was a bit too one-dimensional and did not offer enough of a replay value. Adding the bonus pickups gives the player a secondary objective of collecting the bonuses.While this is completely optional, the game really seems transformed by presenting the player with temptation and giving them something else to do. Without the bonuses, a player can focus completely on avoiding petting, and will tend to last longer. With bonuses, there’s just enough temptation to try to pick them up that they become willing to take risks which will result in them getting petted a little bit, and the attrition wears the player down over time, reducing average play time. A clever player might see through this and decide that the way to get the highest score is to ignore the bonuses and focus on defensive play, trying to score only through barking, and picking up bonuses only accidentally. This might well be a better long-term strategy, but the value of the bonus items increases dramatically over time, which puts the value of going after them at a level where it seems worthwhile if you’re trying for a high score.
A few players have suggested adding something more to the gameplay, but I’m not sure what changes might improve on this without disrupting the dynamics of the core mechanic. I’ve thought of a few things, and will be experimenting with them in time. But sometimes knowing when something is complete and when not to add more is where the real design talent is.
I think there are many opportunities to polish what I’ve built so far without touching gameplay — an online scoreboard feature would be a great way to enhance the game and get people playing for global bragging rights, for example.
I’m interested in feedback, so if you’ve played the game and have something to say, please drop me a comment below or at the LD submission page, or tweet at me.