Posts

Showing posts from 2015

Generativity & interpretation: a study of generated comics

Image
In Scott McCloud's classic comics theory book Understanding Comics , he introduces six kinds of panel transitions: Since my last reading of the book, I've been curious whether these transition types can be operationalized  toward any of the following goals, approximately ordered from "most human effort needed" to "least human effort needed": A Dadaist/Oulipian collaborative cartooning game where players take turns rolling a six-sided die and drawing a panel on a shared piece of paper according to the transition type determined by the die roll. "Fridge poetry" for comics: come up with a fixed set of panels that link together via the different transition types, then let humans decide how to order them. A board game in which each player has a "hand" of panels, as well as some goals that align with good global comic construction, and use the same die-roll mechanism as in the first idea. A mixed-initiative digital comic creation too

Conference Report: AIIDE 2015

Earlier this month, I traveled to Santa Cruz, CA for two purposes: starting a new postdoc with the Expressive Intelligence Studio (which I'll be working on remotely for the time being) and attending AIIDE , a conference about AI in games, at which I was presenting a paper. I also attended two pre-conference events, the INT workshop on narrative tech, and the EXAG workshop on experimental AI in games. In this post, I want to mention a few highlights among the many exciting things I learned at the union of these activities, and draw out some common themes. 1. The state of the art in computational narrative is social & emotional believability. INT this year was joint with SBG, Social Believability in Games , and the themes of the talks blended so seamlessly that it was difficult to remember there were actually two workshops. Iolanda Leite gave the keynote on human-robot interaction; specifically, how to create conversational agents that would maintain children's inte

How to get a Ph.D. in computer science if you're me

Recently, I've been privy to a lot of advice that people give to beginning and prospective graduate students in computer science. The "grad school survival" talk given to CMU's CS department is one that's been passed down through a few generations; PLMW at SPLASH  is a workshop (affiliated with a few different PL conferences, now) with similar aims. At both of these events, I served on panels to answer questions. But by watching the main presenters' talks, I quietly accumulated critiques of the standard advice, and it occurred to me that my experiences might have value to some folks if expressed in longer form. As the title of this post suggests, all advice is subjective. The reason that I think people give "advice," even knowing this fact, is that otherwise we're telling very personal stories about experiences that might still be raw. Advice is an abstraction  over experience. But abstraction yields generalization, and generalizations require

Strange Loop 2015 Highlights

Image
I've returned from Strange Loop in St. Louis, a tech conference whose talks commonly include themes like PL, web dev, distributed systems, functional programming, and tech education. I was giving an invited talk at the Future Programming Workshop (FPW), part of the Strange Loop  preconference . This year, I had to leave early, missing half of Strange Loop proper, but fortunately there are recordings of all the talks up on YouTube! Unfortunately, the hallway track can't be recorded for delayed consumption, and I'm still bummed to've missed out on talking to a bunch of people I either failed to meet or only had one passing conversation with. That said, even two days was enough time to come away with plenty to write and think about, and I'd like to share some of my personal highlights of the conference with you. "I See What You Mean" by Peter Alvaro was the first keynote talk, kicking off Strange Loop. In it he tells the story of Dedalus, a temporal

Upcoming Appearances

I'll be appearing at a few conferences soon: I'm giving the last invited talk at Future Programming Workshop @ Strange Loop this Thursday, September 24th. It's an adaptation of my thesis defense with more focus on the Ceptre programming language itself. I'll be on a panel at  PLMW @ SPLASH , an edition of the Programming Languages Mentoring Workshop geared toward undergrads who may be interested in pursuing a Ph.D. in PL. PLMW is on Tuesday, October 27th. I'll be presenting my paper on Ceptre at AIIDE  in Santa Cruz, sometime in November 14-18 (the program isn't up yet).  Say hi if you'll be around!

Dissertation and defense slides!

The final draft of my dissertation has been sent to the printers, and you can download the PDF via that link! I'm now on a list of people I've looked up to for a long time as research role models, which is a bit bewildering. For the short and vague version (I rely a lot on spoken content rather than words-on-slides for talks), check out the slides for my defense talk on SpeakerDeck .

Finishing my disseration; new draft on Ceptre!

This blog has been silent for some time now due to me putting all of my writing energy into a draft of my dissertation! It has now been sent to my committee, and I defend on August 31st. For now, the draft is in private circulation, but I'm not being picky about who reads it: if you're interested in looking at a copy, let me know. I'll be sure to post a link here once the defense draft is ready. Meanwhile, a new paper on my game modeling language Ceptre (a fundamental piece of my thesis) has been accepted to AIIDE 2015! Here's a  recent draft . In the next few weeks, I'm going to try to get Ceptre into shape with enough documentation that brave-enough souls can experiment on their own. Meanwhile, the  GitHub repo  is available, and I'm happy to assist anyone who's interested in playing with what's there.

Linear logic proof sets as split-screen hypertext

There is often some confusion when I discuss using linear logic to capture narrative structure . There are two interesting kinds of branching in linear logic, but we usually only talking about branching structure in narrative if it's interactive  narrative, i.e. if the branches represent choices or alternatives between outcomes in a story scene. But there is also branching structure in many non-participatory narratives: there is a causal order of events, which is usually not a strictly total ordering. For example, scenes with different sets of characters, whose proceedings don't depend on one another's outcome, may be told in arbitrary order and still be coherent (though of course coherence isn't necessarily a narrative's goal, or its only goal). The latter kind of branching can be thought of as spatial branching  (for a sufficiently metaphorical notion of space), in the sense that different components of the narrative universe can evolve independently, then join

Using Twine for Games Research (Part III)

Image
Where we last left off , I described Twine's basic capabilities and illustrated how to use them in Twine 2 by way of a tiny hack-and-slash RPG mechanic. You can play the result , and you should also be able to download that HTML file and use Twine 2's "import file" mechanism to load the editable source code/passage layout. Notice that, in terms of game design, it's not much more sophisticated than a slot machine: the only interesting decision we've incorporated is for the player to determine when to stop pushing her luck with repeated adventures and go home with the current spoils. What makes this type of RPG strategy more interesting to me is the sorts of decisions that can have longer-term effects, the ones where you spend an accumulation of resources on one of several things that might have a substantial payoff down the road. In a more character-based setting, this could be something like increasing skill levels or adding personality traits. Often, th

Paper Draft: "Ceptre: A Language for Executable Game Descriptions"

I briefly interrupt this recent series on Twine to announce that I've recently completed a paper draft on my thesis programming language, Ceptre ( pdf, 8 pages ): Abstract We present a language called Ceptre in which we unify the concepts underlying several rule-based game design tools, such as Kodu, PuzzleScript, and Inform 7. We illustrate how to capture common mechanical idioms found in these frameworks, such as movement, item acquisition, and agent-based simulation, without specializing anything in Ceptre to those ideas. By distilling the essence of several systems in one using a small, general set of primitives (based on linear logic), we provide a setting in which to recombine fragments of existing world models and to define new ones, freeing designers from genre constraints and assumptions. Our eventual aim is to implement this language as a prototyping tool for game logics and mechanics. From a PL perspective, this paper introduces the ideas behind forward-chaining li

Using Twine for Games Research (Part II)

Image
This  preliminary discussion  introduced my thoughts on using Twine as a tool for creating prototypes for games research. I'll start with documenting my first case study: a hack-and-slash RPG-like setting where the player character has a record of attributes ("stats") that evolve through actions that turn certain resources (money, health, items) into others. I've selected this hack-and-slash example because it falls outside the canonical "branching story" domain thought to be Twine's primary use case, but it is not too much trickier to implement. It relies crucially on the management of state in ways that simple branching stories would not, but it does so in a fairly straightforward way. If all goes well, this post may also serve as a tutorial on the "basics" of Twine (links + variables + expressions). In particular, I'll be using  Twine 2/Harlowe , and I haven't seen many tutorials for this new version published yet. To me, the mai

Using Twine for Games Research (Part I)

Recently, someone sent a request over the DiGRA list for experiences and information related to academics learning to make games. I replied with a bit of handwavy proselytizing for Twine , copied (and slightly edited) below: For a surprisingly diverse range of game design logics, Twine makes an excellent prototyping tool for research. Carolyn Vaneseltine writes about using Twine for prototyping here: http://www.sibylmoon.com/ twine-as-a-prototyping-tool/   I'd really like to see Twine in use especially for games *research*, for a few reasons: Deployability. It's absolutely the "most time-effective path" from game idea to "an arbitrary person with the internet can play it." Resilience to bitrot. As long as people care about creating backwards-compatible web standards and supporting JavaScript, Twine games will be playable. If we consider our research to be describing "permanent ideas," then people need to be able to play with those ideas dec

What "safety" means to a PL designer

I just finished reading Justus Robertson & R. Michael Young's INT 2013 paper about their work using the fact that players have incomplete knowledge of a simulation  to accommodate incongruous player choices -- those that don't meet the story's goals -- by selectively rewriting the past. I made some sketchnotes summarizing the paper. Of course, if all one wanted to do were to ensure an authorial goal (e.g. that Batman goes to Harvey's location), one could just simply make all seemingly-significant "choices" lead to the same scene. What I find interesting about this work is that it ensures that any railroading of this form is done in a perceptually consistent  way, one that won't leave the player wondering how it was possible for the outcome to occur, because what they saw was consistent with their knowledge. There's a world model that led to Harvey being in one place and Rachel being in another, and that world model can change as long as it goes