Tombstone
ZenGameSystem
Mar 2001 – Jun 2001 · age 19
What it was
Two MFC applications meant to become a scriptable 3D board game platform. The engine was an OpenGL app whose document was also a COM automation object, handed to the Windows JScript engine by name, so game rules could live in a text file and call into the game without a compiler. It replaced MFC's message pump with a fixed-step loop on the high-resolution timer and rendered a rotating MilkShape model, with bone matrices concatenated, rotation keys slerped and each vertex skinned by one bone. The editor let you drag out polygons as board spaces, rotate and resize them with coloured handles, and link neighbours by dragging between corners. The editor could not save, the script surface had exactly one method, and the engine's last build failed on a missing SDK header.
Wins, for the age
- At nineteen, Jeff embedded a real script engine and exposed the game document to it as an object, rather than writing an interpreter. Office and Windows scripting hosts had shown the pattern since 1996; this primate chose it for a board game, and the sample script printed "JScript Works".
- Turned an MFC document app into a real-time engine by owning the message pump, without abandoning the framework around it.
- Learned skeletal animation by porting someone else's model viewer and breaking it until it made sense: parent-concatenated bones, quaternion slerp, skinning.
- Built a board editor where linking two spaces was a drag from one green square to another. Direct manipulation, worked out by feel by a mammal with a mouse.
What it taught
- The COM automation and ActiveX Scripting host contracts end to end, down to what a script engine actually sees.
- Architecture without a file format is a demo. The editor and engine never shared a file, so the platform existed only as an intention.
- The environment is part of the build. A project that compiles only where one SDK header happens to exist is one reinstall from dead, and this one died that way.
- Small slips hide in animation code: the start frame was set from the end frame, so every clip collapsed to a single frame.
Genealogy
Ancestors: none on record. The first attempt at rules as script over a game document. Descendants: Kitchen Grill: game rules in a scripting language, this time one of Jeff's own. Zer: a reusable shell for tools that push shapes around in 2D.
Epitaph
Here lies ZenGameSystem, which taught JScript to say "Yes!!" twice and then lost its include path.