Posts

Showing posts from November, 2014

Reactions to "Purely Functional Retrogames"

I just read this  blog series on "purely functional retrogames"  from six years ago, on the basis of a recommendation from my Twitter friend/occasional conference-co-attendee  Scott Vokes . Things I thought were interesting points/good takeaways: It's better to nest state-keeping records deeply, rather than making wide/flat ones; never have more than a few fields to refer to, and you can pass around chunks at a time to different subroutines. Being forced to think out data-dependencies can be a good thing: [In a purely functional style], functions can't access any data that isn't passed in. That means you need to think about what data is needed for a particular function, and "thread" that data through your program so a function can access it. It sounds horrible when written down, but it's easy in practice.  In fact, just working out the data dependencies in a simple game is an eye-opening exercise. It usually turns out that there are far f

Focalization in Multi-Agent Interactive Simulations

[This is a post about game/interactive narrative design theory. If you're here for the logic and type theory, there won't be much of that in this post.] Many of the games that interest me, including my own experiments , play with the idea of focalization in a narratology sense,* which is essentially a generalization/reformulation of the idea of "perspective" in literature (which should call to mind the terms "first/second/third person," for example). In particular, in settings where multiple agents (loosely construed as "entities in a game with somehow separable trajectories in state space") can act and interact, independently or interdependently, there is a huge space of design decisions to be made. In this post I'm going to describe a design space for multi-agent games as context for reflecting on two projects I worked on recently, the IFComp entry  Origins  and the  PROCJAM  entry Quiescent Theater . Focalization in Games Quick run

"Tamara" as a concurrent trace

Image
My last post described the idea of concurrent storytelling  to encapsulate the idea of narrative structures where simultaneous action can lead to multiple experiences of a story, either through nondeterminism or through differing sequential traversals of the story graph. Since then, I have obtained a copy of the Tamara  script (which is written like a really bizarre choose-your-own-adventure book) and begun transcribing its scene structure as a deterministic Celf program such that the output trace models the scene dependency graph. To do this, I model each of the 10 characters as a predicate over a location and a scene identifier, e.g. tamara : scene -> location -> type. The scene IDs roughly correspond to the letter-and-numbered scenes in the script, except that they are slightly finer grained to accommodate the different perspectives induced by character entrances and exits, although those entrances/exits are contained within a single script-scene. In the simple case