Wednesday, December 22, 2010

Memorable Game Experiences

Fair warning, this post is kind of long and rambly.

I’ve been doing some thinking about procedurally generated content of late. There are some things about it that make me a little uneasy, things I haven’t really been able to put my finger on, but I think I figured out at least a part of it. It has to do with whether or not the game play experience is memorable.

One of the big selling points of procedurally generated games is that they give you limitless variety to play with. You can play the game dozens of times and it will play out differently every single time. There are quite a few games that do this: Tetris, Diablo, Steam Birds, Civilization, Minecraft, and my personal favorite Starfighter Eternal. Each of these games generates the content as you play the game, or before you start, giving a different experience each time.

The funny thing about these games though, is that typically I can only manage a single play through, or I’ll spend a few hours with it before losing interest, even though I think they are excellent games. Tetris and Steam Birds and Starfighter Eternal are great fun, and they play different every time, conceivable you could play these games for hundreds of hours, and enjoy every minute of it. Diablo, Civilization and Minecraft generate new maps for you, giving you new areas to explore and conquer, meaning that you never run out of places to play.

Many of these games will easily suck me in for hours if I get started, but after a while I find that I have little desire to go back. “So what?” you’re thinking, “You just get sick of the game, right?” No, I don’t think that’s it, I’ll often stay interested in games with non-procedurally generated content longer, even if they have less satisfying gameplay. That seems particularly strange to me, but the answer came to me one morning when I was trying to remember if I had already brushed my teeth.

Think about it, how much of your morning routine do you typically remember? Enough to differentiate between one day and the next? I often don’t, I’ll remember brushing my teeth, but I can’t remember if it was today, yesterday, or the day before that. The days all run together. That happens because the mind only stores new patterns. I go through the exact same motions every morning, so my brain barely bothers storing any specific information about the latest iteration of the morning routine. I believe that the same thing haunts procedural games, and is what makes me get bored of them quicker.

Do you remember each hour that you’ve sunk into Tetris? If you went and played for an hour right now, would you remember any of that hour, except that you had spent it playing Tetris? Each hour spent playing Tetris, while different enough to stay interesting, and keep you engaged, isn’t different enough for your brain to bother storing it. I see the same thing with Civilization, Steam Birds, Diablo, and all of those other games. I remember the games of Civilization 2 I played fourteen years ago better than I remember the ones I played last week. Because at that point it was still very new and different, the patterns were unique, and my mind eagerly memorized everything it could about the game. At this point, I’ve played so many games of Civilization that it’s like my morning routine, my brain sees no need to bother remembering it.
And that’s why I lose interest. I think this may be just me, but I really prefer to remember where my time went. If I’m going to spend a couple of hours with a game, I want to remember spending that time, I want to remember the game. By this point, I’ve remembered everything I’m going to remember about Civilization, so even though it’s a very compelling game, I don’t want to spend time with it. I know that I could easily lose hours to it, and enjoy the time quite a bit, but I know that come next week, I won’t remember those hours, they’ll be lumped in with all the other hours spent on Civilization.

A game that isn’t procedurally generated however, has a definite beginning, middle, and end. I may not remember every hour spent with the game, but I will remember the overall story arc the game told. Somehow I feel that that time is better spent, because twelve hours spent on, something like Dark Messiah of Might and Magic will give me a complete story to remember, but twelve more hours of Civilization, will just be another dozen hours with Civilization, indistinguishable from the other hundreds.

I’d really like to see, or even better, develop, a game that was able to produce limitless variety, and still give the type of memorable experiences that a non-procedurally generated game often does. I’ve got some ideas, but nothing beyond ideas at the moment.

Labels: ,

Tuesday, March 30, 2010

March EGM Post Mortem


I took a week out of my normal game development activities and worked on a game for the Experimental Gameplay Project. It was a good experience, I'm thinking I'll probably want to submit entries in future months. You can see the game I put together, Last Stand, here.

All told, I think I spent around 24 hours over a period of five days to get it done. I was surprised at the amount of that time that was spent polishing, and trying to make the experience smooth. It's still got some rough edges, but I was pretty pleased with how it came out.

This is a small exploration of an idea I first had a couple of years ago, inspired by Keith Laumer's Bolos. Basically they are giant machines with human brains in them, they can perceive everything very quickly, and so their movements tend to be precise. I thought it would be interesting to see if you slowed the usual action game way down, if it would become something like a strategy game. It didn't turn out quite how I imagined it, when I slowed it down too much it wasn't terribly interesting. I'm not really sure what might make it more interesting. Allowing the player to move might help, but it could use some more experimentation.

Even if this game doesn't go anywhere, I think it's great exercise for my game development muscles. I'm hoping that if I do this enough I'll start generating some really neat game ideas, instead of the tired old derivatives I typically seem to produce. Also, going through a whole product lifecycle so quickly, and so often should be helpful to my development skills.

Finally, it was a nice break to get away from my other game for a bit. When I finished the Last Stand I was really eager to get back to work on my other game.

Sunday, February 21, 2010

Game development update

I've been making a lot of progress on the game lately. I spent most of Saturday rewriting the navigation system, again. I decided on a whim to see if it would be much faster in C++ than it is in script. So I spent the first half of the day dusting off my C++ skills and writing one of the navigation methods C++.

The difference was phenomenal. The function I rewrote typically takes about 22 seconds to execute in script, which is quite a wait. When I rewrote it in C++, it took less than a millisecond to execute. After seeing a performance increase like that, I decided that I had to port the rest of the navigation code over to C++, and got to work on it.

It'll probably be a couple of more days before I have it all working again, but it will be so worth it. So, the lesson for this weekend is C++ is easier to get back into than I feared, and you shouldn't write performance critical code in script.

Labels:

Sunday, January 31, 2010

Thoughts on the Global Game Jam

So this weekend I participated in the Global Game Jam, and it was quite the experience. It started Friday evening, when they announced the theme, Deception, and the secondary themes, Maids, Raids, and Trades. We brainstormed, made game pitches, then broke into groups. I ended up in a group with some great people, and I think our game turned out pretty good. Our game’s page on the GGJ website is here. Rather than trying to write a cohesive essay that addresses all my thoughts, I thought I would just share my thoughts in any particular order.

We did the game in C# using the XNA framework. I have only used C# once before, on a project for a class my senior year of college, and I didn’t do any XNA programming at the time. I was a bit nervous, making a game in a day is difficult enough, without having to deal with an unfamiliar language/framework. But it came pretty easy, switching between computer languages typically isn’t too difficult, especially if they have similar syntax like C# and Java. XNA was also pretty easy to get into; there were lots of examples, and some pretty good documentation.

As I was working, I found myself wondering why I didn’t us XNA instead of Torque. It’s pretty easy, very powerful, and it’s free. But then I started running into things I had to do for myself in XNA that Torque always takes care of for me. Like animation and movement, I think I did a pretty good job making my own animated sprites, but I’m glad we didn’t have to do any sort of collision detection, because I hate collision detection. Working with XNA gave me a good appreciation for XNA, and gave me a renewed appreciation for Torque.

We developed the game to run on the Xbox 360, which was a bit intimidating at first. I expected it to be a horrendous process, but it was really simple. We didn’t have to do any weird code tricks to accommodate the 360, it just worked. It was really easy to develop for both windows, and the 360. Although I was surprised by how little room there is on the 360 screen. Developing for a PC gives you a lot more real estate to play with; it felt a little bit restricting at times. Overall, I thought it was really fun to make a game for the 360, and I’m glad that’s the route we took.

Developing the game felt like a whole months-long development cycle compressed into a 24 hour period. It included everything from the initial object oriented design idealism, to the horrible refactoring because your design didn’t account for something, to the bug fixes, to the code base growing large enough that you can’t keep it all in your head, to frantic debugging while trying to add new functionality without breaking anything. There were moments when I would look at a section of code, and even though I had written it only five or six hours previously, it felt the same as it feels at work when I look at code that I haven’t seen in weeks.

You would think by now I would know this, but making a game is a lot of work. I was programming almost non-stop for 24 hours with another guy, working on a rather simple design and we still had to leave a couple of features out. A lot of it was just taking care of small details that you have to take care of if you plan on releasing your program to the public.

Programming at 5:30 am after you haven’t been to bed is a bad idea. There were several times I would run the game to see what needed fixing, see something, go into the code to fix it, and have no idea what it was I was intending to fix. I started having to write down what I saw the game doing so that I could remember what I was looking for sixty seconds later. It was an amusing experience though.

I might post a couple more thoughts as they occur to me, I’m still pretty tired from the event, so I might be thinking better in a couple of days. Overall, I thought it was a great experience, and would recommend anyone who is interested in game development participate in something like this.

Labels: ,

Sunday, December 27, 2009

Nutritionally Dense Entertainment

I find that some entertainment choices are better than others. This may seem self evident, but bear with me here as I explain. Some entertainment seems more satisfying, for example, I could spend an hour playing Planescape: Torment, or I could spend an hour looking at lolcats. After the hour is finished I’m going to feel more satisfied if I spent the time with Planescape. It’s almost like Planescape is more nutritionally dense than the lolcats. Like the lolcats are a Twinkie and Planescape is an apple. The lolcats might be tasty, but too many will just make you sick.

I don’t think that you can say for sure that one form of entertainment is definitely superior to another. I think it’s primarily a matter of figuring out what forms of entertainment are best for you, and then having the restraint to seek those out. For example, I do really enjoy action RPGs, like Diablo, Titan Quest, or Torchlight. They are fun, and they’ll suck up lots of time if I let them. But I find that they aren’t as satisfying to me as other more story driven games. So I have to exercise restraint, and enjoy the action RPGs in small doses, while spending most of my entertainment time on other things. That was especially difficult the day after Christmas when Torchlight was on sale for $5.00. It was really tempting, but I knew that I wouldn’t enjoy it as much as some other games, and I’ve already got Titan Quest to give me my action RPG fix.

It’s kind of an interesting journey, figuring out what kind of entertainment really does it for you. Kind of difficult too, but I’ve found it’s helped me to enjoy my free time more. Just thought that was kind of interesting.

Thursday, December 24, 2009

Game design lesson: Humility

So I’ve been thinking a lot about what I’ve learned over the last year, especially from working on my current project. When I started work on the game, I really thought I finally had things figured out. I had worked on several game projects prior to this one, and none of them made it very far. Maybe twenty or thirty percent complete, I would learn new things each time about what made a good project.

For example, I really wanted to make a game that played like Elite, or Privateer, except you drove around a car through a post apocalyptic wasteland. I still think that sounds like a fun game both to make and play. But writing my own graphics and physics engine was something I really didn’t want to attempt. Something that would have taken way too long. So I learned to build on someone else’s technology, and otherwise save yourself time.

I also worked for a time on an online graphic adventure type game. I had the engine mostly written in flash, and it was kind of neat. It was going to be an episodic online adventure, with new episodes every couple of weeks or so. The primary problem with that is that I don’t have much artistic ability. Graphic adventures are incredibly demanding graphically, if you can imagine. So it was a bad idea to try creating something where 90% of the content was outside my ability to produce. I learned to focus on my strengths.

I then worked on a hacker type game. I wanted to create a game that made you feel like an elite hacker flying through the networks at incredible speeds. I wanted to focus on speed, and cleverness, and so I started working on a game design document, and trying to write it in Torque. Unfortunately my design strayed from the original idea, and became a bloated mess of contradicting game mechanics. I learned to keep the design tight and simple, to focus on a single gameplay type.

Then, almost exactly a year ago, I started on my current project. I picked a simple game type, that I really enjoyed, and thought I could bring some new ideas to. I really liked the idea of setting up your defenses, and repulsing wave after wave of enemy. It seemed simple enough to create, and I figured I would have it done by last July. I’ve learned more from this project than any other, but I think the primary lesson I’ve learned is humility.

A year ago, as I was working on the prototype for this game, I thought I had it all figured out. I was going to quickly get the game done, release it and move on to the next game in my brilliant career. I wanted to share what I had learned with others, so I volunteered to speak at a gathering of local independent game developers.

I talked like I knew it all. It kind of got away from me a little bit. I did my best to present the lessons I had learned, but what I didn’t realize is just how little I knew. I had learned lots of lessons on taking a game to the thirty or forty percent complete mark, and I thought with this newest game I had figured out how to smoothly take a game clear to completion.

I’ve learned over the past year how difficult it is to make something that works well outside the controlled environment of your development machine. I’ve learned how difficult it is to make a system of interlocking pieces that interact with each other in a way that is interesting. I’ve learned that all I’ve really produced before were prototypes, and that the real thing requires much more polish. I’ve learned that anyone who produces any sort of game, and releases it to the public deserves a lot of respect. I’ve learned that it is very understandable that a game studio could spend hundreds of thousands of dollars, and years of development, only to push out a product that isn’t any fun. And I’ve learned that I am in no position to tell anyone anything about game development.

I’m going to keep working, learning, and occasionally posting the things I’ve learned from my efforts. I do intend to finish and release this current game, even if it doesn’t end up being any fun.

Primarily I wanted to express how impressed I am with anyone that manages to finish and release a game. I intend to never say anything negative about someone who has worked hard and put their efforts out for the world to see. I might still criticize the work, but the artist deserves accolades for getting it done.

I also wanted to express to anyone who may have been put off by my hubris that I’ve learned quite a bit about how little I know. Hopefully 2010 will bring lots more learning experiences.

Tuesday, November 24, 2009

Twitter

I never thought that I would find a use for twitter. But it occured to me that twitter might be a good way of posting project status updates. The hope is that knowing that I have a public log of my productivity will encourage me to do something every day so that I will always have something to post on it. If anyone is interested, here's a link to my twitter profile. I imagine that it will be pretty boring, at least at first, perhaps over time I'll loosen up and post more interesting personal stuff.