Sunday, May 25, 2008

Ira Glass on Storytelling

I stumbled upon some great YT videos of Ira Glass ("This American Life" - which I've not seen) talking about storytelling.

In this first video he talks about the two main building blocks of broadcast stories - the anecdote (the sequence of events: "this happened, which led to this, which led to this") and the reflection (the summary, the point: "here's why I'm wasting your time with all this"). These two things have to go together and complement each other. You could have a really exciting sequence of events, but without a good summary to give it meaning it feels flat. Conversely, you could have a boring sequence of events but an immensely powerful meaning, but it would still be boring.




This one covers two points. Firstly, it's really hard finding good stories. Ira says that he throws away a third of his material. Secondly, he says that at every step the material "tries to be boring" and you have to keep "propping it up" in a very aggressive way. True for any creative work, I think.




This one's for me! In these last two videos, Ira talks about how you make a lot of stuff but it doesn't quite get as good as you'd hope, so you look at it and you see that it's not so good, so you quit. He says the only thing you can do about that is to keep going and produce a large volume of work. That will help close the gap between what you can do and what you want to do.






More stuff here.

Sunday, April 13, 2008

F#

I had a good read of the first few chapters of Expert F# in Borders yesterday and it seemed to me that the language did not suck at all, as far as I could gather. I've been having a play with it today and I'm very impressed. It's based on O'Caml, which I don't know, but I gather that Microsoft have simplified the syntax a bit and modified it to be a bit more pragmatic and work with the .Net way of doing things. Functional and immutable by default, iterative and mutable when you want it. It's very Lisp-like but without the brackets, and included are Haskell-style comprehensions and composition and native support of .Net. I think it lacks in metaprogramming capabilities compared to Lisp and O'Caml though.

It integrates with VS2008, which I don't have, but if you download Visual Studio 2008 Shell (integrated mode), install it, then install the F# compiler, you get a roll-your-own F# Express with all the syntax highlighting and all that (unfortunately no GUI builder though). I found out about that here.

Sunday, February 24, 2008

Drake's Fortune uses Scheme

Naughty Dog have traditionally been a bit of a poster-child for "real-world things that have been done with Lisp" but them using GOAL to script games several years ago (and then stopping) is getting a bit tired.

But now it seems that they're still using it.

Apparently, they were missing GOAL too much :) Dan's presentation was
on how they used Scheme to write a significant part of their latest
game, called "Uncharted: Drake's Fortune". It's a very high profile
and high quality game that is attracting lots of attention right now
and that was very well received by critics.

They have used they own implementation of Scheme to build the game.
The Scheme code had multiple uses including:
- Generate the C++ used to describe their data structures
- Populate data tables at compile-time
- Ensure validity of data (the code generating it could interact with
their tools at compile-time)
- Write their in-game scripts that would be compiled down to bytecode
to be interpreted at run-time

In addition to programmers, designers and artists were also using
Scheme to create the game. Their presentation slides should be
available soon and will provide a bit more details.


I gather that this time they used PLT-Scheme (MzScheme/DrScheme etc.) and layered a load of macros on top. Can't wait to see the slides.

Update 09 March 2008

Here are the slides: Adventures in Data Compilation [PDF]

DISCOVERY: The monkey doesn't have the module.




Saturday, January 19, 2008

Sir Basil Spence

The other day I went to the Dean Gallery to see an exhibition about Sir Basil Spence.

An architect of the Brutalist-Futurist mode, Spence was responsible for some amazing, imposing, beautiful structures and some that were fugly concrete monstrosities. The exhibition itself, however, was fantastically inspiring.

There's something about plans that I find very interesting. Maps and plans actually. As a kid I drew pictures of planes and boats and cars and space ships, but they were all done in plan view or side-on. I pored over cutaway drawings of aircraft. I owned a rolling ruler.

Although I've got no architectural training, the exhibition triggered something in me that made me want to create something. I didn't know what that something was, however. I opened up SketchUp and stared at a blank page for some time before realising that I didn't know where to start.

Still, I greatly enjoyed the exhibition. The Dean Gallery is very good for making me feel creative, which I enjoy even though I'm too lazy to find a proper outlet for it.

Resolutions

This is a bit late, but one of my new years' resolution is to do something useful every week so I figure I should keep a log of things I've done. By useful, I mean something that isn't just procrastinating or wasting time. I'm so bad at procrastinating that the things I class as being "useful" include such diverse and worthy tasks as "finishing a computer game," "reading a book," "writing a program" or "going to the cinema" and so on. Finishing things is important, but actual, proper progress towards a goal is also good.

It's not a lofty task, but I need to record my progress I think. It's a good habit and I need to improve my writing.

Three weeks into January and (unsurprisingly, given the broadness of the qualifiers) I've actually done some Useful Things. I'll try to write a short posts for each rather than summarising it all in one large(r) post that may never get finished.

There's some other things I'd like to do this year. These include:


  • Learning at least two of Haskell, F# and Erlang.
  • Writing a short piece of fiction. Why not? :)
  • Creating an AI planner. Rolling over from last year, I still haven't worked out how to do these. All help appreciated!
  • Getting good at using SketchUp. It's an important tool and one every game designer should know, I think.
  • Write a simple Scheme parser. There's loads out there but I'd like to do one for myself.
  • Write a finished, polished game of some sort in my spare time. It doesn't matter how simple. Not on paper or in my head; for real.

Dull, yeah, but that's how I roll.

Sunday, July 15, 2007

Scene, Sequence, Story: Part 1

More stuff from Story. Some interesting stuff about how story structure works.

To recap: Game story structure is similar in many ways to a screenplay, though there are some differences. Why the structure is not the same (or at least, should not be the same) is simply because a game is interactive. My viewpoint is that if you have an interactive story-based game then the story should also be interactive and dynamic; a linear plot constricts the gameplay and is a waste of a good game experience. That's not to say that a linear plot creates a terrible game but that there will be something missing, that it won't exploit what is unique about the medium. We don't really know what form an interactive story structure takes yet, it's not so clearly defined as for other media and we haven't had decades to perfect the format.

So in that case how can I say that game story writing is similar to screenwriting? Well, all forms of storytelling media share the same basic properties and they all overlap in certain areas. At the centre there's a sort of "pure story" at the centre - basic axioms that every medium must adopt to tell a story. Robert McKee goes some way towards classifying these in the second chapter of Story. I won't cover them all, but there's a bit of theory that I'd like to summarise.


Science bit

The story structure is a series of events in the lives of the characters that are connected together to make an emotional impact or life statement. There could be hundreds or thousands of these events. The author must pick out which events to use and work out how they fit together in order to make a coherent story.

While studying physics at school I saw a spark chamber that consisted of hundreds of charged metal pins in a sealed box. When a cosmic ray hit the spark chamber it would trigger a cascade of sparks that would leap from pin to pin away from the entry point but in the general direction that the ray was traveling. I see the sparks as tracing hundreds of plot lines between events (the pins), each of which might produce a valid story (valid, although not every plot traced would be equally as good).

A story event is a change (a flip from positive to negative or negative to positive) of part of a character's life situation (a change in value). The event will be triggered through some kind of conflict and must be meaningful in terms of the story. For example, if the protagonist's girlfriend is kidnapped that's a flip from one state to another (free->kidnapped), but more important is the change of values in the protagonist: happy->sad etc. (though hopefully a bit more complex than that). Later the protagonist might be distraught and feel helpless (negative) but gradually gain resolution and seek revenge (positive): another story event.

McKee says that each scene in a story should contain a story event. A scene may contain several events (meaning things that occur) but unless they contain some kind of change in value they're not story events but non-events. When your scene only contains non-events you have to look and wonder why that scene is in your story.

Several scenes can be grouped together into a sequence that when taken as a whole has greater impact than any of the scenes it contains. You can then combine sequences into acts that end in a climactic scene with greater emotional impact than any individual sequence. Then in turn you have the story climax, which is the grouping of acts - you get the picture.


Theory applied to modern games

A well-designed, linear, plotted game follows these rules to some extent. I think that this is partly to do with the script writers having being trained in conventional storytelling techniques, but also because gameplay rules are compatible to a degree.

For Halo, Bungie deliberately paced the action so that there were a few minutes of intense action every ten minutes of gameplay. The action-cooloff cycle is quite common in modern action games - the cooloff period provides a necessary change in pace by providing puzzles or exposition - but it also separates the gameplay into scenes. From a story point of view these scenes could be non-events, although the combat/puzzles would also provide some emotional feedback to the player (fun! frustration! relief! success!), if not the player's character. The sequences of these alternating action and cooloff scenes should close with a story event even if not all of the scenes it contains are story events. Quite often a game will position savepoints after every scene (Halo) or after one or more sequences (Prey).

The beginning of an act usually implies a change of scenery or new gameplay element. The transition from the reservation bar to the alien sphere in Prey, for example. Typically the central point of a game will be similar to Freytag's climax, providing a turning point for the plot. In Halo this is the discovery of The Flood, in others it could the the point at which the player as underdog becomes a threat to his oppressors and goes on the offensive.


I think that demonstrates the link between screenplay and game story writing, and how gameplay can tie in with that. The next step will be to think about how we can take these elements of storytelling and make them interactive.