About the game
This project was inspired by Portal, the XiaoXiao animations and not forgetting the weird and wonderful signs found in and around that magical realm of the commuter.
E.X.I.T. is my attempt to rescue a poor symbolic man from his eternally frozen fate.
The idea is simple. You, ExitGuy, awake in a locked room... as you attempt to escape, a catastrophic failure seems to befall the environment you are a trapped in. This aids your escape whilst simultaneously causing other challenges to overcome, and giving you a very strong reason to leave, and leave quickly.
Technology
I use projects like E.X.I.T. to help me learn technologies that I haven't had the chance to use when working on standard client work. This in turn then opens up more possibilities for client work, and more varied projects.
It only makes sense to use tools that are a good fit for for the job though. So I specifically design my personal projects to have new challenges to address.
From E.X.I.T's perspective, there are three core elements that make this project a challenge — and therefore warrant specific solutions:
(1) Character & animation control
Exit isn't a game I'm building for its story, its graphics, or even with the aim of teaching anyone anything... My main aim, and the reason for taking my time, is I want to develop an impressive control system.
For more information on the detail of the system I've been working towards, [ read this blog post ]. But for a simplistic overview it will be a skeletal system, with the key frames posed manually, with connecting frames and bridges calculated automatically. Now as far as games go, that won't be anything new. The part that makes things more difficult is optimising for the web, and web-enabled devices, and also introducing the collision and 2d rag-doll handling. These are the parts that I'm having to investigate and research.
So far, this aim has led me through systems developed in Flash (I started back in 2007), Unity, Box2D, Inverse Kinematics, Spine, Canvas and WebGL — but currently I’ve settled on developing an animation builder that is powered by SVG.
This doesn't mean I am limited to using SVG, it just means the animation information will be vector based.
Animator UI
Due to the way I wanted the animation system to work, I needed to have full control on how the in-game characters were constructed. I tested a few existing solutions, but none of them gave me the flexibility required. Spine came close, but its runtimes (at the time) weren’t very mature and it also didn’t give me the ability to pre-render frames — which would be required for lower powered devices.
You can access a cut-out demo below, which doesn’t have any of the saving capability. The interface is build using D3, which in turn hooks into a back-end powered by Backbone, Swagger, Node and MogoDB.
This system alone implements many of the technologies required for most modern apps, and because of the way it has been built according to best practices — it is fully usable on mobile (even though it wasn’t designed to be used in this way).
There is still more to develop. The enhancements I’d like to add are:
- Skinning the skeleton with vector shapes
- Onion-skinning in order to aid animation
- adding of metadata to specific nodes
(2) Design
I've kept the design of Exit graphically simple, mainly because the other elements are complex. But also because I'm hoping to build the game levels in a modular fashion. By keeping things simple, it will make the tessellating of parts together easier.
One of the nice features of Portal's design, was the simplicity that gave way to complexity (very quickly) when only introducing one complex element. That is something I hope to recreate in Exit. The backdrop will remain simple, but progressively more complex elements will be introduced.