Thursday, May 28, 2009

Deficit programming

Here's a synchronicity, I've recently been experiencing some major bug problems with my game, due to fast and sloppy programming. I was trying last night to come up with a good phrase to describe the phenomenon when I came across this post on Shamus Young's site.

Basically deficit programming is when you trade time for code robustness, you get code written quickly, but it isn't particularly well put together. This can lead to numerous bugs and strange behaviors in the future, especially when you try to expand on it.

The past couple of weeks I've been adding a lot of features to my game, and not taking the time to do it carefully the way it should be done. I felt (and still do) that it was justified because a lot of the features I was adding weren't going to stick around for very long.

As you're working on the gameplay elements of a game, you have only a vague idea how things are going to affect each other. This is something I had heard about, but didn't really understand until I saw it first hand. Introducing a seemingly small element can drastically alter the way things work. With this kind of thing going on I didn't want to spend five or six hours adding a feature the right way, only to rip it out when it didn't work from a gameplay perspective. If I could get it in in two hours, and see how it works, well that was very tempting.

So right now I've got a good accumulation of elements, but I've also got a good accumulation of bugs that I'm trying to work through. In any case, it was really encouraging to be reminded that I'm not the only one who goes through these kinds of problems, this post was also very helpful in that regard.

Thanks Shamus.

Friday, May 15, 2009

Dear Esther

I came across this over at Rock Paper Shotgun. It's a brilliant little piece about a brilliant little mod called Dear Esther. I highly recommend you take a look at it.

This is the sort of thing I was hoping to do with games at some point. It isn't exciting or fun, it doesn't break any new ground in game mechanics. It's more like interactive poetry, telling the tragic tale of a man who has lost/is losing his mind, as economically as possible. It hints and suggests at the outlines of the subject rather than coming out and revealing it.

It's really something that I don't think could have been done in any other medium, and that really says something for interactive media. Most of the games we get are the equivalent of summer blockbusters, little more than actionpacked thrill rides. In order the for games to be taken seriously we are going to need more games like this one.

The only thing I wonder about is control scheme. There were a few spots where I struggled with the terrain. I wonder if someone who hasn't been playing fps games since the mid 90's would find this unnavigable. Anyone can sit down and appreciate a movie, or a piece of music, or a painting, but games require at least a little bit of skill in order to experience. I often wonder if navigating a virtual world using WASD is going to become a skill that everyone has, or if we are gong to need to develop some more standard control scheme.

Anyway, it was a well spent hour, give it a go.

Wednesday, May 13, 2009

Project Update

Here's a screenshot from tonight. It's coming along well, I've made a whole lot of changes since the last time I posted a progress report.

Currently we're doing a lot of tuning on the gameplay side. Trying to get it to be fun, and challenging, and to work well. The numbers you see on the buildings denote what level the building is, and what kind of building it is. As zombies come in from off the side of the map they can capture buildings. Once captured a building will produce zombies, and can be upgraded. As buildings are upgraded they produce zombies faster, they produce stronger zombies, and can produce different varieties of zombies.

Right now the game is just too easy. The zombies come pretty furiously, but the humans are just too good at holding them off, so I'm doing experimenting to try and figure out how to have both sides increase in power at roughly the same level.

Anyway, I just wanted this to be a quick status update. Just something to set a precedent to get me to post status updates more often.


Saturday, May 9, 2009

Six Days in Fallujah

Wait a minute you say, wasn't this was supposed to be a post about picking a project? Well, yes, it was, but I realized some important things, to wit:
  1. Nobody is reading this anyway
  2. Everything original I had to say on the subject, was said in the previous article
  3. If I'm writing stuff that nobody is going to read anyway, I may as well be writing stuff I get excited about
Right, so now I'm going instead to talk briefly about Six Days in Fallujah. The short of it, as I understand it, is this: Some veterans from Iraq decided they wanted a game made of their experiences, so they approached a developer, the developer started work and got with Konami to publish it. When news of the game got out, lots of people got upset, and Konami pulled their support for the project.

That's all I know about the project, but it's enough for what I want to talk about. I don't want to argue the merits of this individual game, or whether or not it should continue, or whatever. What I do want to talk about is how people got all riled up about this being made into a game, where they probably wouldn't have been nearly upset if a movie were being made on the subject.

I think the problem here is not only in how games are viewed, but also in how we've been making games. Games right now are viewed, and not unfairly, primarily as amusing entertainment at best, and toys for children at worst. Games are only ever made in order to provide a 'fun' experience. That's always been the number one rule of game design, whatever else happens the game has to stay fun.

Movies on the other hand, come in many different varieties, some are fun, and some aren't. And it's because not all movies are fun, that they are allowed to treat more serious subject matter. A piece of media treating something as harrowing and recent as the Iraq war shouldn't be fun, it's just too soon for it to be fun. Some might argue that there is never a time when a depiction of war should be fun, and there might be some merit to that, but I don't want to get into that discussion here.

So would it be possible to make a game that wasn't fun, but was still compelling? Absolutely, most of the efforts on this front have been made by indie developers. I think a great example of this is Judith, a relatively short little game that is absolutely worth playing. I would almost call it more of an interactive experience than a game. There wasn't a lot of room to play in, there wasn't any freedom in the narrative, there wasn't any way to lose, or die, you just move through the story. And yet I think that it was much better than a non-interactive telling of the same story could have been. Somehow, being the one to guide the characters around on the screen forged a connection with them for me, more than I could have felt through another media form.

This is the power of games, but I think we might need to come up with another name for them. Game brings to mind fun, and that's as it should be. But when interactive media seeks to respectfully address difficult topics and issues, we need something to call it that doesn't instantly make people think that we are taking those sensitive issues and making them fun.

But I have no idea what that label might be.


Saturday, May 2, 2009

Choosing a Project: Know Yourself

I recently shared some thoughts with the Utah Independent Game Developers group about choosing a game project that you’ll actually be able to finish. Seeing as my blog has been sorely lacking in updates, I figured this might be a good opportunity to turn my presentation into a couple of articles and put up something that might be of interest to people.

As a foreword, I think it’s only fair that people realize that the ideas in here aren’t the result of years of successful independent game development. They are largely the result of my own quest to find a game project that I would be able to finish. Now that I’ve found a project that is going all the way, I wanted to share what I’ve learned in the hopes that others will be able to avoid some of the struggles that I’ve had.

I’m going to break my thoughts into three articles, because each section is a little long, and reading them all at once would be maddening. Also typing them all up at once would be equally maddening I think. The three areas I chose to focus on were Know Yourself, Knowing Your Audience, and Knowing Your Project.

Know Yourself

I believe that knowing yourself is one of the most important aspects of choosing a project that’s a good fit for you. Independent game development is intensely personal, it’s not something that you can do half heartedly and expect to succeed. If you don’t have your whole heart in the project, then it’s going to be a miserable slog to the end—if you ever make it. So as you choose a project, it’s important to know where you are coming from, and how that project fits into your strengths, weaknesses, and desires.

Know why you are making a game

Making a game is really hard work. It requires long hours, learning difficult things, and stretching and growing in a lot of new ways. You’re going to need more reason than just ‘it sounded like it would be fun’, because if you ever hope to finish you’re going to have to work on your project even when it isn’t fun. Find a reason that fills you with excitement and passion, are you working on a game because you’ve got an idea for a game that will be incredible to play? Or maybe nobody else makes the kind of game you want to play? Or perhaps you have a story that you want to tell, and think that it would make a great game? The only right answer to this question is one that makes eager to start working on your game.

Another thing that having a good reason for game development will do for you, is that it will help you avoid ‘Project Envy.’ This is when you’re working away on your game project and you see someone else’s project, and you think “Wow, that’s really cool. I wish I was working on something like that.” The reasons the other project grabs your attention can be varied. For myself a big one seems to be critically acclaimed indie games. I get jealous, and think “I want everyone to talk about me and my awesome game! Maybe I need to develop something more revolutionary!” But then I sit back and remember that the reason I want to develop games is to create neat worlds, and give gamers interesting experiences in those worlds. And I realize that my current project fulfills that better than whatever game I’m currently envying.

If you know why you’re developing games, you’ll find it easier to stick with a single project, and you’ll find it easier to work on it. When it’s been a long day at work, and you’re trying to find a nasty bug in your project, and you’re just tired and want to give up, believe me, you’ll want a good reason for sticking to it.

Figure out what you like

If you know what it is you like about games, then you’ll have a better idea of what kind of game you’ll enjoy developing. Starting out with the goal of making a game that is just fun is going to lead to a lot of dead ends and frustration. Maybe you like games that include interesting characters, or lots of enemies to kill, or difficult puzzles to solve, or mysterious locations to explore. As you become clear on the things that make games fun for you, you’ll have a better idea of where your game needs to go. Having a clear picture of your destination is absolutely essential to getting there.

In addition to bringing clarity, working on a game you like will engage your passion. It’s difficult to get passionate about a game that you’re not that into, and without that passion the development process will be a painful and unpleasant process. As an independent developer passion is one of your biggest advantages over the big studios. When you make a game that you are passionate about, people will feel that passion, and the game will be a better experience for it.

Another good reason to work on a game you enjoy is because you’ll have more good ideas. If you’re interested in indie game development then you probably do a lot of thinking about games, and the games you think about are the ones you enjoy. All that thinking is going to lead to a lot of ideas about how to change and improve game experiences. Those ideas will help to make your game unique and fun. If you’re working on a type of game that you’re not that into, you’ll have a hard time coming up with new ideas, and you’ll end up creating something that’s pretty average that nobody wants that.

Finally, if you are working on a game that includes lots of elements you like, then you’ll be drawn back to it. That’s really important, as a part time indie developer it’s difficult to find development time. If you’re working on a project that has a lot of things you love then it will be easier and more natural for you to return again and again to work on it.

Know your skills, and work to your strengths

Different types of games require different skill sets, and you should figure out where your skills lie before committing to a project. Here’s an example: If you suck at art, don’t do a graphic adventure. I had to learn that one the hard way. I once started work on a Flash based graphic adventure, it was going to be awesome. I had the engine all programmed, I had a dialogue engine, inventory, puzzles, different locations, the whole thing. I was going to release a new section of the adventure every week, and people were going to come to my site every week for the new puzzle, then they would go to my forums and discuss where the story was headed, and talk about easter eggs. The whole time they were doing this they would be clicking ads and buying merchandise—I was going to be rich.

Then reality hit, with the engine done, all I had to do was start producing art, and putting it up. Six months later I had one or two screens that weren’t terribly impressive. I sat back and realized that there was no way I could produce artwork in the quantities I needed it. I could hire an artist, but that would be a lot of art, and I had zero money. Graphic adventures are reliant on a lot of art, after realizing this I decided that I needed to work on a game where I could reuse my art assets, producing a lot of content with a fixed amount of art.

As an indie developer you’re not going to have a lot of time, what little time you do have is going to need to be well spent. I spent about four months part time coding up the engine for my online graphic adventure, the work went relatively quickly, then I spent six months making two game screens, the work was incredibly slow. You’re going to work faster when you’re using skills that you have already developed, which means time that is better spent.

Keep in mind that there is no shame in getting outside help. In fact, it’s encouraged and almost mandatory. Go out and find ways to leverage other people’s skills to help with your project. Buy an existing game engine, buy an art pack, buy a music pack. You’ll save time, and it will give you the opportunity to use your skills where they really shine.

This isn’t to say that you should avoid doing things that you aren’t good at. Being an indie means wearing many different hats, and you’ll need a diverse set of skills to bring a game to market. Jay Barnson made a good comment about this, paraphrased he said “Don’t be afraid to expand your skills, but don’t bank on having a new skill be awesome either.” Let your already strong skills do the heavy lifting, and grow your other skills along the way.

Finally, if you are doing things that you are good at, then you’ll have more fun, which is very important. If you’re not having fun with your project, then you’ll find any reason at all to stay away from it. Life will give you more than enough reasons not to work on your project, you don’t need to be inventing more. When I worked on my online graphic adventure, I looked for any excuse I could find to not work on my project, because working on the graphical aspects was like pulling teeth. I really enjoy doing artistic stuff in moderation, but when it was for that game project it made me do everything I could to avoid the project. This can be avoided though, by figuring out what you’re good at, and choosing a project that focuses on that.

Know where you stand

Finally, know how you feel about questionable content in games. This was something that was really brought to the front of my mind with my current project. I was reading World War Z, when I had the idea of making a game where you defend a city against ravening hordes of zombie like creatures. I started work, and got really excited about it. But as I got to where it was playable I realized that I didn’t really feel good about the idea of making a gore filled game of slaughter. Fortunately as I was looking for artists I found one who didn’t want to make a bloody game either, and had some ideas on how to make a good game without making it a gorefest.

You’ll never finish a project that you don’t feel right about finishing. If somewhere in the back of your mind you are wondering about the morality of developing the game you are working on, then you’ll have a hard time getting enthusiastic about it. Find a game that you’ll be able to proudly tell people you developed.

Be careful though, just because you feel okay about playing a game, doesn’t mean that you would feel good making a game like it. I tend to like my games a little less bloody than most, but as I discovered with my current project, I have an even lower tolerance for blood in the games I make. Put some thought into it, because you don’t want to be half way through a project, only to discover that the thought of releasing it makes you uncomfortable.


Getting to know yourself, and what motivates your game development is important. Your game project will consume your life, and if it isn’t something that you can look back on with pride then you’re going to regret the time that you spent with it. By knowing about yourself, you can select projects that will complement your abilities, and be a better representation of who you are.

Next time I’ll be talking about knowing your audience, and some things to consider when thinking about who will be playing your game.