A Platform for 3D AR and VR Applications

"I see the dim outline of a scene superimposed upon the still-clear contents of the room..." - Isaac Asimov, The Robots of Dawn

Goblin is an innovative platform for developing 3D augmented and virtual reality applications and games. It is written in C# and uses Managed DirectX. The platform leverages the unique capabilities of the .NET Framework to provide innovative features such as Edit-and-Continue. In the next release, we plan to support Aspect-Oriented Programming.

Goblin is headed by Marc Eaddy under the direction of Prof. Steven Feiner of Columbia University's Computer Graphics and User Interfaces lab, and funded by Microsoft Research.


Mon, Mar 3, 2007 by Marc Eaddy
We completed mapping all the concerns in Goblin. Every source code statement in Goblin now has a "statement annotation comment" attached to it that indicates which features and/or requirements that statement is responsible for implementing. (see the readme file)
Tue, May 31, 2005 by Marc Eaddy
Version 1 of the Goblin platform has been released!! An example game called Botica is included to demonstrate Goblin's capabilities.


  • C# codebase using .NET Framework v1.1
  • Uses Managed DirectX v9
  • Edit-and-Continue support
  • Basic scene graph support
    • DirectX X file format support
    • Transformers for controlling object motion
  • Device support
    • 6DOF device abstraction
    • Device config file
    • InterSense IS900 and IS600 tracker support (direct and via network)
    • EssentialReality P5 glove
    • Mouse
    • Keyboard
  • AR/VR support
    • Sony LDI-D100B optical see-through head-worn display (800x600 resolution)
    • Modeled real-objects occlude virtual objects
    • Ability to switch between AR and VR modes
  • Collision detection
    • Ray/polygon
    • Bounding spheres
    • Axis-aligned bounding boxes
    • Mesh/mesh
  • Basic pathfinding AI
  • Application plug-ins (can be written in any .NET language)


At any time when Goblin is running you can open up one of the source files and make changes. Goblin automatically compiles the changes in the background and updates the running application on-the-fly. The entire update process takes about 1 second. This even works for changes made to plug-ins loaded by Goblin that are possibly written in a different .NET language. This feature is called Edit-and-Continue and works with C#, VB.NET, and JScript.NET. Goblin is currently the only 3D platform that supports Edit-and-Continue. Some important caveats are listed here.

Aspect-Oriented Programming

We are currently working on supporting Aspect-Oriented Programming (AOP) in Goblin. The goal is to provide a technique for implementing certain features that require time-consuming, laborious, or error-prone development, or adding features that were not originally anticipated. Examples of features we'd like to implement using AOP are state change notifications, data flow visualization, persistence, replication, logging, and profiling.


Source code and executables for the Goblin Engine. Includes sample Botica game plug-in DLL.

Source code and executables for Multi-Language Edit-and-Continue. Includes samples to show how to use Edit-and-Continue for C#, VB.NET, and JScript.NET.

Application Gallery

Source code and executables for Botica. Botica is a 3D game that demonstrates the features of Goblin.

Extra-dimensional 'bots are invading the Columbia University Computer Graphics and User Interfaces lab and it's up to the player to defend it. When played in our lab the player can use a head-tracked head-worn see-through display to obtain an augmented reality experience by seeing the virtual 'bots overlaid on the real world. 'Bots interact realistically with the real world by changing direction when they bump into real-world objects. The player can also hide from the 'bots by ducking behind furniture. The player destroys robots by firing a crossbow that is controlled by a tracked P5 glove.

If the player is not physically located in the lab they can still enjoy a virtual reality experience. They can also play using a traditional monitor, keyboard and mouse. This is useful for the majority of players that don't have expensive tracking equipment and head-worn displays.


Goblin README file.

Documentation for the Goblin Engine, Botica, and the Edit-and-Continue Watcher component.

API Help File for Goblin and Multi-Language Edit-and-Continue.


Marc Eaddy and Steven Feiner. "Multi-Language Edit-and-Continue for the Masses," Technical Report CUCS-015-05, Department of Computer Science, Columbia University, April 2005. (Download pdf) Download pdf | (Download ps) Download ps


Prof. Steven Feiner <feiner AT cs.columbia.edu>

Marc Eaddy <me133 AT columbia.edu>
Erik Peterson <edp2002 AT columbia.edu>
John Waugh <jrw2005 AT columbia.edu>
Hrvoje Benko <benko AT cs.columbia.edu>
Sean White <swhite AT cs.columbia.edu>