GAME.Minder Expo 2013

Last Saturday, I attended and spoke at GAME.Minder Expo, held at Shaker LaunchHouse. after taking ill in January and missing the 2013 Global Game Jam, this was a great day to jump back into the Game Dev scene.

It was a relatively small event, but still probably the biggest local game dev event that I’ve been involved with to date. Organized by Handelabra to promote their studio’s mobile gaming efforts and the GAME.Minder podcast, and local area game developers in Ohio. Turnout was almost 40% higher than expected, with the official attendee count at 136. The Keynote talk was presented by Ian Schreiber, a co-founder of the Global Game Jam.

A bunch of us CGD people had dinner with Ian and his wife, and he said that we are getting big. It has been wonderful to see the local independent game developers organizing and building up our community and create a scene, and to be a part of making that happen.

Members of the Cleveland Game Developers meetup were well represented. I gave a brief talk on GameMaker, Jarryd Huntley talked about Construct2, while Brian Gessler and Justin Demetroff delivered a talk on Unity3D. Ian Faleer and Stephanie Frankiewicz gave a talk on the Art of the Game. And the folks from HashTag Nerd had a booth set up. There were a few other presenters as well. Videos are still being uploaded, but a number of them are already available on GAME.Minder’s Youtube channel.

The evening event was a screening of the Kickstarter-funded documentary Minecraft: The Story of Mojang. The movie was excellent and inspiring.

GameMaker: Studio Builds to Ubuntu

YoYoGames announced today that they have released a new build target for GameMaker Studio: Ubuntu Linux. It’s great to see YYG supporting Linux as a target platform, even if GameMaker does not embrace opensource principles. To add the Ubuntu build target to GM Studio Pro, it’s $99; if you have a Master Collection, it’s a free addition.

Master Collection is becoming an increasingly good deal with all the additional components provided and any new ones that come out entitled to Master Collection licensees.

Any time YYG releases a major new feature for GameMaker, I revise my wishlist for what I’d like to see from them next. Here’s what I’d like to see in future releases of Game Maker:

  1. An upgrade path for developers with Professional to Master Collection.
  2. Native IDE for Linux and Mac OS developers. The day a Native IDE comes out, I may not need to boot Windows anymore.
  3. Flash build target. (I know HTML5 is supposed to be the future, but Flash is still a relevant platform.)
  4. Support for other source control, especially git.
  5. Integration of some standard, cross-platform GUI widget toolkit like Qt or GTK to make creating user controls and forms easier.
  6. Native XML support (not relying on extensions)
  7. Project templates for common types of games, eg platformer, rts, etc. with library or namespace-like built-in classes for common objects already implemented

Recent site problems

A few days ago, I noticed site traffic had suddenly dropped.

Graph of recent site traffic stats for csanyk.com

Day 1 and 2, I didn’t do anything. I had noticed that the traffic was unusually low midway through the day on the first day, and thought it was curious, but I didn’t really worry about it. I was pretty busy those days and didn’t have time to look into things. I figured it might just be a fluke, much like I will occasionally see a traffic spike, and that it might correct itself.

After the second day, I wondered what was up. Had I been de-listed from google? I checked, I had not. I started googling “sudden traffic drop wordpress” and read a few articles.

Then I noticed that wordpress wasn’t serving the site properly. I had only been in the admin console and didn’t check the actual site, but when I went to read the home page, the web server just spat out a bunch of encoded gunk.

At first, I wondered whether the site had been hacked. I logged into the admin console and now WordPress reported that one of the plugins I use was giving an error. I disabled the plugin, and the site started serving properly again. Phew! I removed the offending plug-in entirely, and things seem to be back to normal.

Traffic bounced back almost immediately — yesterday I lost about a half day’s worth of traffic because I fixed the problem around the middle of the day. Today, at around 10am I already had a little over 50 hits, which seems about normal. By the end of the day I’d expect to have somewhere over 100 hits, which is back within the normal range of what I have been seeing in recent weeks.

I’m still not 100% sure about a few things.

Site stats during the “outage” days were very low, but still not zero. If wordpress was serving corrupted junk, I would expect that the stats should have been exactly zero. Stats for those days show that certain articles were still able to be reached, albeit by a much smaller number of visitors than previously. So, I’m not entirely sure when the plug-in error began or when it resulted in wordpress serving corrupted pages. It could be that stats counting is off somehow (wordpress documentation suggests that it is somewhat inexact, although I don’t fully understand the causes), or it could be there’s some other explanation (does a visit to a google cache of my site somehow increment my stats, perhaps?)

I think it would have been nice if WordPress could have been a little more active in notifying me of the error. I liked that it displayed an error message when I logged into the admin console, but it didn’t do that until three days into the low traffic — I think probably because the account I normally use to log in with is just an authoring account that doesn’t have full administrative privileges. When I logged in with my account that had admin privileges, I saw the errors, and it immediately told me where the problem was so I was able to fix the problem quickly. Which, is great and all, but even better would have been if WordPress had sent a notification email to me, so that I would have been aware of the problem right away, without having to log into the site.

Game Jam 101 Lightning Talks

This Saturday, I’ll be at a Cleveland Game Devs meetup, where we will be giving lightning talks in preparation for the upcoming Global Game Jam happening later this month. I’ll be giving two talks, one on setting goals, and one on keeping the momentum. Following are my notes for the talks.

Game Jammer Goals

How to decide what to shoot for in your next weekend sprint.

A weekend is not a lot of time to make a game! To get the most out of your weekend, you need preparation and mental discipline. Having goals will help you focus and get the most out of your jam weekend.

So what should your goals be?

Have you made a game before, ever?

No?

Your goal should be to make a game! Easy as that.

Really, though, it is best if you have at least some game making experience before you try to fly solo. Do look for a team to join, and see what you can offer them. Focus on delivering a skill from your repertoire of strengths, and integrating well with the team. If you can get anything back from the team, hopefully it will be insights into skill areas where you are lacking, techniques that you can apply in those areas, or exposure to new tools that you can start to learn.

Yes… but never in such a short time!

If you have never made a game in a weekend before, likewise your goal can be to complete a game. It can be done, as proven by thousands of people. Before jams became popular, most people thought it took months or years to complete a game project. We know now that this simply isn’t so, and the amount of work that can be accomplished in a weekend can be incredible. Still, like running a marathon, it’s hard to believe until you’ve done it yourself.

It feels really good to have this accomplishment under your belt, so if you haven’t completed a Game Jam, this should be the only goal for you.

Even if you don’t make it this time, but still want to keep trying, then focus on learning what you can from the experience. If you weren’t able to complete the game you wanted to make, why was that? Did you lose track of time? Did you plan for more than you could possibly deliver? Did you struggle to implement something that you felt you could do, due to inexperience or pressure? If you couldn’t figure something out in the weekend, don’t give up – keep working on it after the jam until you figure it out. That way, at the next jam, you won’t be stopped by that failure again.

Don’t be afraid to fail, but try to fail early, and always fail at something new.

Yes! I’m a Jam veteran!

Then you can make a few more choices… completing the game may not necessarily be the most important thing once you’ve proven that you can do it. Be willing to take greater risks.

Once you’ve proven to yourself that you can do it, if you enjoyed the experience enough to want to repeat it, you should keep going on to bigger and better things. Participate in as many Jams as you can find time for, and make it a goal to do more with each new game, always improving on your last effort.

Where should you focus your goals?

This is a personal choice, and it depends a lot on where you’re at, where you want to go, and what your strengths and weaknesses are. Here’s a few areas to consider.

Learning/Experimentation. It’s only a weekend. If you fail, it’s no big deal. You only lose a tiny amount of time, and you can learn so much. So take risks. Try something you haven’t done before. Make your focus learning and experimentation.

Be willing to accept a failed concept, incomplete game, or failure to complete a submission. Ideally, you still want to make a game so you can show off what you learned and receive feedback on it, but it’s less important to have a good game than it is to learn from the experiment. If you want to have the best chance of having a finished game by deadline, limit your experimentation to one thing only. For everything else, stick with what you know.

I don’t recommend picking up a new tool to experiment with. Rather, do something different using a tool you know well. To complete a game in a weekend, you just don’t have time to learn a brand new tool that you’ve never used before. Using new (to you) tools won’t get much you recognition, but new game design concepts often do, even if they are not successes.

Still, if you really want to try a new tool, it can give you a taste of the tool, enough to give you a sense of whether it’s something you want to devote time to mastering.

Ideas for domains to experiment/learn with:

  1. Graphics
  2. Sound effects
  3. Music
  4. Controls
  5. Game mechanics
  6. Genre
  7. Setting
  8. Mood
  9. Story
  10. AI
  11. Level design
  12. Randomness
  13. Procedurally generated content
  14. Physics
  15. Particle systems
  16. Network
  17. Multiplayer

Each of the above is still quite broad – don’t be afraid to get much more specific when coming up with your ideas for experimentation. But do decide on the specifics late – once the theme is announced, and you are starting to come up with concepts for your game is a good time to narrow down the specifics of how you will experiment with in a domain.

Teaming. Step up and be a leader. Try to organize a team.

Or just be on a team. A team needs more than just leaders.

The thing a team needs most is do-ers, without ego, who can communicate. Never forget this.

Leadership does not mean making decisions for the group; it means helping the group to come to agreements about the decisions it makes together.

Community. When I say “community,” primarily I’m thinking of all the participants in the jam who are not part of your immediate team. This could be other groups at your location, or they could be other groups anywhere in the world.

The jam is when everyone comes together to make something and show off and share with each other. This is the best time to make new friends (or grow existing friendships), and get to know the community. Play and review games made by other groups – make note of who created them, and follow their projects. Make it a point to get to know the people and learn about them. Follow them on twitter, visit their web site, and learn about their other projects. Who knows, they may live nearby! Drop them a line and let them know you like their work.

The essence to community is giving. The community is indifferent to most of its members, but it recognizes their greatest contributions. To stand out, give the most. Exchange your knowledge and skill – be willing to sacrifice a little dev accomplishment for a little knowledge spreading. Make a game so you can get feedback from the other jammers. Give feed back on the creations of others. Write tutorials. Build and share your own tools.

Winning. If you’re a true pro, and your team is functioning like a well-oiled machine, this is what you should go for. Make the best game you possibly can in the time allotted. Go for it, try to win! Learn how the event is judged, and try to do well in those areas where you feel strongest. Focus on your strengths, or if you’re working with a team, let each team member focus on their strengths, once all areas of project have coverage. Your experimentation should be minimal – stick with what you know you can do well, and know will work. It’s all about coming up with a good design quickly and executing.

Take a balanced approach. Try to do a little bit of everything. After all, it’s pretty hard to complete a game without doing a little bit of everything. But still put an emphasis on one area or another.

For me, I try to take a balanced approach. I stick with what I know well for about 70-80% of the project, but try to make learning something new an important goal on top of simply finishing a game. I don’t care about “winning” the jam, but I want to do better than my last jam. I also try to be involved in the community in order to get inspiration from what other developers are doing, and to build reputation as a designer/programmer.

Be Flexible. The weekend will surprise you. Be adaptable to the surprises, because they offer you opportunities. The best things about a weekend jam are the things that you couldn’t have predicted beforehand. Don’t set out on a mission to complete a rigid list of goals, but have a number of potential goals in mind, and be willing to drop one in favor of another if the right opportunity comes along. If you try something and see quickly that it’s not going to work, or that you wouldn’t be able to finish it by deadline, it’s OK to drop the idea and go with something else.

Weekend goals vs. Long term goals

A very good use of your time in a game jam will be to incorporate your longer term goals when choosing your goals for the weekend. Successful people tend to set long term goals and work toward them by taking many small steps.

Use the SMART criteria:

http://en.wikipedia.org/wiki/SMART_criteria

  • Specific: Don’t be vague. Focus on a specific goal. If it is too general, you will rationalize and bargain with yourself that the goal has been met, rather than focus and work harder to achieve the goal. You can still be flexible with your goals while being specific, but if the situation dictates changing goals, try to change from a specific goal to another specific goal.I want to complete a game in the next 48 hours is pretty specific already. If you can, though, go further – I want to complete a game that incorporates teleportation. Or, Complete a game that uses the mouse for controls. Or, Complete a game that causes fear by imparting a sense of helplessness and sudden, surprise danger. You get the idea.
  • Measurable: If you can’t measure it, then you don’t know how well you did. Pick things that you can measure. This gives you something to aim for, and lets you re-calibrate as needed.Game design is hard to measure. How do you quantify fun? Still, there are things that are quantifiable. My goal is to rate 256 games for the compo. Or My goal is to place in the top 25% of entrants in the category of [x]. Or Create sprite animations for 8 different poses in the next 2 hours.But don’t try to make your goals based on arbitrary numbers. Try to pick numbers that are meaningful. It’s better to have a smaller number of well-done features than a larger number of weak features. What’s better, a game with 10 boring levels, or 1 really great one?Often, the easiest way to measure may be simple binary: either you achieved it or you didn’t.
  • Achievable: Don’t set yourself up for failure by picking something that you can’t hope to accomplish. You should have an idea of what you’re capabilities are. It’s fine to challenge yourself, but don’t set the goals unrealistically high. If you don’t have any clue at all how you’ll achieve a goal, step back and set a more realistic goal that you can achieve, which gets you closer to achieving the too-hard goal.
  • Relevant: Don’t pursue extraneous goals. Focus on what is most relevant to your larger goals.In a weekend jam, there’s just not a lot of time to waste. Focus on the essential features of the game you want to make. Don’t waste time on extraneous things.
  • Time-Based: Give yourself a reasonable window of time to achieve the goal. Assess yourself at that time and decide what to do next. But also check yourself before then to see if you’re on track.During a Jam, time is constrained as it is. You know you have 48 or 72 hours to build a game. I encourage you to subdivide this time and assess periodically where the project is at, and decide whether to drop or modify features in order to make the submission deadline.

 

Game Jamming 365

How to keep the momentum

  1. Be obsessive. Think about game development all the time. According to the Bureau of Unverifiable Statistics, men think about sex on average every six seconds. As a game developer, you should think about game development even more than this.
  2. Be persistent. Don’t give up. If you can’t figure something out, show off what you have been able to figure out and ask people for help.
  3. Set small goals. Pick small projects. Do things that are within your capability to complete quickly. Do simple, mini projects that aren’t full-blown games, but are good development exercises, or that can be useful reusable components in a game.
  4. Make time. At a minimum, set aside one night a week to be your time to devote solely to your projects. Arrange your calendar so that you can do this. Work over this minimum any time you can.
  5. Fill every possible moment. When you get into your project, you won’t want to stop. Find ways to put time in on your project. Carry a notebook around with you to draw and write up your ideas. Write yourself notes whenever you have a few seconds – at the bus stop, on the train, waiting for an appointment, in the elevator.
  6. Get back on track. Life will always intrude and take you out of “the Zone.” When that happens, figure out how to get back on track as quickly as possible. Deal with the distraction effectively and efficiently, and go back to development. If it’s a true life priority that’s calling you, then give it the attention it deserves, and resume your game projects when you can.
  7. See the Game in everyday life. Look around you, everywhere there are systems that could be seen as games. Teach yourself to recognize these patterns and then apply them in your projects. Art imitates life. Make up games about brushing your teeth, or walking your dog.
  8. Take a break. When you get exhausted, when you get stuck, when you’re not feeling it, when you’re wanting inspiration. Step back and give yourself time to recharge. Work on something else. Just relax. Meditate or exercise. Watch a movie. Hug someone you like.
  9. Play. Play games. Follow your favorite developers’ new releases. Return to your old favorites. Visit them with a fresh eye, think about what makes them successful.
  10. Release. Put your work out there for people to see. Give them easy ways to provide feedback to you. Use achievement statistics to collect data on how players play your game. Analyze the data to figure out how to make better games.

Ludum Dare 25 Rankings

I was pretty pleased with how Bad Puppy turned out, so I hoped that my placement in the rankings would be higher this time than my previous entries. I did see a modest improvement in my scores overall.

Bad Puppy LD25 Ratings

Ranking Category Score (out of 5)
Coolness 100%
#70 Humor 3.55
#274 Fun 3.04
#312 Audio 2.57
#426 Innovation 2.71
#450 Theme 3.00
#490 Overall 2.76
#526 Mood 2.47
#636 Graphics 2.18

The 70th place (out of 902 Compo entries) in Humor is the best ranking I’ve had in any category in an LD compo game so far. So hey, that’s something. I’m in the top 10% in the Humor category.

Comparing to my previous LD games, here’s how I did:

Category LD23 LD24 LD25
Coolness 56% 100% 100%
Overall 2.76 2.82 2.76
Innovation 3.41 2.58 2.71
Fun 2.62 2.58 3.04
Theme 3.34 3.20 3.00
Graphics 2.75 2.22 2.18
Audio 2.07 2.60 2.57
Humor 2.07 1.86 3.55
Mood 2.68 2.70 2.47

I’m a little surprised that I didn’t do better in the Graphics category this time around, since I actually had animated sprites in this game for the first time. And they were pretty cute, I thought, if primitive. But I am pleased to see marked improvement in Humor and Fun, which were the things I focused on when I made Bad Puppy.

Bad Puppy Design Analysis: The Bad

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

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.

What next?

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.

Bad Puppy: Design Analysis

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.

Mood/Humor

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.

Gameplay

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.

Controls

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.

Strategy

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.

  1. 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…
  2. 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.
  3. 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.
  4. 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.
  5. 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. 
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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.

New Game: Bad Puppy for Ludum Dare 25: You are the villain

Bad Puppy is my submission to the Ludum Dare 25 compo.

The theme, You Are the Villain, was a fun one. You play a “villainous” puppy who barks at people. Avoid getting petted for high score.

The more I play it, the more it grows on me.

Influential Games: Mountain King

One of the more memorable and innovative titles on consoles and home computers in the early 80’s was Mountain King by CBS Electronics. I knew it on the Atari 2600, but it existed on other platforms also, including Atari 5200, Commodore 64, Vic20, and Colecovision. It was atmospheric and spooky and mysterious and inspiring, and one of my favorite games of all time.

Mountain King (Atari 2600)

There were a number of things that made Mountain King special, and examining them in detail is worthwhile.

Non-violent, Yet Scary As Hell

There was very little death or injury in Mountain King. It had a theme of exploring, not violence. The biggest threat in the game was the clock running out. Things that would hurt or kill you in another game imposed a time penalty on you in Mountain King. Fall too far, and rather than die or take damage, you’re stunned for a length of time proportionate to the height of your fall, and slo-o-o-o-wly get back on your feet. The wait could be agonizing, making seconds seem like hours. On certain difficulty levels, there are time limits for accomplishing certain objectives, and in any case your remaining time rolls over and is added to bonus time which dwindles with each re-claiming of the crown, so you are always under significant time pressure and there’s a feeling of speedrunning when you’re playing for a high score.

Mountain King spider

There is one deadly threat in the game, a giant man-eating spider that inhabits the lowest levels of the mountain. You can’t fight it, only run from it, but it is not normally necessary to descend to this level, so it is mainly in the game to provide a sense of fear of the depths. If you accidentally fell to the spider level, the scuttling sound of the approaching spider would fill you with panic and dread, and make you scramble toward safety with new urgency.

Audio Innovator

Most home videogames of the day did not feature music at all, or if they did, it was little beyond an introduction jingle that lasted a few bars, or a repetitive loop that quickly became annoying. Mountain King not only used music, but integrated it into the game in a novel way. A special theme plays when it is time to find the Flame Spirit, and the music gets louder as you come nearer to its location. A mostly-invisible entity which blinks sporadically, can can only be seen in full in the beam of your flashlight, using the music volume to triangulate and home in on the location of the Flame Spirit was one of the more novel mechanics in a videogame, and holds up well to this day.

Upon taking the Crown, a well-done TIA chip rendition of Grieg’s In The Hall Of The Mountain King plays, signaling your time-limited escape run to reach the Perpetual Flame at the top of the highest mountain peak in order to advance to the next level. The music created a sense of frenetic pace and urgency as you raced to the mountaintop. During the ascent, bats appear, which (similar to the Bat in Adventure) would rob you of the Crown. To avoid them, you sometimes had to hurry, and sometimes it was better to wait. This heightened the tension and anxiety you felt as you tried to make it out without losing the Crown, a setback which normally left you with insufficient time for a re-attempt, and meant an inevitable game over. More than any other feature, possibly rivaled only by the scare factor of the Spider, this made the game memorable.

Mountain King used silence to great effect, as well, for most of the time you are exploring the depths of the diamond mine in pitch dark and in complete silence, apart from the sound effects of picking up diamonds and the squeaking of bats. And if you fell, the sound effect — a simple descending tone — effectively conveyed not just that you had fallen, but how far. When you fell so long that part of the drop was in silence, you just knew you were going to be in for a long recovery time.

Each of these audio elements combined superbly to create a great mood, one of the best on the Atari 2600.

Mystery

Mountain King’s themes of mystery and exploration are enhanced in a number of ways. First, the instructions don’t tell you exactly what you need to do — rather, they hint and allow you to figure things out for yourself. Enough information is there to figure the game out, but enough is left out that it leaves the player with a sense of mystery and discovery. The Flame Spirit and the Skull Guardian and who placed the Crown in the mountain are never explained, leaving the player to wonder and speculate.

The game reinforces the mystery and discovery directly in game play, by making a number of things invisible — black sprites on black background, discoverable only by shining your flashlight everywhere. Treasure Chests, which are worth a lot of diamonds, are not essential to find, but are common enough that you are likely to encounter a few of them as you collect diamonds. The Flame Spirit is unique and critical to the game, and normally invisible, but the combination of the musical theme and its occasional flickering into visibility make it findable even without the flashlight, but by learning to use the flashlight to find Treasure Chests to boost your diamond score enough to find the Flame Spirit sooner, the game leads you to use it in discovering the Flame Spirit as well.

Glitch World

These mysteries are fine enough, yet pale in comparison to the Glitch World that hangs high above the mountain itself. It seems that not much is known for certain about the Glitch World, whether it is truly a bug in the game, or whether it might have been placed there by the programmers deliberately for unknown reasons. But there are platforms high above the mountain which are just barely reachable if you make a super jump from a specific place on the mountain.

I discovered this all on my own quite accidentally by jumping around aimlessly, and it was one of the most exciting things I had run into in a game before. In an era that predated the internet, there was little chance of learning anything about this but by discovering it yourself, and the excitement of this, and the intimacy of learning a secret that, for all you could know, was known only to you and (maybe) the programmers of the game, was very special.

In the early pre-Nintendo 80’s, kids would talk at school about accomplishments and discoveries they had made in video games, often times to incredulous schoolmates who would demand proof, or claim to have seen the same thing on their Atari. There were a few books and magazines out there, even then, but we didn’t have access to information the way we do today, and it gave us the opportunity to discover things ourselves. There were of course some kids who became notorious for lying and making up something in an effort to seem cool and special, as well, but the fact that you couldn’t 100% disprove a claim, and everyone would insist that they were not making stuff up. The only way one could verify extraordinary claims (in a still mostly pre-VCR-era) was if you witnessed it firsthand, so this made the rumors and secrets surrounding videogames something extra special, and if you were a witness, it made you special. I fear that era is gone forever, changed irrevocably by the Internet Age.

And for me, Mountain King might have been the most mysterious. Warren Robinett’s Adventure Eater Egg might have been cooler, but because it gave you a message, it seemed to have a purpose, and however cool it was, it just didn’t have the same mystery that the Glitch World in Mountain King had. We never found anything up there, no matter how high we climbed, but we never doubted that if we could only find some way past the impossible point, and get just a little bit higher, some great secret would be waiting for us, and all would be revealed.

DNS Registration

Back when I registered this domain in 2010, I used GoDaddy, mainly on the strength of them having a special deal where I could register a domain for very cheap. I’d been wanting for a while to get my own domain and web host so I could play around a bit, and saw a deal advertised on slickdeals.net for $1 domains, so that was my excuse to finally do it.

I had heard the GoDaddy name quite a bit, thanks to their marketing, and they seemed reliable. And, from a technical standpoint, I never did have any problems with my domain name resolving, or getting hijacked, or anything like that. So for that much, they were fine.

There were several thngs I didn’t care for about GoDaddy: their sexist TV advertising, the fact that at one time, prior to the public uproar over it, they had backed SOPA and PIPA, and then they had a high profile security breach a few months ago, which didn’t seem to affect me one way or another, but made me lose confidence in them.

They also had some other issues, for example, they would email me an awful lot, to the point where it was really spamming me. And the experience of actually registering my domain with them involved a great deal of very aggressive “upsell” and e-checkout spam that made the entire process annoying, about as annoying as trying to order anything from Dell, and it was unclear what many of the additional products they sold even were, let alone what they did, and whether they were something I needed for my purposes, or a good idea, and so on.

So my registration finally came up for renewal, and I opted to transfer DNS to 1and1. I didn’t do a whole lot of comparison shopping, just asked around and people who’s opinions I regarded highly said they were OK. A few people said DNSimple was good, too.

Transferring this domain to the new registrar was not entirely easy, but I managed to go through all the hoops and set things up. The name finally transferred over today, and for some reason at first 1and1 seemed at first to be using my hosts’ name servers, which was good, but then a little bit later, this updated and they were using their own nameservers, which caused my site to go down for a few hours. I had to log in to my account and reset them back, but it still took about two hours to resume resolving properly :-( I’m not sure whether this was my own mistake, or theirs, but it’s resolved now.

Hopefully this will be the only problem that I have.