diary of an indie game developer

 

Archive for the 'Game Dev' Category

Agile Game Development

Tuesday, March 27th, 2007

However you’re making your game, you’re doing it wrong.

In our young industry, that’s one simple fact: nobody’s figured out how to efficiently make successful games. Competition means that no one will ever have a perfect formula, either, but right now we’re just really, really inefficient when it comes to development. Huge architectures are built for features that never make it, while important features are hacked in at the last minute and at high cost. We spend tons of time polishing minor features, while our products ship with major flaws. Frequently we labor for weeks over something that actually makes the game less enjoyable. This is all just the tip of the iceberg.

Of course, if this were easy to solve, it’d be solved: these problems don’t exist because we’re stupid, but rather because the problems themselves are complicated, and resistant to quick fixes.

One solution people are trying to bring over from other parts of the software industry is agile development (often in the form of Scrum). Remember what I just said last paragraph, though: these problems are resistant to quick fixes. (Or remember what I said at the start: you’re doing it wrong.) I’ve talked with a lot of people trying out agile methodologies for their next game, and every single one of them has hit a lot of problems. Sometimes it just doesn’t seem suited to game development: we have too many teams, and they’re too interconnected, to use a method based around fluid, small-group, non-dependent work.

One of the best resources I’ve seen for working through these issues is the Agile Game Development Blog, run by Clinton Keith, the CTO at High Moon Studios. One thing you’ll notice if you spend any time reading the blog is that there are a lot of unsolved problems. Why don’t their metrics of development (”story points“) correlate to fun? Why are they still crunching near milestones? How do you even know how much work is remaining, when “done” isn’t even a known quantity?

All of those unsolved problems are a good sign: they’re the sign of an honest blog.  Everyone trying agile in game development is going through some or all of the issues Clinton Keith discusses.  As I read through the archives, I kept having realizations: “oh, that’s what you’re supposed to do there!”  “Hey, I didn’t realize that’s what was going wrong.”  “Yup, we had that problem too– comforting to know you haven’t solved it, either.”  I highly recommend it.

Understanding Games: in Game Form

Thursday, March 22nd, 2007

Wow, this is awesome: it’s a primer on game design, in game form.  Check out Understanding Games: Episode 1.  Episodes 2 and 3 are also up.

It’s an awesome concept, and won’t take much of your time.  I strongly encourage you to check it out.

Raph Koster on Single Player Games

Thursday, March 15th, 2007

I’ve been going over the slides from Raph Koster’s recent GDC talk, “Where Game Meets the Web”. It’s great stuff (I wish I had the audio), and he has some great quotes to pique your interest:

“Single player games are an aberration.”

He goes on to clarify:

“Very soon, all single-player gaming will happen within a multiplayer context of connectivity, persistent and publicly visible profiles, and awareness of other users.”

I think he’s dead on, and I think this has tremendous and complex implications for the future of gaming.

Introversion: Swimming in Money

Tuesday, January 30th, 2007

The latest blog post from Introversion is up, and it describes how they fared after Uplink sales took off following a review in PC Gamer:

Chris and I signed up on benefits and I started to sell everything I’ve ever owned (bar my laptop) on eBay, right down to the 5 mains plugs I rescued from the skip outside my parents house (which I’d now been forced to move back into).

Man.  I’d better get my game done soon, so I can buy this new hat!

Introversion Stole My Idea!

Wednesday, January 24th, 2007

After my first game mockup failed to be compelling as I’d hoped, I went back to design.  I went in the direction of some more exciting visuals.  3D views of cities as brightly lit networks, beautiful in their procedurally generated intricacy.  A hacker’s-eye view of the inside of a complex or office, digitally radiant with layer upon layer of data extracted from blueprints and satellite imagery.  If one were to spend a little bit of time implementing these ideas, they’d probably look a lot like this and this.

“Wow, Matt, those look pretty good!  But why are you storing your prototypes on Introversion’s server?”  Well, funny you should ask: when their development blog went up recently, I realized we’d been thinking along the same lines.  I’m not attempting to diminish Introversion here (why, I regard them as highly as I regard myself!).  However, the evidence seems to clearly indicate that they’re unprincipled thieves.

Given that we’ve never even met, however, there’s another possible explanation.  It’s possible that the lines I was thinking along were simply a logical progression from the source material.

Say you want to make a cyberpunk game.  Or, perhaps, a hacking game– it’s all the same along some spectrum of realistic to fantastic.  You might start at Neuromancer, or you might start at Uplink.  But you’ll hit some problems.  Hacking is abstract and highly technical.  Cyberpunk is losing its relevance (link).  Uplink may be a one-off: as you dig into it, you realize it’s basically a game about upgrades and progress bars.

So where do you go?  Go to the source.  Neuromancer made all this technical mucking about palatable by turning it into a real world analog.  The data is laid out geographically: you can recognize Tokyo by the shape of its network traffic.  Hostile security programs take on visceral, recognizable shapes.

Now you can already see the progenitor of that city imagery: it’s a direct visual from Neuromancer, whether or not the gameplay has anything to do with hacking.  Blueprints are a short step towards the current mainstream, with the modern role of a Hollywood hacker as an agent’s assistant.  They manipulate and monitor real-world settings while a physical counterpart kicks some ass: think Chloe and Jack from 24; think Marshal and Sydney from Alias; think Mission Impossible.  If you really want to go back to the original hacker/ass-kicker duo, think Molly and Case.

It’s a good reality check.  I’ve been designing extensively, scribbling ideas and diagrams through several notebooks.  Introversion has also been prototyping away, combining their experience from multiple cyberpunk-friendly games into exciting, can’t-wait-until-they-release-their-next-one visualizations of technological beauty.  If you stop to think about it for a minute, though, it’s not surprising we’re designing in the same space: one step away from from Neuromancer.

Games with good search?

Friday, December 1st, 2006

Can anyone think of any games with a good “you’re looking for X” mechanic?

Games like Metroid have good exploration. There are cool things hidden about, and enemies that are fun to shoot, so you perform an exhaustive search through the world. Similarly with Diablo: you traverse the area boundaries until you find the gate to the next area, and move on.

What about games in which you need to find a specific thing, which feature something other than exhaustive or random search? How do you nudge the player in the right direction, without making it overly obvious or overly obscure? How do you include a skill element? This can be through an environment, or in a big stack of items, or whatever. Any examples?

This Christmas, Give… Game Design?

Tuesday, November 28th, 2006

While brainstorming for Christmas gift ideas this year, Ruth came up with a great idea: design a fun (subject redacted– sorry, some recipients occasionally read this blog!) game for any friend and family who like (subject redacted).  What this gift has going for it:

  • Covers a lot of people.  Game design, even for a small, non-professional game, is a lot of work.  Designing a game for just one person is probably more than we can take on during the holidays.  If you pick a design that covers a couple groups, though, you’ve taken a good chunk off that list.
  • Cheap!  Christmas is way too expensive.  With the right game design, you can reduce your costs to some slick forms from VistaPrint, or even something entirely homemade.
  • Personal.  With gifts like this, your lucky recipients will always remember you fondly as creative, strange, or both.  With a bit of luck, they’ll even enjoy the game!

Another reason this idea is so great is that it’s a way for someone like me to give creative gifts.  I don’t have to be able to sculpt, paint, or do anything else that requires an ounce of visual sense.

I’ll write more about the gift after the holidays.  Feel free to drop me a line if you’d like to hear about it sooner.

Unexpected Behavior with Multiple Inheritance

Wednesday, November 22nd, 2006

Recently, I started using these macros to use Java-style interfaces in my C++ code. They allow me to gain the advantages of interfaces, without the madness of multiple inheritance.

As I was soon reminded, though, using anything in C++ without a solid understanding of what’s going on under the hood leads to certain doom. My event broadcasters were broadcasting, my event listeners were listening, but the event would come along and no one would do anything with it. What was going wrong?

  • When can two pointers to the same object be unequal?
  • When can calling a virtual function on an object call a superclass’s version, even if that object has overridden it?
  • When can a base class see a different “this” pointer than its descendant sees?

When you’re using multiple inheritance! It all makes perfect sense once you know how multiple inheritance is implemented, but at first I found it unintuitive that pFoo and pBar could be unequal in the following code (more complete example here):

FooBar fb;
Foo* pFoo = &fb;
Bar* pBar = &fb;

If you’re hazy on that, too, you may want to check out this excellent resource. It talks about how multiple inheritance is handled by the compiler, and when to use dynamic_cast. I spent a few hours reading over it and writing test cases. Armed with my new knowledge, I replaced a couple select typecasts with dynamic_cast, and now my events are playing happily.

Technology Selection: PopCap Games Framework

Wednesday, November 8th, 2006

It’s time for me to start posting more news on my in-development game.  I’ll start with the framework for the whole thing: the PopCap Games Framework.

Here are the highlights:

  • It’s all in C++.  Many otherwise great offerings, such as the Torque Game Builder, rely heavily on custom scripting languages.  Tools for C++ development are far more advanced that the tools for most other languages.  I’ve found that strong tools can easily outweigh any gains from language advancements.
  • Easy to learn.  The API is clean and simple.  Six quick tutorials teach you most of what you need to know.
  • Full-featured.  It’s more than just a few routines for drawing images.  It has a simple XML-based resource system, flexible sound playback, widgets, and more.
  • Proven.  A lot of work on a software framework only happens once you deploy it in the real world.  PopCap’s had to deal with a large user base with a lot of quirky PCs.

Here are PopCap’s biggest flaws:

  • PC only.  They’ve separated out their DirectX calls nicely, so in theory I should be able to write an OpenGL implementation.  It’s probably a lot more work than it seems.
  • No networking.  I’ll need to find and integrate another networking library if I want any online aspects.  Since there’s no client-server architecture in place, I can forget about real time multiplayer.

There were several competitors, the foremost of them PTK.  It’s cross-platform, and supports some impressive titles.  It’s also a little lower level than PopCap, and lacks features such as widgets.

Despite its shortcomings, I’m very happy with the PopCap Framework so far.  Of all the options, PopCap made it easiest to get started making my game.

Updating Cyberpunk

Friday, October 20th, 2006

Cyberpunk. Ruthless mega-corps. Designer drugs. Awesomely functional body enhancements. Frightening near-future urban dystopias. Jacking in to freakin’ cyberspace, where highly illegal security programs attempt to hunt you down and kill you.

The cyberpunk of old– one of my favorite genres– no longer feels relevant. Corporate encroachment onto 255px-Neuromancer_manual.jpggovernmental activities has taken second stage to the swift return of big brother. Everyone does drugs and nobody cares; cyborgs just seem dorky; would-be suburbanites are moving back into the cities in luxury lofts and mixed-use zones. The internet isn’t a perplexing assault of high-density information: it’s a carrier for MySpace. Video games were the first media to reflect this decline: there’s been little of note in the genre since Beneath a Steel Sky, System Shock, and Neuromancer.

Is there any relevance for cyberpunk now? Can or should any elements be updated?

information_awareness.jpgMy initial thoughts have centered on the nature of cyberspace today: the best thing to happen to surveillance since the credit card. There’s Echelon, surreptitiously sniffing data from internet backbones all over the country. There are logs of your activities, and internet-accessible records to fill in the blanks (credit card histories, cell phone logs, security camera footage, your latest vacation blog). J. Edgar Hoover could’ve worked half days.

uplink_screen1.pngOne sticking point: what’s the imagery of cyberspace? What does a hack look like? Can today’s computer-comfortable audience be sold a Neuromancer- or Snowcrash-like electronic reality, in which individual users and processes take form and move about? Or does it have to be brought back in a bit closer to reality?

In The Matrix, the only view we get of data– aside from the real world lookalike– is a bunch of scrolling green characters. Introversion’s Uplink is a monochromatic view into a world of command-lines and progress bars: it’s a fun game, but a tough act to improve upon. TV shows and movies tend towards super slick programs that seem magically designed for exactly what the show needs them to do: “scanning footprint… plant matter detected… scanning plant database… location discovered… collecting infrared security logs… analysing heat signatures… suspect identified!”.

To cut to the chase: is there still a cyberpunk game out there? Is there a hacking game out there? Or is it time to retire the genre and move on?