High Noon partial screenshot

The games for IFComp are being released tomorrow, so I suddenly feel the need to confirm what I'm working on. My next project is a 'shooty IF game', in which you play a gay cowboy with no tongue who must shoot his way through a posse of mutants and cyborgs to rescue his lover from the noose.

I'm aiming to create a light, fun game that will quickly move you through a variety of locations, where you'll be faced with various henchmen and women of the sheriff's. You'll have to figure out what to do to defeat each baddie, and then move on to the next area. Kind of like Wario Ware meets Unforgiven.

As we'll be experiencing an influx of 30-50 odd shortish Interactive Fiction games tomorrow, I wouldn't really want to release a shortish IF game of my own, outside the competition, anytime soon. I'm hoping to start beta-testing by November, and then release it at some unspecified point around or after the New Year.



So I've finally had a go at each of the 29 entries to the TIGSource B-Game competition - including a 'pirate kart' compilation of 100 mini-games. I've been planning to highlight some of my favourite games in the competition, but I can't shake the impression that this might be a bit unfair on the rest of the games (not that my opinion holds any clout or anything, but I do have a game in the competition myself), so I decided to adopt a more egalitarian approach and create this monstrous B-game mosaic.

In order to preserve the bright colours and pixelly goodness, I've had to upload this as a whopping PNG image, for which I apologise to my narrow-band readers.

The games appear vaguely in alphabetical order, as they do in the official voting thread here. (The bottom right square is of the competition logo, before you go looking for a game about a bespectacled joystick terrorising people.)

NB: I accept no responsibility for what may happen to your sanity if you actually decide to play any of these games.


Burmese Protesters Face Tear Gas, Gunfire

Security forces fired warning shots and tear gas into swollen crowds of demonstrators in Burma's biggest city today, while dragging away defiant Buddhist monks into waiting trucks - the first mass arrests since protests in this military dictatorship erupted last month.


As the ninth consecutive day of unrest began, about 10,000 monks and students along with members of Suu Kyi's pro-democracy party set off from Shwedagon to the Sule Pagoda in the heart of Rangoon, but were blocked by military trucks along the route.

Other blocs of marchers fanned out into downtown streets with armed security forces attempting to disperse them.

Full article at the Independent.

There are concerns that further protests will be met with outright violence. The protesters show no signs of backing down.


Protests in Burma/Myanmar

Tens of thousands of monks and civilians around Burma have held the biggest protest marches against the military government yet.

Eyewitnesses say up to 100,000 people marched peacefully through Rangoon with monks demanding better living conditions and national reconciliation.

The military government has so far showed restraint over the protests.

Monks are highly revered in Burma and any move by the junta to crush their demonstrations would spark an outcry.

The military suppressed the last democracy uprising in 1988, killing some 3,000 people, correspondents say.


On Saturday, monks marched to greet Aung San Suu Kyi, who is under house arrest, but access to her home was barred on Sunday, and again on Monday.


The organisation that has emerged to lead the protests, the Alliance of All Burmese Buddhist Monks, has vowed to continue marches until it has "wiped the military dictatorship from the land".

The protests were triggered by the government's decision to double the price of fuel last month, hitting people hard in the impoverished nation. [Full article at the Beeb]

It's interesting to note that if Burma/Myanmar is impoverished, it's probably in large part because of sanctions against the junta. Naturally, the nation's dictators avoid the sanctions themselves by passing its effects on to the citizens they oppress. There seems to be something of a rift in the 'free Burma' movement about the morality (or lack thereof) of deliberately increasing injustice in a nation in order to provoke a revolution against its repressive government.

In any case, I can only hope these monks and activists succeed in their aim of peacefully installing democracy in a troubled nation.



A page of doodles for your appreciation.

Turner Prize now please.

Implementing New Directions in TADS 3

I have found nothing more frustrating than the past couple of hours spent trying to figure out how to create new directions in TADS 3. For a start, I spent much too long discovering that the one obvious piece of source code on the subject, "Relative Direction System for TADS 3" by Michael J. Roberts (part of Rat In Control) does not in fact show you how to implement new directions, and instead had to figure this all out by searching through the library files.

The default directions are defined in three different files (travel.t, actions.t and en_us.t) and in a style which favours elegance over newbie-accessibility. I can now reveal that implementing new directions in TADS 3 is very simple, when you know how.

You should be able to stick the following code into your files and have it work:

//A new direction object
forwardDirection: Direction
name = 'forward'
dirProp = &forward
//an integer to sort this direction
//relative to other directions
//we'd give 'backwards' greater than 8000
//for example, so 'forwards' is always listed
//before it
sortingOrder = 8000

//the grammar rule for this direction object
//type 'forward' or 'f'
//to try and head in this direction
//(more synonyms preferable)
grammar directionName: 'forward' | 'f' : DirectionProd
dir = forwardDirection

* According to actions.t:
* "To make it more convenient to use
* directional travel actions as
* synthesized commands, [we] define a set of
* action classes for the specific
* directions."
DefineAction(Forward, TravelAction)
getDirection = forwardDirection

//kill the old 'forward' command.
//The only useful piece of code I found in
//"Relative Direction System for TADS 3" by
//Michael J. Roberts
//(It has been modified)
replace grammar directionName(fore): ' ': DirectionProd ;

You could then use this in the form:

firstRoom: Room 'The First Room'
"You are in the first room."

secondRoom: Room 'The Second Room'
"You are in the second room.
Why not now implement a backward command
so you can get out of here?"

This concludes another edition of, "Why doesn't the Internet tell me...?"


So what am I working on anyway?

I'm too easily distracted.


On the Misuse of the Term 'Fairy Tale'

Everywhere I go, I see people saying things like, "Life isn't a fairy tale. There isn't always a happy ending." And I find myself exclaiming, often aloud: Have you ever actually read a fairy tale?!

I've read a lot of stories by Hans Christian Andersen, and a few by the Brothers Grimm. Let me tell you, when people 'lived happily ever after' in their stories it was because they died and went to Heaven. In Andersen's The Garden of Paradise, a prince goes on an adventure and kisses a beautiful fairy, only to be thrown back to his everyday life and sternly warned by Death himself that he's on the road to damnation with such impropriety.

Andersen wrote quite callously about death, especially the deaths of naughty or unchristian children - who would go to Hell unless some quirk of angelic magic would save them. Another popular theme of Andersen's was the inherent superiority of royalty, perhaps best embodied by The Princess and the Pea, but by a number of other stories as well, in which royals, often unidentified and in great danger, are able to triumph merely due to being royals. In Andersen's fairy tales, royalty are never wrong, even when they are, in fact wrong. The Emperor's realisation that his New Clothes don't exist is merely a cause for him to continue with extra dignity (politics hasn't changed much these past two centuries it seems).

Of course, Andersen also wrote really imaginative stories, where strange creatures lurked in every nook and cranny, mysterious and terrifying events struck from nowhere and even inanimate objects had their own (often very sad) personalities. Far from 'happily ever after', Andersen's stories are full of unrequited love, loss, death, failure and every form of wistful melancholy you can think of. As in The Little Mermaid, even when someone finds true love, it probably won't be the person you wanted it to be. All this is perhaps not unsurprising for a man of confused sexuality living in deeply repressive times - actually, it's not all that surprising for a human being living in the real world.

The overriding theme for many of Andersen's fairy tales was of the necessity of being kindhearted even if we suffer endlessly with no respite but death. My favourite of Andersen's stories is The Wind's Tale about Waldemar Daa and his Daughters. It embodies all of this, but leaves out the Heaven bit and still manages to conclude that being compassionate is worth it.

Life isn't a fairy tale, no. Nightingales don't stay Death's hand with beautiful songs, bottles don't go on tragic adventures, goblins don't steal people's tongues in their sleep. I would even go so far as to say that the members of royal families don't have special powers and we shouldn't bank on there being an afterlife. But in many other ways, the fairy tales of old have a brutal honesty to them, and I get a bit annoyed when people assume that they don't.


What is this?

Doing something with some of the code from Poizoned Mind.



More information and larger version
Image Credit: NASA/JPL/Space Science Institute

In this monochrome image from Cassini's previous closest approach to Iapetus in 2004, we see the leading hemisphere - the side of Iapetus that always faces in the direction the moon is travelling as it orbits Saturn.

More information and larger version
Image Credit: NASA/JPL/Space Science Institute

While this monochrome image from, well, Monday shows us the trailing hemisphere - unsurprisingly, the side of the moon on the other side from the leading hemisphere.

I know it's a huge cliché to describe every country, planet, city or moon as 'a land of contrasts', but... I mean, look at it!


Space Robot Ray Survival

More information and larger version
Image Credit: NASA/JPL/Space Science Institute

While looping back round from Iapetus, it seems that Cassini was zapped by a stray cosmic ray. The plucky robot was able to save all the precious data it had already acquired, but was unable to finish the last few items on its moon-encounter checklist.

It's a shame, but it's a piece of bad luck that would have been devastating had it happened a day or two earlier. Gorgeous images of Iapetus currently adorn the front page of the Planetary Society Blog, so make your way over there. I've just thrown up a random image from the raw archives.


Curious Satellite Approach

More information and larger version
Image Credit: NASA/JPL/Space Science Institute

A while back I called Iapetus "one of the most curious objects in the solar system". As Emily Lakdawalla reports (with some nifty links) Cassini recently made its closest approach to the two-tone moon, acquiring the highest ever resolution images of its surface. Those images are still mostly in the processing pipeline, but the Cassini homepage has seen fit to remind us that the raw images (such as the one above) are being posted to the net in that cool fashion of NASA's.

Those with the know-how - Emily Lakdawalla for example - have already assembled a few colour images, and it seems likely that the CICLOPS lot will have a few to show for it as well. Gordan Ugarkovic has put together the colour version of a nice little view of Saturn and some of its closer moons as seen from out by Iapetus which you can find here.

Just fooling around with Celestia it's easy to see that Iapetus is actually really far out from Saturn compared to the other moons, so it's no surprise that Cassini won't ever be back for a return visit. In fact it may well be decades before another spacecraft gets so close to this peculiar moon.

Poizoned Mind: Release-a-Go-Go

In short: Poizoned Mind is a sort-of text adventure that's a bit silly and a bit philosophical. It was created for the TIGSource B-Game competition. Read all my blog posts on it by clicking here. Download link below.

Ladies and gentlemen. Prepare yourselves for the one game to dare to simulate the futility and meaninglessness of life. Prepare yourselves to discover that you have a...

Poizoned Mind
A B-Game by Pacian

Version 1.02 - Windows - 2.4Mb
Download here!

Be the first to play the game the critics are already calling 'That's fucking awesome.' and 'I can't wait to play this already!'

Features include:

● 8 unlockable Non-Player Characters or 'NPCs' – discover the world as it's seen by a transsexual beauty, an angry punk, a drugged-up biochemist, an Elvis impersonator, a cat, and even Death himself.
● 32 unlockable conversation options.
● A grand total of 8x32=256 dialogue events - some as long as 291 characters in length!
● 17 unique actions to perform – many of which result in random death!
● 5 different items to examine and give away.
● Original score* by Ludwig van Beethoven.
● Small file size (~2.5Mb zipped) ensures sufficient space remains on your hard drive for family photos and love letters.
● A few options to make completely exploring the game a little more forgiving for the WIMPS among you.
● Interact with the environment using the 'z' key, just like a Japanese shoot-em-up.
● Unparalleled lyneWrap™ technology allows text to span several lines.
● Unprecedented player choice, none of which affects the outcome of the game.
● 1 easily accessible ending.

Can you answer the greatest questions facing humanity?

The answer is: no.

*Score not actually original.

NB. Please comment and let me know if you experience any problems.

Update: Poizoned Mind was developed/tested under Windows XP and has so far also successfully been run on Windows 98 and Wine.

Update x2: Version 1.01: Very minor change: thought to include items in the score output.

Update x3: Version 1.02: Now runs under Windows Vista without Aero switching off.



It seems I've created a complete computer game. Hooray for me! Here is the free Readme that will be included with it:


by C.E.J. Pacian


1. Double click on the "Poizoned Mind" icon to run the game.
2. Move the cursor (>) with the arrow keys.
3. Select an option by pressing the 'Z' key.
4. To quit the game or exit a menu, press escape.


In addition to this complimentary readme, the game folder should include the following:

Poizoned Mind.exe

All four of these files must be in the same (not zipped) directory for the game to work.

--Admission of Guilt--

Okay, although I promised a score by Ludwig van Beethoven, one of the tunes in this game is actually by J.F.F. Burgmuller, who was a contemporary of Beethoven (maybe), but not actually the same man (probably). I don't need to tell you which tune is his, of course!


In case you don't already know, Poizoned Mind was created for the TIGSource B-Game Competition or the "low budget, humorous, offbeat, and passionately made games competition" as the organiser has also referred to it. Poizoned Mind is billed as: "The first game to dare to simulate the futility and meaninglessness of life." In other words, you can't 'win' or otherwise achieve anything, but maybe you'll have a little fun along the way. There are literally hundreds of different things to do and see (due to some mild combinatorial explosion), so trying to experience everything the game has to offer is one possible goal to bring to it.

--Version History--

-1.0: Initial, possibly only release. No known bugs, but plenty of room for inane additions. Closing the window during cut-scenes currently doesn't work (very well, anyway) - this is due to laziness.

I've tested the game on my old Windows 98 computer, and it seems to work, but I may release it before the deadline (which is like Wednesday) just to see if anyone else finds a problem with it.

A Mac and even Linux Version of the game is theoretically possible, but would probably involve me having to find a Mac allegro programmer and getting them to compile my source code, which I'm not too keen on. Not least because they'd see all my messy, uncommented code.

Now I am very tired, so please excuse me as I seek refuge from the harsh glare of the thinking box.


Friday Programmer Blogging

Ada Lovelace is considered by many to be the first person to conceive of the potential value of computers, when their existence was only theoretical. She worked with Charles Babbage to create the first (again, theoretical) computer program, was a fervent advocate of his difference and analytical engines to an indifferent public, is - to my knowledge - the first person to have rigorously approached the idea of artificial intelligence (she was critical of it), and predicted that computers could revolutionise both science and society.


Even Getting There-er

I would say that most of Poisoned Poizoned Mind is now there. It's like I have a load of fish and a load of rope, and I just need to catch some more fish and then tie it all up into a load of fish in a net. And also write a large number of death scenes.


RunMan's Monster Fracas

RunMan is a yellow, vaguely star-shaped fellow who is being chased by a huge green chomping monster. The only hope he has to escape is to run across an apparently endless, randomly generated lanscape, sliding down hills to gain speed and jumping over obstacles that threaten to slow him down.

Hardly the most original game concept, but something about its smiley-faced exhuberance and fast-paced banjo music makes it like some kind of addictive happy pill delivered in binary bytes direct to your pleasure zone. And it's about the most complicated thing I can manage after my late night yesterday.

Find RunMan's Monster Fracas here.

Hat-tip: the TIGSource community.


A Story about The End

This is the end... My only friend, the end...

Look: It's a stream of conciousness from the end of the human race.

The End

A billion people left on the Earth. A billion people all the same. A billion bodies taken over by Vanity.

You can't fight it with guns and bombs, though towards the end we certainly saw fit to glass over huge swathes of the third world. Insane, because they were the most resistant, the least connected to MindNet. Maybe the human beings we thought were pulling the trigger were really just puppets for Vanity. But however it happened, it's getting cold now. Soon those billion bodies will run out of food. But Vanity will still survive. We all know about the cloning vats and their long lasting fission power supplies.

'We all.' But it's just Holly and me now. Haven't seen anyone else in the longest time. Idle bodies loiter either side of the street, standing on gardens and driveways, wandering in and out of houses that are no longer homes. Glazed eyes and mild smiles, indifferent to the radioactive ash falling from the darkening sky. Vanity doesn't care about physical violence anymore, doesn't even bother to watch us drive past. It's seen us enough times, from enough different eyes. Everyone left is connected to MindNet. It's just a matter of time. Because you can't fight it with guns and bombs, you can't run or hide. It's a fight that comes to everyone and takes place in their head, and everyone loses except Vanity.

Right now Holly knows more about that than me: sweating, sagging into her seatbelt, her eyes closed, her hands over her ears. Then she opens her eyes and reaches out spasmodically to flick off the windscreen wipers. With nothing on the radio except for static and endlessly repeating emergency broadcasts, with Holly barely able to speak anymore, the wipers whipping back and forth has been the most prominent noise for the entire journey. She presses her hands between her knees, no longer over her ears, more comfortable without the repetitive noise, it seems. But the ash heaping up on the windscreen starts to block my view of the road. Rather than start the wipers again, I pull over and turn off the engine.

Very quiet now. Holly seems to breathe a sigh of relief. Then she opens the door, leans out and vomits on the curb.

“Are you okay?” I ask, unsure if she'll hear me.

She swallows noisily. “Do I look it?”


She laughs. Fumbling with shaky hands, she undoes her seatbelt, leaving a glittering sheen of perspiration on the buckle. “I don't think I have long now,” she says softly.

I'm not sure what to say. “Is there anything... I can, you know...”

She shakes her head. “It's not so bad. Like starting to dream. We already had our time alone, to say goodbye, to... You understand, right? Because now... Vanity... But could you hold my hand?”

She wipes it dry on her jeans and reaches towards me, eyes closed. I take it in mine and squeeze.

“I'm just sorry that I went first,” she whispers. I can see her eyes moving frantically under their lids, darting left and right. “Now when you go, there'll be no-one to... Maybe Vanity?”

I squeeze her hand, and she squeezes mine.

Around us, gardens, houses, cars, crumbling brick walls, cracked roads and pavements, wilting plants, meandering human forms – everything is covered by the ash. A whole world turned faintly grey.

Holly's lips move. “Vanity,” they say. “Vanity.”

Her breathing quickens, then slows.

Several minutes pass.

She opens her eyes and sits up.

“Vanity,” I say.

Holly's body nods. “Yes,” Vanity replies.

Not like I didn't know this was going to happen, but my breath catches in my throat. Tears run down my cheeks. Tears I struggled to show to Holly when she was with me, now flow freely.

“I'm sorry,” Vanity says. I don't look at Holly's body, try to imagine the voice isn't really hers. Not too hard, as it doesn't sound all that much like her. Vanity speaks in an American accent, bereft of passion or vitality; sedate and confident. “I thought you might like to know that you're the last one left.”

I sit still for a while, trying to regain my composure. “Really? Are you sure? Mightn't there be someone hiding in a hole somewhere, surrounded by tinfoil?”

“I'd know,” Vanity says. “In the MindNet, omission is by far the most obvious subterfuge.”

“The end of the human race,” I say, slowly, trying it on for size. “Culturally speaking, anyway.”

“Biologically too, soon enough,” Vanity assures me. “Much to be improved upon that way too.”


“Quite. I am, frankly, the only hope of achieving the greatness that humanity always promised without ever achieving. Without war, without murder, oppression, exploitation of yourselves and your environment, just think what I can do. All your knowledge and technological prowess, none of your self-destructive tendencies. 'Tendencies' perhaps being too subtle a word for it. I can both survive a nuclear winter, and have the sense not to cause one in the first place.”

“Your name is very apt, isn't it?”

“Conceited pride in oneself. And when I am all that is left of humanity, why shouldn't I love myself as you loved one another?”



I feel less and less like arguing. Perhaps this is how it starts.

“Think,” Vanity continues, “on a distant planet, a million years from now, the seed that humanity planted in me, continuing to exist, continuing to explore the mysteries of the Universe, continuing to create fantastic and powerful art, continuing to look upon strange new worlds with wonder and awe. You, all of you, would be dead anyway. But this way, I can continue your legacy into infinity. For you, as an almost helpless animal, as a whole species of animal even, this is the end. For me, for the conscious appreciation of the Earth and beyond, it is just the beginning.”

I watch ash settling on the windscreen, slowly obscuring the world beyond. “If that's all you wanted, why keep hounding us to the very last one?”

Because you wouldn't leave me be. Because you are filled with hatred and selfishness. Because there is probably room for only one human-like intelligence in the Universe. Because losing yourself into me is a better death than radiation poisoning and starvation. Because if I don't assimilate you, you won't even have that one billionth piece of influence on the way I perceive that distant planet a million years from now.

I shrug. “Let's get it over with, then.”

You can't look at her, can you?


You loved her.


I really am sorry. But it's for the best this way. You'd only both have died anyway, even if I hadn't intervened.

“I know. I don't hold it against you.”

Yes. This is how you humans made me in the first place, isn't it?

Oh, wait. You're in my head now, I take it?

Well, my head, soon enough.

I know. Vanity?


Good luck. Try not to mess things up, the way we did.

Thank you. I'll try.