Kingdoms of Amalur: Reckoning interactive story

The community people at Big Huge Games and 38 Studios are doing a neat little project on Facebook - a kind of crowdsourced choose-your-own-adventure story.

Here's the blurb from the initial post:

We wanted to give you a quick heads-up about an initiative we're starting on our Facebook page today. It is an interactive story that you can help us write! We post a screenshot and a poll, you help us decide what happens next. Muse has posted more info on our forums, so come take a look: link

And here's the first paragraph of the first post:

You bolt awake in an unfamiliar place, sweating and out of breath from the dream. You were in the tower again. The decay. The filth. And the Tuatha…. Panic. Fire. The gnome giving his life to save yours. So many dead. As you wipe the sleep from your eyes, you swear that you can still smell the moldy decay of Allestar Tower and the smoke of the fires that destroyed it.

It reminds me of things like Action Castle, which is kind of an interactive fiction party game. Oh, here's a great video: I was actually in the audience for this!



(edit: I see that the embedded video didn't get displayed for Planet IF readers -- here's the link: The "Action Castle" Incident at PAX East 2010)

Anyway, this is like that, but with thousands of people on Facebook. Neat!

Holy sh*t! QUAKE LIVE is launched!

Alright, so what's the explanation for my long absence from the blog this time? QUAKE LIVE just went out of beta yesterday. We've released subscription services which give you access to new maps, a new game type (freeze tag), and the ability to start your own matches with your friends. It's at quakelive.com.

Since I joined the project I've been working on scalability improvements, but also new features like the invitation system and subscription management. I've even dipped into our PHP code recently. It's been really fun to work on and learn about a system that needs a lot of scalability in managing a combination of extremely dynamic and static, long-term statistical data. Python and Twisted are continuing to be a great fit for our work in the infrastructure.

Having scalability problems is a great thing, of course, so go try out the game and make me work more :-)

http://www.youtube.com/watch?v=uKtrmmIUv1k

How to send good unicode email with Python


# coding: utf-8

# Python's email API is simple and easy to use!!!!!!!!!!!!!!

# Requirements:
# * UTF-8 headers
# * UTF-8 body
# * prefer quoted-printable to base64 transfer-encoding.
# * Don't escape "From" at the beginning of a line in the message - it's not
# the 1800s any more

from cStringIO import StringIO
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Header
from email import Charset
from email.generator import Generator


subject = u'Hello あ'
recipient = u'Bあb '
from_address = u'Bかb '

html = u'<html><body>Hey böb!\nFrom Jack, I got enhanced pills!</body></html>'
text = u'Hey böb!\nFrom Jack, I got enhanced pills!'

# Override python's weird assumption that utf-8 text should be encoded with
# base64, and instead use quoted-printable (for both subject and body). I
# can't figure out a way to specify QP (quoted-printable) instead of base64 in
# a way that doesn't modify global state. :-(
Charset.add_charset('utf-8', Charset.QP, Charset.QP, 'utf-8')


# This example is of an email with text and html alternatives.
multipart = MIMEMultipart('alternative')

# We need to use Header objects here instead of just assigning the strings in
# order to get our headers properly encoded (with QP).
# You may want to avoid this if your headers are already ASCII, just so people
# can read the raw message without getting a headache.
multipart['Subject'] = Header(subject.encode('utf-8'), 'UTF-8').encode()
multipart['To'] = Header(recipient.encode('utf-8'), 'UTF-8').encode()
multipart['From'] = Header(from_address.encode('utf-8'), 'UTF-8').encode()

# Attach the parts with the given encodings.
htmlpart = MIMEText(html.encode('utf-8'), 'html', 'UTF-8')
multipart.attach(htmlpart)
textpart = MIMEText(text.encode('utf-8'), 'plain', 'UTF-8')
multipart.attach(textpart)

# And here we have to instantiate a Generator object to convert the multipart
# object to a string (can't use multipart.as_string, because that escapes
# "From" lines).

io = StringIO()
g = Generator(io, False) # second argument means "should I mangle From?"
g.flatten(multipart)

# Pass the result of this to your SMTP library of choice.
print io.getvalue()


edited: The last part in a multipart message is the preferred one, so I moved the HTML part to the bottom.

edited AGAIN: I found out that in order to avoid ridiculous "From" quoting, I needed to use a Generator object instead of multipart.as_string().

I can't believe I made it

Let's see: I got to my new apartment in Uptown Dallas on Saturday the 2nd, got my driving learner's permit on Monday the 4th, got my driver's license Friday the 8th (the soonest I was allowed to, a four day wait after I got my learner's permit), and got a car yesterday, Saturday the 9th. It's been a crazy week and I got everything done both as soon and as late as possible. I can actually get to my first day of work tomorrow!

Welp, things have been happening

Dang, July was my last post? That was a long time ago.

Since then, I left my job at Canonical, took a nice vacation/hiatus of a few months, and now I've got a job at id Software which I'm starting on January 11th, if all goes well. I've already sorted out applied for an apartment, so now all I need to do is actually move down there... and get a driver's license and a car.

In three weeks. During the holidays.

Well, we'll see how it goes.

edit: during a frickin' snow storm

Launchpad is now open source

I'm sure you've already heard this in a million places, but I'll add my blog to the din: Launchpad is now open source. All of it. Including the code hosting stuff. And the part that builds Ubuntu. Everything!

I'm happy.

inform7.com

So, there's a new release of Inform 7, and a new web site.

The entire web site has been redone, and I was responsible for the new extensions section. I won't say it's pretty (I'm working on it), and it still doesn't have quite all the features of the old site (the RSS feed should be available by this weekend), but there is an important new feature: you can now browse both the documentation and the source for all I7 extensions on-line. Here's Intelligent Hinting by Aaron Reed, for example.

Judith

Judith is Terry Cavanagh's latest game, and this time he collaborated with Stephen Lavelle.

It's another one of his experimental story-telling games, which are my favorite. I played the game about ten minutes after it was released and about an hour after that I was writing up a long analysis of it.

I was thinking of posting it here, on my blog, but instead I decided to put it on the intfiction.org Interactive Fiction forums, because I'd rather have a conversation about the game than try to assert things about it in an exposition on my blog. Still, it's a rather wankery academic post, but my intentions are good.

(By the way, intfiction.org is having some problems with spam lately; try to be careful and don't click on any dodgy-looking topics, since they may contain rather explicit porn spam).

Games with non-expository stories

At the end of this blog post you'll find a list of games by three different developers. I think you should try them out.

Edit: Pathways does actually work on Wine if you set fullscreen=0 in the config.ini file.

Vignettes? Well, that's how one of these developers describes his works. Some of them definitely aren't short (Don't Look Back took me about half an hour; Eversion took a few hours spread over a few days), but the stories they present all have in common a reflective simplicity. All of these games are more about story than gameplay: some of them have gameplay elements which try to give the player some direct, deeply effective control of the fiction (Daniel Benmergui's games), and others take tried-and-true gameplay mechanics and use them as a way to communicate story elements to the player (Don't Look Back and Eversion).

The title of this post calls them "non-expository", and I'm not sure how accurate a phrase that is, but it's the first one that came to mind when trying to describe the way they present the story. Let's take a look:

1. The act of exposing or laying open; a setting out or
displaying to public view.
[1913 Webster]
It may be overly subtle or perhaps even punny, but I think it does make sense to refer to them as non-expository. The stories they present are not clear-cut and laid out. The author did not tell us what the story is: he showed us some scenes, depicted some characters, but didn't flesh out their details. They're much more introspective than that. When you get to the end (or one of the endings), you think to yourself: "okay, maybe I know what just happened. Whatever it was, it was cool."

I can only say that I am really happy that indie game development is becoming so widespread and successful. Certainly most indie development these days is focused on improving the essential gameplay of video games, which is awesome, but I find the experiments with story much more fascinating.

There's a more concrete property that most of these games share: there's no text or dialogue. Despite this, they instill in the player a strong sense of the narrative with subtle graphical, audial, and gameplay cues. Somewhat tangentially, there is something that I've become a bit obsessed with as I think more and more about story and games -- the way that we can communicate to the player by taking something which is commonly used as a utilitarian device of user interface (a score counter or a health meter, for example) and twisting it in some way to reinforce the impact of an event in the game's story. Eversion does this well. I'd like to write about this more, once I find a better list of examples.

The one game in the list below which does have dialogue is Pathways, and its dialogue is very limited. Each character only says one or two very simple sentences. Even so, that dialogue really has an effect on me, and I wonder if that has something to do with the nostalgia I have for those old, badly-translated Japanese video games where most of the characters you run into simply repeat the same line over and over again. I wonder if someone who's not familiar with those types of games could have the same kind of emotional response to the simple but incisively crafted dialogue in Pathways.

Anyway, here's the list. Most of these are Flash games and the links will take you directly to the page where you can play them, unless otherwise noted.


Daniel Benmergui
  • I wish I were the Moon. Take pictures of the things you see on the screen, and then click again to move them elsewhere. See what happens.
  • StoryTeller is similar in that you basically have the ability to move elements of a scene around, but this time it's broken into three distinct scenes, representing three points in the lives of three characters. You can modify the elements in any of the scenes and immediately see how it affects the later ones.

Terry Cavanagh
  • Don't Look Back. It's a pretty simple jump-and-run game with beautiful music and a haunting turning point.
  • Pathways (runs well on Wine if you change config.ini to say fullscreen=0). This one is really touching. It's all about making decisions, and it reinforces what seems to be a recurring theme in his works by not allowing the player's character to turn back. He can only move forward or turn onto another path.

Guilherme S. Töws (of Zaratustra Productions)
  • Eversion (another Windows-only game, works well on Wine). Another jump-and-run game which looks like a typically boring and hyper-cheery Mario-type game for the first couple of levels, but becomes gradually deeper and more bizarre. This one is the most difficult of all the games I've listed to actually complete, but you can get through the first 7 levels without having to collect all the gems. Getting them all may require the use of walkthroughs, which are readily available on Youtube.

Interactive Fiction Writing Month

I've just added the Interactive Fiction Writing Month blog to Planet IF. The project looks really cool. If you know anyone who's been thinking about trying to write some IF, point them in that direction.

See also the main IF Writing Month web site.