Recently, I wrote up a design analysis of my game for Ludum Dare 25, Bad Puppy. Mostly, I had positive things to say about what worked about the game design. Having continued to develop the game since then, and having played many more hours in testing and for fun, I’ve noticed some flaws in the design, too, so I feel like talking about them.
Difficulty depends on display size
I did all of my game development on a 1680×1050 screen. When I developed the game, I wanted it to play in fullscreen mode, with the room scaling up or down to fill the display. I coded a routine that dynamically sized the “room” to the exact size of the display. But, although the room changes size, the player and enemies do not. Since they do not scale up or down, this means that on a larger screen, the player has much more room to run around and avoid the enemies, which makes the game much easier; conversely, on a smaller display, the game is much more difficult. I felt like the game was about “just right” at 1680×1050, which means that above that size it’s probably too easy, and below, too hard.
This also means that high scores are not directly comparable on different systems. I will have to keep this in mind when I eventually implement the online highscore system. Either I’ll have to standardize the room size, which involves its own trade-offs, or I’ll have to create different scoring categories for each screen resolution, and then do some order-by stuff with the query that displays the rankings, which fragments the player community.
Another shortcoming, on the Instructions screen, the text cuts off at the bottom if the resolution is smaller than 1680×1050. I need to fix this, but haven’t gotten around to it yet.
Safe spots are places in a game where it is impossible or dramatically harder to get hurt. Many games, particularly in the NES era, featured “safe spots” as a kind of strategic place where you could safely attack certain enemies, especially bosses. Safe spots can ruin gameplay if they make the game too easy. The worst offenders are games where you can just sit in one place, and hold down the attack button, and win. There is no difficulty to such a game, beyond finding the safe spot in the first place. Many games have temporary safe spots, which are better, because they give the player a short-term advantage that they can exploit, but they still have to remain actively engaged in order to prevail, and usually learn a pattern, or a behavioral trick that they can use to manipulate the AI to make the enemy do something stupid, like get stuck or attack in a way that always misses.
Bad Puppy does not have a static safe spot where you are always safe, but it does have a certain amount of exploitable AI behavior that gives rise to a dynamic safe spot. Because of the way I constructed the hitbox for the AI petters, if you walk upward you can avoid taking “damage” most of the time, as long as you can avoid walking into the bottom of a petter who is above you. The AI will continuously home in on you, so you always have to keep moving, but if you can run around the crowd of petters, they get herded into a bunch, and if you then stay above them, escaping through the top of the room when necessary, it’s pretty easy to avoid petting.
A skillful player should be able to discover effective tactics and use them in order to play for a better score. As a designer, I do want there to be ways to play that the players can discover through trial and error that will lead to improved scores. Ideally, though, the gameplay should be rich enough that there are a variety of valid approaches, and not one dominant strategy that breaks the game.
One of the weaknesses of Bad Puppy is that the gameplay is a bit shallow in this regard. I noticed this early on, so my very first post-compo improvement was to add a bonus pickup system. In retrospect, it was a pretty glaring omission from the original design. I wanted a retro style, and bonus pickups are a very common trope in retro arcade style games. Even though picking up the bonus items is completely optional, it still seems to dramatically change the way people play the game. People want to grab the bonuses, and are willing to take risks to get them, even though all they get is points, and even though it is safer to just concentrate on avoiding people and herding them.
Still, a frequent suggestion that I’ve received from players is to add additional mechanics to the game. They want the puppy to bite, or pee, or do something else besides just running and barking. So while the bonus pickups definitely added some depth, I’m not sure that they are enough by themselves.
All the other post-compo features that I’ve added so far have been cosmetic enhancements — adding a female petter, varying the skin color and clothes colors. They help make the game less visually monotonous and add flavor. I haven’t added any new gameplay features since adding the bonus system because I’m not yet sure from a gameplay standpoint what the game needs. The game feels a bit one-dimensional, but, aside from that, what’s there feels pretty balanced and fun, so I’m not sure what I should add next, or how it could integrate to the whole that is there already.
One of my goals with the You Are The Villain theme was to create a harmless villain, because I just couldn’t stomach making a game about a being a villain on the same day of the Sandy Hook shooting. And my original concept was to make the puppy a reincarnation of Hitler, who was weak and powerless, all bark and no bite. I liked the idea of a powerless Hitler. I didn’t want to make the puppy so bad that he could actually hurt people, and I’m not clear how either a pee or a bite mechanic would add depth to gameplay. The existing gameplay, while shallow, is pretty solid, and new features should not feel “tacked on” or ruin the balance of existing play mechanics.
When adding gameplay features, I think it’s important to be gameplay-centric in your thinking. The suggestions I’ve received, I think, have been character-centric; the feedback feels like it came from asking the question “What else do bad puppies do?” In my opinion, merely adding features to the puppy to give it more attributes of a real-life puppy would not be good for gameplay. Better, in my opinion would be to make observations like, “I’m running away all the time. I find myself wishing I could get the upper hand.”
One thing that could lead to deeper gameplay would be a mechanism that resulted in some sense of advancement. It would need to be necessary — something the player has to do in order to keep playing, and that gives the player a secondary goal and sets up internal conflict between barking/running and whatever the secondary goal is. I plan to explore this idea and see what I can come up with.