Player Perception

I recently finished an entry for Down2Jam. Some of the comments and feedback I got had me thinking about the difference between a complex system and a system that feels complex. Sometimes game development feels like a magic show; regardless of what is actually going on under the hood, the audiences’ enjoyment solely rests on their perception of what is taking place.

I was at World Market a few weeks ago because that’s what I do for fun sometimes. While standing in line for checkout clutching a tin of delicious Swedish cookies something caught my eye. Was that… a GigaPet? I had one when I was a kid, and in a moment of overwhelming Millennial nostalgia-induced impulsivity I decided to buy it.

This more modern version had a new feature: you could train your pet to do tricks to fill its happiness and discipline needs at the same time. First you select a trick (roar, jump, etc.), then your pet performs an action. If the action was correct, you give them a reward. Over time your pet learns and starts performing the correct action more often. It was a simple mechanic but I thought it was kinda cool. And, naturally, I wondered if it could be elaborated on.


A while later I was getting ready to join Down2Jam 1 and the theme ended up being “train”. This was my opportunity to rip-off the GigaPet trick system and see if I could do something interesting with it.

In my entry Pup Cup, the player coaches a team of dogs to play Foosball. The idea was that you’d choose a signal and then indicate a spot on the field to a dog. The dog would sometimes go to that spot in response, and sometimes they would do something else. You reinforced correct behavior with a treat and discouraged incorrect behavior by beating their asses giving them a red “nono”. Eventually the dogs would “learn” to move to specific points in response to different signals with varying consistency. During a match, you used the signals to control your team’s formation and hoped their training held up.

I’m sure this mechanic could be accomplished a million different really cool ways using machine learning or some shit, but this was a 72 hour game jam and I’m just a regular joe-shmoe programmer. The system I built was dead simple: each dog’s “memory” amounted to a few listed coordinates with weights attached to them, one set for each signal. They were all randomly generated at first, then coordinates were added to the list when the player gave instructions and weights were adjusted when treats or nonos were given. That’s really the extent of it.

Other than being mildly shocked that my code worked at all, I was surprised by how organic it actually felt when I tested it the first time. Judging by how some play testers started swearing at their dogs, I think some others felt that too. In spite of the simplicity it did a great job creating the illusion that these dogs were kinda smart and also kinda adorably dumb.

This also reminded me of my Ludum Dare 57 entry Lamplight where I received a comment that the enemy AI felt good. My dear friend, enemies moved completely randomly in Lamplight, there was no AI. But it felt like there was intention, which was great (and largely accidental on my part).

On the other hand, anyone who’s been coding for a while knows what it’s like to work really hard on a bunch of changes, push the update, and realize that nothing you did is immediately apparent to any users. I suppose this would be the antithesis of a magic trick, like taking multi-vitamins. Are they actually helping? No one knows.


This is all just to say that as a game developer it’s important to keep in mind that the way someone feels when they play a game is one of the most important aspects. As a nerd I find complex systems cool for their own sake, but if you focus too much on the systems you risk ending up with a ‘neat product’ instead of a game. Sometimes simple systems supported by the right visuals and audio can provide powerful experiences. It’s honestly wild that a jumble of pixels, sound, and binary can come together to make a human feel things.