Christopher Kline


in august 1999 i finished my m.s. degree at the mit media laboratory in cambridge, ma.

prior to attending mit, i received a b.s. degree in computer science from cornell university in ithaca, ny.

for a few years after grad school i worked at nearlife, writing realtime three-dee graphics and animation software for location-based entertainment and interactive television.

and lately i have been spending a lot of time thinking about

special weapons and tactics
objectivist underwater utopias gone wrong
saving the world
at 2k boston (formerly known as irrational games).

i waste the rest of my time playing Balinese gamelan, blowing glass, and trying to figure out this photography thing.

that's all i have to say about that.


as a member of the synthetic characters group from 1997-1999, my research focused on building simulated animals that behaved as much as possible like real animals. in that sense, everyone in the group was a mix of biologist, computer scientist, and artist.

my personal focus was on trying to understand how animals go about generating and updating expectations about the world around them. for example, when a ball rolls behind a wall, how do you know that it will roll out the other side? how would your expectations change if the ball did not appear? how would this affect your behavior, and what information about you does the expression of your expectations (e.g., showing surprise, confusion, disbelief, etc.) convey to those who are observing you?

i believe that expectations (some might use the words guessing or imagination) are a major component of intelligent behavior. without expectations, artificial creatures make mistakes which even the simplest animals do not make.

even more importantly, when given the capability for expectations, artificial creatures become able to make the kinds of mistakes that real animals do make.


publications are listed in chronological order; please contact me via this web form if you need a paper that is not available online.

    Observation-based Expectation Generation and Response for Behavior-based Artificial Creatures. C. Kline. M.S. Thesis. September 1999 [PS] [PDF]

    Observation-based Expectation Generation and Response for Believable Reactive Agents. C. Kline and B. Blumberg. Proceedings of the Fourth International Conference on Autonomous Agents. June 3-7, 2000. Barcelona, Spain. [ACM Digital Library]

    Sympathethic Interfaces: Using a Plush Toy to Direct Synthetic Characters. M.P. Johnson, A. Wilson, B. Blumberg, C. Kline, and A. Bobick. In Proceedings of CHI 99. [PDF]

    The Art and Science of Synthetic Character Design. C. Kline and B. Blumberg. Proceedings of the AISB 1999 Symposium on AI and Creativity in Entertainment and Visual Art, Edinburgh, Scotland.

    Building Believable Synthetic Characters. B. Blumberg and C. Kline. Presented at the 1999 Workshop on Behavior Planning for Life-like Characters and Avatars, Sitges, Spain.

related work is available from the synthetic characters group's home page


here is some software that i have been involved with in recent years:

JOGL - auto-generated, high-performance Java bindings for the OpenGL 3D graphics API
(Note: this was written in collaboration with Ken Russell, and is now owned by Sun Microsystems and available in source form under the BSD license as part of their core Java Games API -- check out the project page and the JavaOne 2003 conference presentation slides)

GlueGen - a tool which automatically generates the Java and JNI binding code necessary to call C libraries
GlueGen reads as input ANSI C header files and separate configuration files which provide control over many aspects of the glue code generation. It uses a complete ANSI C parser and an internal representation (IR) capable of representing all C types to represent the APIs for which it generates interfaces, and has the ability to perform significant transformations on the IR before glue code emission. GlueGen is currently powerful enough to bind even low-level APIs such as the X11 window system API, the Java Native Interface (JNI) and the AWT Native Interface (JAWT) back up to the Java programming language. GlueGen is currently used to generate the JOGL interface to the OpenGL 3D graphics API and the JOAL interface to the OpenAL audio library.)

here is some software that i used to maintain but not anymore:

starteam.el - Starteam revision control support for emacs
I'm no longer the maintainer of this package... it's moved to a new home on

very old software (1996) that i no longer use or support:

a C++ implementation of craig reynolds' algorithm for simulated flocking and schooling behavior ("boids"). Warning: this code is very old and poorly designed -- you're better off using a library like OpenSteer.

a C implementation of the "snakes" active contour model algorithm

Other Stuff

I gave a talk in September 2007 to the Montreal IGDA about the history of BioShock. It's a postmortem overview that focuses on how the game evolved over its 5-year development cycle. If you're interested you can look at the PowerPoint slides or watch the video of the talk.