Hey, folks! This week, I did a whole arseload of optimization work, experimented with a probably-doomed community moderation system, and launched the Strangers introduction. It's the darkest plot point on the Island so far, and introduces a new race that will probably - one day - become a playable race. Those who were around in the Pilot might remember how Jokers were originally just rumours and whispers, then we got some NPC's, and then they were a playable race. Strangers will probably go like that. This is a long 'un, so hit "Read More" for the whole thing - where Strangers came from, and a certain blogger who could use a bit of help.

So, most of what I've been doing lately is yet more optimization work. The server can handle about a hundred and forty players online before pagegen times sneak over a second each, now. Most of this was optimizations to the server - to PHP, APC, MySQL and Apache, rather than to the Island's game code, although I did change a few modules so that they hook less frequently, and moved some infrequently-updated stuff to the datacache.

Maiko's Pan was a slightly sad but well-received story element - to trigger it, you have to have at least five DK's, and you have to have asked The Watcher about her turtleneck. This was a bit of a strange quest in that it wasn't really a quest, more like an embedded short story. I was worried about the lack of interactivity, but the response has been overwhelmingly positive. It seems that it's less my job to build you a game, and more to build a world for you to play in. I'm not complaining.

But the biggest thing we've been working on is, of course, the blasted Time and Weather system. Again. Some more. And every time I work on it, I'm reminded how this is just similar enough to all my previous work that it throws me for six when I notice how different it is.

So, Emily's done the text for NewHome and Pleasantville. In both cases, she appended her time/weather-sensitive text to the existing Outpost flavour text. So, on a cold, dark night in NewHome, you'll read this:

~~~~~

You are standing in the heart of NewHome. Though called a city, this stronghold of humans is little more than a fortified village. The city's low defensive walls are surrounded by rolling plains which gradually turn into dense, moist jungle in one direction, and a stretch of beach and ocean in the other.

The cold night air is lit up with the many stars in their improbable alignments. You're not sure whether these alien constellations would be visible outside of the Improbability Bubble surrounding the Island.

~~~~~

And during a thundery sunrise:

~~~~~

You are standing in the heart of NewHome. Though called a city, this stronghold of humans is little more than a fortified village. The city's low defensive walls are surrounded by rolling plains which gradually turn into dense, moist jungle in one direction, and a stretch of beach and ocean in the other.

The sun has been completely pushed back by the buffeting gales. A strong wind whips pebbles at your face, and you narrowly miss stepping in a growing puddle of mud that looks deep enough to reach your knees. The locals know better than to be out in this weather, and are likely sheltering safely elsewhere.

~~~~~

I've been struggling through Kittania at a snail's pace, largely because my line of reasoning went something like this:

"Kittania! Treehouses! A shady, leafy, mossy place! I can use the last-state-weather function to talk about the raindrops falling from the trees after it's stopped raining! It's the sort of place I love, so it'll be the sort of place I could write about all day!"

And, being an insufferable smartarse, I took that train of thought and rammed it straight into "Well, to hell with appending the descriptions - I'll write completely new ones! LONG ones! For every time and weather status!"

This was a dumb idea.

The player must be introduced to the Outpost and told what's going on. What's going on will change; the Outpost's defining physical characteristics will not. Bear that in mind (as I should have) while I show you the description for a thundery sunrise in Kittania:

~~~~~

Were it not for the storm, Kittania would be a pleasant place to be right now. Dawn has been cancelled. Kittania is what happens when creatures more cat than human try to build a village in the middle of a dense forest but are too lazy to chop the trees down first, so at the best of times it's a pretty shady place - right now, it's almost pitch black. The trees aren't so much protecting from the storm as concentrating it, gathering like-minded raindrops together into fist-sized falling puddles that hammer into the ground every time the wind rushes through. The roar of the wind and the clash of the rain is almost deafening, and the frequent crack of thunder and flash of lightning doesn't help matters at all. Nearly all KittyMorphs are now wearing clothing of some sort, and most have taken shelter inside the Cool Springs Cafe, a restaurant set in a semi-underground cave. Even in these conditions, it rarely floods, and if it does there's always the ladder up to the Sunny Spot pub. Either way, to stay outside in this storm is madness.

~~~~~

As I remember writing this, I can almost feel my future self leaning over my shoulder and saying "Yeah, you thought you were being clever there, didn't you?"

You might not think that description has many problems apart from being a bit long and clearly a first draft, but look at this one:

~~~~~

It is a warm, sunny afternoon in Kittania, and the trees rustle with life. The sunlight filters in shafts and spots through the dense foliage surrounding and penetrating the Outpost. Robots gather in the few areas with decent direct sunlight, cursing the very idea of coming to this silly, shady place, and wondering why the damned KittyMorphs didn't just chop the trees down when they decided to build a village. That would have been the `isensible`i thing to do. They ponder these things because they honestly just don't understand KittyMorphs.

~~~~~

Now do that same "They didn't clear the trees first, everything's just jammed in between them" bit fifty times. You can see the problem, here. In trying to keep the descriptions fresh for each potential description, I've ended up almost doing the opposite. Emily's concise, concentrated descriptions have a line break clearly separating the information you already know from the information you don't. Mine are prettier to read, but once you've read one or two, they get tedious - I can tell they're gonna be tedious to read, because they're tedious to write.

Or rather, they're tedious to write in sequence, one after another - what we still don't know yet is whether or not they'll be any good when you're playing the game. Whether they'll provoke the somewhat ethereal "Yes, I'm there" feeling, and whether they'll provoke a more frustrated "Just let me get to the bit that's most important" feeling. That's hard to predict and even harder to test for.

But hell, we'll have some Outposts done Emily-style, and some Outposts done Dan-style, so I guess you can try them both out and see. It's not like I can't go back and edit mine later.

This project isn't like writing, and it isn't like programming either - but neither is it at all like what you would expect programming and writing to combine into.

And now I'm going to quit stalling and go back to writing.

(incidentally, I think I'm figuring out what Twitter is for - it's to stop me from writing loooooong blog posts instead of writing Outpost descriptions)

This is your Monday Update for... um, 3am Friday. This is where I yammer on about what I've done this week. I've been doing this in the forums for the past few weeks as it was pointed out to me that I never actually write about what I release - and then I noticed that oh, hey, I've got a blog. Look at that.

(hey, some things are more fun when we sneak them out! Some of the best things we've ever written have been sneakily, silently released - and it's always nice for the player who finds them, knowing that she's the first to know...)

This week, I fiddled with the chat system and made it all AJAXey and lovely, so you don't have to wear out your F5 key. Behind the scenes, I did a whole bunch of optimization work and a few minor bug fixes. Not-yet-released, graphical updates.

When I say "graphical updates," I mean the sort of graphics you'd experience in a text adventure game - better descriptions of setting, more ways in which those descriptions can change according to game state, and so on. In other words, graphics that you read.

Text-adventure games can be both easy and hard to do. On the one hand, if you're already a writer, it might seem like an ideal job. But consider this...

Emily and I are writing a time and weather system for the Island. The objective is to give the player a greater sense of being a part of a living, breathing, changing world. Time is broken into seven stages: Dawn, Sunrise, Morning, Afternoon, Sunset, Dusk and Night. Weather is broken into seven steps - steps one to three are decreasing intensity of rain-free weather (cold at night, hot in the day), four is clear, calm and pleasant, seven is a torrential thunderstorm. So, forty-nine potential time and weather combinations.

We can cheat a bit, here. For instance, if we do something like this for Squat Hole:

"Nearby, a Midget scowls up at the vivid orange-red sky. It always seems to make him angry, although it does take his mind off the weather."

That can apply to fourteen potential combinations. We don't talk about whether the sun is rising or setting, just that the sky's red and hey, look, there is weather. Weather exists. We can give it a little more fidelity if we check whether the weather is stage four or below, and if it's not, we can talk about the raindrops dribbling up the Midget's nose - we can, in fact, cheat quite a lot and still give a decent sense of space, and of the passage of time.

Of course, we don't actually do that, because we're a pair of nutters who think that we can write 392 different Outpost descriptions and have them all be at least half-decent. Oh, and another 392 descriptions of terrain on the world map.

One thing I really did want to write was the way Kittania felt just after it had stopped raining. Kittania - and this has never been made clear from the current, rather sparse description - is an Outpost set in the middle of the jungle, where nobody bothered to chop down the trees before building a town. The thick ceiling of leaves and branches means it stays dry longer, but once it starts, it keeps raining in Kittania long after it's stopped elsewhere. The weather system stores the last weather condition alongside the current one, and moves one or two steps up or down at a time. Adding transition data to each time pattern means it's 7 * 31 possible combinations, 217 descriptions per Outpost, 1,519 descriptions in total. Yeah, those would be excellent graphics - but the only time it really matters is just after it's rained and the player's still getting wet from the trees shaking themselves in the wind like wet dogs.

It gets... exponential. But this is exactly what text-adventures are for - making you feel the cold, making you smell the lightning.

In a text adventure, you can tickle all five senses. You can smell the wet KittyMorph, taste the foul Midget beer. You can feel the high-voltage prickle of static charge arcing between the hair on your arms when you get too close to the Improbability Drive, the scent of ozone, the dry, metallic taste in your mouth. You can't do that in a graphical game.

On the other hand, if you want to make it rain in a 3D game, you only have to do it once; lines fall out of the sky, terminate in small animations or particle effects, reflections are enhanced, white noise comes from the speakers. A big job, but one that you don't have to repeat for every area in the game.

I really hope this weather thing actually works. :) It'll make things interesting for the Robots, certainly. The races are due a rebalance, and having one race powered by the sun has interesting possibilities.