FUEL: Defining Procedural

By Shamus Posted Wednesday Sep 23, 2009

Filed under: Game Design 46 comments

If it were possible to jump off your vehicle, Fuel would have the makings of a fairly thrilling base jumping game.
If it were possible to jump off your vehicle, Fuel would have the makings of a fairly thrilling base jumping game.
Confusion always arises when I throw out the word “procedural”, as there seem to be a lot of different (perfectly valid) definitions bouncing around. In my view, procedural content is about making things using simulation, automation, and approximation.

Some people equate “procedural” with “totally random”. It’s true that it can be random (within the limits of a computer’s ability to generate “randomness”) but it doesn’t have to be. It’s fairly trivial to make the computer generate the same sequence of random numbers, thus having a “random” area appear the same each time you visit. In any case, it’s true that there will be aspects of the world which were created without direct participation of a human being. The placement of objects will in that sense be “unpredictable”. But this unpredictability – this loss of direct control – is one aspect of the tradeoff we’re making when we aim for procedural content. The more specific you want the content, the more it needs to be built by a human being. Do you have a rigid expectation of where each and every tree should stand? No? Then let’s not waste an artist’s time by making them place the things manually.

On one end of the spectrum is the hand-made world: An artist (or a team of them) will use shaping tools to sculpt the topography of the land. Then they paint it in some meaningful way. Grass over here, dirt in this valley, exposed rock on steep surfaces, etc. Then they populate the land with trees, shrubs, rock, grass, and whatever else the game calls for. You can do something like this in an hour or so if you’ve got good tools and you’re only filling in something modest in size. On the other end of the spectrum is the purely random world: Have your world-o-matic moosh a bunch of random noise together to make generic rolling hills, and then randomly sprinkle vegetation around.

Remember this building.  We’ll be seeing a lot more of it in a later post. Also: Is anyone thirsty? Me? I could drink.
Remember this building. We’ll be seeing a lot more of it in a later post. Also: Is anyone thirsty? Me? I could drink.
The hand-made way is agonizingly time intensive, but will produce compelling scenery. The later is cheap and fast, but produces a big bland soup of scenery where seeing one spot means you’ve basically seen it all. One is stupid expensive, and the other is pointlessly dull. But the thing about the hand-made approach is that the artist spends a lot of time doing very repetitive non-creative stuff. They’re doing tasks which don’t actually require a human brain. The goal of any good procedural system should be to make sure that the artist is directly involved with the artistic decisions and is never bothered with any of the routine grunt-work.

Placing each and every tree is time consuming and needless. Instead, you observe that trees do not grow randomly in the real world, but behave according to observable rules. There are rules about where trees grow, how they’re spaced out, and how big they get in different places. Trees don’t generally grow on steep hills, and if they do they don’t get very big. Dense trees tend to choke out undergrowth. Undergrowth prefers soil to rocky terrain. Grass gets tall anywhere you don’t have tress or undergrowth. Some trees grow denser than others and have different preferences for elevation and moisture. Etc etc etc. A programmer can bang out a few rules like this and add them to the editor. Now instead of the artist saying “I want a tree here, and another here, and here, and here, and I hate my job, and here, and a couple here, and I wonder if McDonald’s is hiring, and now onto the shrubs…” The artist can just say, “Given the rules for trees, I want a forest over this region.” Boom. Forest done. Now instead of planting trees and bushes, the artist is placing forests and grasslands.

fuel3.jpg
Now, artists usually jump in here and insist that you can’t cut them out of the process like this because the resulting data will be sterile and random. But note that what’s really going on is that some of the artistic work has been offloaded onto the programmer who had to implement these rules. This is probably why it’s taken so long for people to get a handle on procedural stuff: It requires a very particular sort of programmer to do this sort of work. You either need an artist who is very good at explaining what she does in concrete terms (as opposed to saying, “I keep adding trees until it looks good”) or a programmer who has an artistic flair. I’m a good example of the latter, which is why I was able to pull of the Procedural City. (With apologies for the excessive ego for the previous statement, but I really do think this is an area of particular capability for me. Too bad I don’t get to use it more often.)

This is where people who love to haggle over definitions will jump in and say that this is no longer art. They argue that once you distill a process down to rules and numbers, you’re no longer expressing or communicating, you’re just imitating. But I see art in making the code that makes the world just as I see art in using the tools that make the world. I see the compiler as simply a very strange paintbrush. But fine. We don’t have to call this art and there’s no reason to derail ourselves by going for another trip around the “how do you define art” mulberry bush. Art or not, the goal is to create a space that feels plausible and aesthetically pleasing.

I think Fuel pulls this off.

 


 

Stolen Pixels #127: Prison Break

By Shamus Posted Tuesday Sep 22, 2009

Filed under: Column 17 comments

In Champions Online, if you’ve got the strength you can pick up and throw vehicles. You can lift a truck and hurl it into a group of bad guys, sending them flying and very likely insta-killing one of them. If you just really hate the taxpayers, you can pick up a police car and use it to pummel another police car.

I really like that they didn’t simply make it possible to use the scenery in a fight, but they actually took the time to make it an interesting, balanced, and worthwhile part of combat. Thrown objects are a good opener, but it takes a few seconds to lift the really big stuff so you can’t just throw cars repeatedly until you win.

I have to give Champions Online credit for a really clean and stable launch. I’ve logged over a hundred hours already, and the game hasn’t crashed once. No broken quests. No game-killing bugs or griefing exploits. It’s by no means perfect, but as MMO launches go, this is about as good as it gets.

 


 

A Star is Born:
Let’s Play Champions Online Pt. 1

By Shamus Posted Tuesday Sep 22, 2009

Filed under: Shamus Plays 64 comments

I’m enjoying Rutskarn’s Morrowwind series so much that I’ve decided to do one for Champions Online. This will run every Tuesday-ish until I get bored with it, people get sick of it, or I cancel my account. Or I forget. Or I die.

Starting off, I decide to create the quintessential silver-age superhero. Not one of these brooding black-caped, spike-covered, angst-ridden antiheroes like all the young people are into these days. I want someone wearing classic tights and using classic iconography. But not, you know, operating under the same silver-age idealism and respect for all life. Heavens no. I’m going to have the same approach to fighting crime as The Punisher. I’ll just be wearing stretchy clothing and a brave smile when I do my vigilante-style killing.

Looking through the powers, I discount all blade-styled weapons. Too messy. There are a couple of fighting & fisticuffs based power sets that seem to fit his style, but they’re also a little bland. (And I am already playing a couple of other melee-based characters.) Then I see Telekinesis, which is based on Ego and Constitution. Ego? I can base my abilities on the strength of my own ego? Sold!

I go for a quick run-through of the character building options and am able to craft my avatar in just under a fortnight, which is a new record for me.

ME: Let’s see… does the nose look more heroic at 10% width or maybe a little closer to 14.5% width? MY WIFE: Are you <strong>still</strong> staring at that man?
ME: Let’s see… does the nose look more heroic at 10% width or maybe a little closer to 14.5% width? MY WIFE: Are you still staring at that man?

In keeping with his silver-age design, he’s got a chin that falls somewhere between “Jay Leno” and “bulldozer”. His suit is bright and colorful, and he’s ripped like Hercules even though his powers do not involve physical strength. In fact, I can’t think of a power more fattening than telekinesis. These days the only exercise I get is from walking to, and subsequently opening, the fridge. If I could move food with my mind and fly, then it would take me about two weeks to get to the point where I could cosplay as Castle Wulfenbach.

Thus begins the journey of Star on Chest. His Bio:

Star on Chest is becoming the premiere celebrity crimefighter of Millennium City and is the author of “An Awesome Being on Being Awesome, the Story of Star on Chest”. He appeared in People magazine’s “Top 50 best-looking superheroes of 2007”, and was a guest judge on ABC’s “Dancing with the Superheroes”. He’s the exclusive spokeshero for Altmier’s Brand Zesty Hot Sauce and for State Trust Auto Insurance.

For product endorsements, public appearances, or crime fighting, please contact Champion Media Worldwide and ask to speak with his agent.

A personal message from Star on Chest: “I’ll be appearing at the grand opening of the Northwood Center Mall this weekend. Stop on by to see your favorite star-based hero in person! Autographed photos just $20! Bring a friend!”

Champions Online doesn’t have catchphrases, but if it did his would be, “Don’t you KNOW who I AM?!?”

No, wait. It won’t let me use that bio because it’s too long. Apparently the biography system is powered by Twitter. I whittle it down, but then it complains that I have profanity. After much confusion I discover it was the phrase “hero in” that was setting it off, which it was evaluating as “heroin”. The content filter was worried I was promoting the use of dangerous narcotic drugs.

Dear Young People: Heroin can reduce you to a puking husk of a glassy-eyed junkie prostitute. Eventually you’ll find yourself haggling over the price of sex because you don’t have change for a five. Please do not try heroin unless your life is already worse than that. There. That should keep the kids safe.

Anyway, I revise the bio for brevity and remove the words “hero in” so as to avoid corrupting our impressionable youth with pro-heroin propaganda.

Eventually I summon all of my strength, all of my willpower, and boldly click the start button to begin the game.

Man, I should have gone with 10% width on the nose.

You know all those anthills you stomped on as a kid? Well, payback is a bitch.
You know all those anthills you stomped on as a kid? Well, payback is a bitch.

The city is in chaos. It’s being invaded by bug aliens known as Qualar or Quaa’lar or Qua’lor or some such piffle. Aliens run rampant through the streets and the police are fending off never-ending waves of bug man from behind hastily constructed barricades. Buildings have been smashed. Fires burn. The dead litter the sidewalks. The coffee shops are all closed.

Oh, now I’m going to have that 80’s song stuck in my head all day. Thank you so much, game.
Oh, now I’m going to have that 80’s song stuck in my head all day. Thank you so much, game.

I begin my life as a hero in* the midst of this destruction. My first act is to climb out of a pile of rubble. I’m not the only one, though. Apparently this rubble has been spewing out heroes in an endless stream since launch day. This rubble is the king-hell clown car of the ages. There are actually people appearing on top of me before I can even step away from the pile. This leads to that awkward moment you get in MMO games, “Pardon me miss, but it seems we’re occupying the same physical space and you haven’t even bought me a drink yet.” I step out of the transporter malfunction and greet the nearby police officer.

Time to see what’s going on around this burgh.

* This phrase is not an endorsement for heroin.

 


 
 

FUEL: Introduction

By Shamus Posted Monday Sep 21, 2009

Filed under: Game Reviews 46 comments

Fuel is an open-world racing game from French developer Asobo. Weather-based cataclysm has made the land uninhabitable. Most people fled to somewhere safer off the gameworld map, but some people remained and live in this Mad Max-ish wasteland. Inhabitants spend their time racing for fuel and vehicles. That’s not a summary of the plot. That is the plot, in its entirety. It’s just a premise to justify the whole “racing in a vast wasteland” thing.


Link (YouTube)

Now to the point: I really don’t like racing games. I find them to be pretty much the antithesis of what I want from a game. They’re boring and frustrating in equal measure, and they don’t generally have the gameplay elements I enjoy: Characters, story, exploration, and experimentation.

These red flags mark roads as being part of a particular race.  Sometimes I encounter them in free ride mode and realize, “Gosh, this is someplace I’ll end up if I ever get around to playing the racing part of the game.
These red flags mark roads as being part of a particular race. Sometimes I encounter them in free ride mode and realize, “Gosh, this is someplace I’ll end up if I ever get around to playing the racing part of the game.
The standard racing game mechanic is that you are placed into a race where all the other cars can out-accelerate you, but your vehicle has a 5% higher top speed. (Even if you’re all supposedly driving the same type of car.) The race starts and everyone leaves you in the dust in the first hundred meters, and then you gradually pass them and work your way to the front of the pack. You’ll win, as long as you don’t make any mistakes. Of course, running a course without making mistakes requires practice. They are designed at the outset to be a practice-makes-perfect experience. That’s not an element of gameplay, that’s the point. You race over and over until you master the course well enough to best the AI drivers, and then you get another course to master.

I enjoy learning general-purpose skills, and I can’t stand learning one-task skills. Learning to drive like an expert is fun. Becoming an expert on course #19 is, for me, not fun at all. When I’m running a race I don’t experience the “thrill”, I experience intense stress. One bad turn might cause me to clip a bit of scenery and crash, and the entire run will be ruined. The better I’m doing, the worse I feel because the closer I get to the finish line the more I have to lose. When I finally beat the race I don’t feel elation, but a sense of grudging relief. “Geeze. I hope I never have to do that again.” Racing games are built around failure, and you fail until you master the hurdle. You’ll spend far more time running races where you lose than having races where you win, and negative feedback far outweighs positive feedback.

This is not to say that racing games are bad or an invalid game type. Some people really enjoy this iterative learning, and I certainly wouldn’t want all games to suit my tastes at their expense. (And I can’t imagine how a racing game could be made to suit my play style anyway.) It’s just that racing games have nothing to offer me from an entertainment perspective. I don’t enjoy it when I lose, and I don’t enjoy it when I win. A victory is just a short window wherein I stop being miserable for a minute or two. This is why I hate Grand Theft Auto games. They’re built around this same practice / punish mechanic, and I always feel like the designer is deliberately wasting my time.

“Then why”, you ask in a shrill, indignant voice, “are you reviewing a racing game, Shamus?!?”

Well, I’m not going to review the gameplay in FUEL except to say that’s it’s a racing game and if you like that then it does that and it might be a game which could appeal to you. There’s no point in me reviewing the gameplay itself, since I don’t even know enough about racing to know if this game does it particularly well. We’re not here for the racing, we’re here for the technology.

The world of Fuel is BIG: ~114hkm on a side.  Varied, too.
The world of Fuel is BIG: ~114hkm on a side. Varied, too.
I try not to make a big deal about graphics, simply because so many other reviewers focus so heavily on graphics. I hate to give the subject more attention, and I never want to encourage the notion that more good graphics = more gooder game. But I do feel the need to point out that the graphics in Fuel are remarkable if you’ve got the hardware. (I now have a high-end graphics card, so I can no longer offer advice on how well a game will run on most systems or how gracefully a game scales down.) And of course you can try the Xbox 360 version if you don’t. Er, assuming you have an Xbox 360.

No, we’re here for the technology this time around, and the technology in Fuel is amazing. I went over the details at The Escapist, but the short version is that this game wouldn’t be possible if it wasn’t procedurally generated. I want to look at what it does, how it works, and where I’d like to see these ideas go from here.

Around the time I started this blog, I had a programming project where I tried to make some procedural roads. (Sadly, I’ve lost the source. I went looking for it a few months ago and couldn’t find it. I can’t imagine what I did with it. It’s not on any of the backups I’ve done in the past couple of years. I don’t know. It’s just… gone.) The source is gone, but I remember the project and the lessons I took away from it, and it was interesting comparing the techniques I used with the ones in Fuel. (This is not to imply that my project looked like Fuel or did anything even in the same ballpark, but I was playing with the same ideas on a much humbler scale.)

I divide the procedural systems of Fuel into three broad categories: One generates the terrain, another generates the roads, and the other populates the world with objects. I want to look at each of these systems, see what makes them tick, and maybe compare them to work I’ve done in the past. I’ll look at each of these three systems in a later post.

 


 

Theme Changes

By Shamus Posted Sunday Sep 20, 2009

Filed under: Notices 76 comments

A few notes on some housekeeping changes here. Sorry to bore you with non-entertainment content, but I’d rather say this once in a post than a half dozen times in email:

I’ve updated the site theme. Quotation boxes should now have more than 40 characters across, and the home link on the top should now actually link to home.

On the downside, I had to remove the neutral and evil themes for now. Sorry about that. About two years ago we had an interesting thread talking about why some people prefer black backgrounds and some people prefer white. At the time I thought it was due to environment (lighting) or hardware (size and brightness of your screen) but after reading what people said I’m now confident that different people just work differently.

It came down to a choice between Super Cache (which I need in place if I don’t want the site to go down when I get links from a really big site) and the theme switcher. They were not compatible and the theme switcher wouldn’t work properly for people who never left comments. (That is, a vast majority of visitors.) It IS possible to make the two work together, but not without writing the plugin myself. A caching plugin is a large and complex task, and I’m not up for that level of project at the moment. This isn’t a problem that can be sorted out with just a couple of hours of hacking, anyway.

As an olive branch to the dark background fans, I’ve altered the default theme so that it’s a couple of shades away from pure white. Hopefully this will make it less painful for you to read. This change in experimental, and might change again based on feedback. I’d like for the site to be just right for everyone, but we can’t have that. So the goal now is for something we can all live with.

Feedback on the theme and site behavior welcome.

EDIT: I said in the comments below:

Additional: I just realized that to integrate theme-switching with super-caching I'd also have to re-write my dice roller, since it needs different images for white and black, and those would need to be controlled by the CSS.
 


 

Facebook Manners And You

By Shamus Posted Saturday Sep 19, 2009

Filed under: Movies 35 comments


Link (YouTube)

The “50’s Educational Short” is a really common parody, but this one was exceptional. Usually they just slap a black and white filter over it and call it a day. The film grain, the bad cuts, the costumes, the music, the camera angles… everything is spot-on. They even had timeperiod-appropriate underwear on Timmy. If it wasn’t about facebook, it could probably pass for the real thing.

As a joke about Facebook, it’s not bad. (It might resonate with me more if I used Facebook.) But as a style parody it’s brilliant.