a bit of this and that

I spent so much time playtesting Gas Food Lodging that I’ve developed a case of trigger finger from holding down the W key. Never let it be said that I don’t suffer for my art. It’s also instructive to note that if you make a game with basically one button, you’re going to be pressing that button a lot. I think the next one will use a few more controls, just so I don’t have to spend another two weeks soaking my hand afterwards.

The Nexus 7 looks amazing. It’s the first tablet I’ve seen that has me checking my budget. The lack of WebGL on Chrome makes it unlikely I’ll go much further, though that may come in time. On the positive side, I’m seeing more people here and there asking about WebGL support on mobile, so hopefully there’s momentum building.

Regarding the issues I was pondering in the last post, I’m still dithering about open world vs. linear narrative. As it happens, I have a second project I want to work on, so I’m dithering about that now. Sorry, it’s all a bit vague. The important thing is that I’m not jumping right into code. Lesson learned.

Giles Thomas of LearningWebGL gives Gas Food Lodging a nice mention in his latest dispatch. Awesome!

locked doors and broken dishes

The locked door problem is driving me crazy.

It’s been said specifically about Half-Life, but applies to many other games, that a player winds up having to travel through miles of monster-infested corridors just to get to the other side of a locked door. Concerned made good use of this trope: you’ve got a crowbar, a pistol, a machine gun, a rocket launcher, and you can’t get through a locked door? Hell, you’ve got a foot. Door frames aren’t made from adamantium.

Of course, the door can’t be blasted into bits because going down the monster-infested corridors is the point of the game. The locked door enforces the narrative flow.

Another way of enforcing the narrative is to let the player go anywhere they want, but lock them into a sequence of interactions. Bob won’t talk to you until you’ve talked to Amy, and Amy won’t talk to you until you’ve found the broken dish, and the broken dish isn’t even visible until you’ve talked to Steve. Seriously. Like talking to Steve made it just magically appear. Steve is not a fucking wizard, okay? And what’s Amy’s deal, anyway? Why’s she acting like a stuck-up dork? I didn’t break the goddamn dish.

Same problem as the locked door, but in some ways, more frustrating. In the real world, people won’t refuse to talk to you just because you’re missing an item of crockery, and things certainly don’t just appear out of thin air because it’s the “right time”.

There is a third option: the out-of-order narrative. Let the player go anywhere and do anything, and let a narrative assemble itself from these interactions. No plan, no flow. It’s the mode of play that most resembles real life, but oddly enough, it’s used the least. Wander around a city sometime looking at random things, and talking to random people, and see how much of a story you can put together. Human beings don’t find this sort of thing very satisfying. We need to see the arrows: this happened because of that.

The reason I’m obsessing about this right now? I’m writing the narrative for a new game, with as much detail and thoroughness as possible up front, and I’m getting angry over how much work I’m going to have to do to keep the bits of narrative from bumping into each other. Like, okay, there’s a corridor over here that holds plot point 1A, and the room over here holds plot point 1B. There is no earthly reason why you can’t go to 1B if you haven’t gone to 1A yet. And yet, to maintain a linear narrative, I have to put a locked door in front of 1B (that magically unlocks once you’ve dealt with 1A) or take 1B right out of the game (and have it appear, mirable dictu, just when you need it).

Or I let players visit 1B before 1A, and the game makes no sense half the time.

Most successful game designers just pick one and get on with it. I’m not there yet so I have to rant a bit. It strikes me that the problem arises from wanting a game to work like a story and like real life. This is something that writers deal with all the time. You can make a story realistic or you can make it interesting. Even gritty cop shows have to use dramatic conventions to keep viewers from tuning out. Every reality show involves some degree of editing to cut out the dull bits, or even to synthesize conflict out of random bits of tape.

I haven’t found the right compromise. Still looking.

Also: Darien Acosta of webgl.com has written some very kind things about Gas Food Lodging. Bookmark that site.

a little post mortem

After the last project, I said that I’d be trying to write the game script sooner in the process. I was half-right, though I’m not sure which half.

I started by writing down the basic idea of the game—you were a young alien chef in training, trying to make a name for yourself by coming up with the greatest dish ever. I figured you could travel around looking for ingredients and advice, cooking for people to get a sense of what they liked, and sooner or later someone would let slip some bit of information about one might go about creating the greatest dish known to, er, alienkind.

I had the basics. I went to work coding the environment and the NPC models.

Once I had those, I started working on the script, and discovered I hated the idea that I’d just spent the time laying the groundwork for. It was stupid. I wanted something—well, something else. Meaty. Grim. Dead Space-level grim, not primary colors in a sunny sky. Wandering through a dark clutch of scary weeds, bumping into the bodies of people you knew. Sweeeeeet.

After toying with this idea for far too long, I told myself to lighten the fuck up and have some fun. This is always good advice. I’d still lost the time, though, and I still didn’t want to make a game where you went around cooking for people without risk, without a motivation other than ambition. (Ambition is a fine motivation in life, but in stories I find it uninteresting unless it leads characters down darker paths.)

I briefly considered combining the two, and creating a game where you had to go around a dark, scary clutch of weeds and cook for people to stop them from killing you. I still think the sheer stupidity of it would have worked, and I may go back to it someday.

In the meantime, I was tinkering with the code. This isn’t usually a bad thing. It’s a useful process, on occasion—test this, try this out, find alternative methods. However, it’s got to be part of a plan, or the tinkering takes over, and turns into bike-shedding. I lost a significant portion of those three months arguing with myself over what color to paint the weeds (so to speak).

Eventually, I came up with the idea of writing a short farce. (Can’t imagine how.) It still took a couple of rewrites to come up with the idea of a reusable minigame. That one got a big cheer.

In all, I suspect I spent half the time thinking how much I disliked my ideas, then desperately trying to come up with new ideas to dislike. This isn’t going to cut it in future.

For the new project, I’m going to try writing a good bit of the script up front before I start coding. I’ve resisted this because writing doesn’t feel like work—at least, not in the way that coding does. But if it saves me time and tedium, then it’s well worth it.

gas food lodging

Hey, gamers! Tired of playing the Chosen One, the hero that saves the world? Haven’t you always wanted to play a fussy hotel manager with a handful of difficult guests? Of course you haven’t! My God, I’ve just wasted the last three months of my life in a pointless exercise!

But what if I told you that the hotel manager is a flying alien from a gas giant planet? And the hotel is a cluster of weeds? And this bucket of dead fish is really my collection of gold coins? I’m rich, I tell you!

Welcome to the world of Gas Food Lodging.

Let’s bring our cast out for a big hand.

Our aliens are called paddlers. They’re asexual bags of gas (insert joke here) living it up in the atmosphere, high above the thick impenetrable undercloud. Paddlers eat, talk, dance, play sports, and stay in hotels. (That’s probably not all you need for a viable civilization, but I had a strict remit.)

You’re Hische, the hotel manager. It’s your responsibility to make the guests feel at home, and it’s their pleasure to call for you at every waking moment. Cross the weeds, find out what the guest wants, and make it happen. Simple.

In real life, sound doesn’t look like this. It’s actually mauve.

The flashing red bullseye tells you someone’s bellowing for your help. Follow it to the source—though once you get there, you’ll have to chase down the guest, who’s too busy calling you to notice you’ve arrived. Once you’re close enough, the guest will stop. Face em and hit E to get an earful. (The em isn’t a typo. An asexual species requires non-gendered pronouns, and I’ve chosen e, em, e’s. Yes, I’m aware that it makes everyone sound vaguely Cockney.)

Most encounters with a guest will require you to do something, like making dinner or dancing. Fortunately, nearly everything in this world can be accomplished by shaking yourself in some fashion. (A planet of pop stars? The mind boggles.) As you move, you fill the progress bar.

The chef makes the best denatured proteins this side of Low Cloud.

Once you complete a task, you’ll be rated so many stars out of five—much like a hotel rating, oddly enough. At the end, you’ll receive an aggregate score. Oh, and there’s a story, or something, but you can ignore that if you’d rather focus on your dancing and stuff.

Gas Food Lodging. Save the world all you want, pal. You’re still paying for the minibar.

Note: if you’re attempting to play this on an integrated GPU, you have my sympathies. I did all I could to optimize the drawing without losing the visual style I wanted. Didn’t help.

summer freeze, makes me feel fine

Gas has entered feature freeze. My last crack at the script prompted me to add a few new things to the codebase, after which I said enough, it’s fine, leave it. However, I tossed most of that script away, so it’s going to be another couple of weeks before I can release it. (Release Gas? Ha, ha, ha. I’ve been holding that one in for ages.)

I said after Easy Does It that I’d be trying to script earlier in the process than later. Though I did start the script early on, I kept thinking hey, let’s see what this looks like, so I’d look up a week later and find a new game concept (that I might actually use, or might not) and a half-finished rough script that didn’t read so well anymore. It didn’t help that I completely changed the point of the game twice. Indecision seems to be a problem, but who can tell?