Monday, February 11, 2013

Going NOWHERE, Liminally - Progress Update!

Hey everyone, I thought I'd give you a quick rundown of what has happened in the past month, after an alphafunder had turned up on IRC today and demanded answers, rightly so. I've been putting ahead writing a blog post for weeks, and this behavior can no longer be tolerated!

"I feel ripped off",  our backer said, and that is understandable. If you weren't following my secret humongous torrent of tweets, you would have seen no news about the project, and assumed that we are living the good life now, thanks to you all. While certainly an entertaining thought, this is sadly not the case. Please do not feel ripped off. It shall all be explained in good time:

First and foremost, some sales statistics: some people have been guessing that due to our amazing video footage, we have received a ton of preorders, but this is not the case. we've had only about 70 preorders so far. The money has been spent on a Mac Mini to do OS X builds. We also purchased an Oculus Rift devkit, a Leap Motion and an Ouya console (none of which have arrived yet). We want to add engine support for these upcoming technologies, but more about that later in the post.

I have spent the beginning of the year getting back to speed and updated the look of the GNOSYS UI. While we wanted a retro look, the OS should still make a futuristic appearance. This is how it looks now:

GNOSYS: Probably the first OS in existence to have 16x32 icons
The overall concept for the core game has been nailed down. I believe that we have a good, distinguished and novel approach to open world play, but many details remain sketchy and have to be tested out quickly.

But with our current workflow, even though it's within Python, trying out ideas isn't particularly fast: after changing or adding code, I still have to jump into the game and restore a situation in which I can test it. Every time I'm adding new code I have to make decisions where to put it and spend some time on integration.

During our earlier prototypes, the game changed shape considerably several times, and getting from trying out a new approach to seeing that approach realized took a considerable chunk of time every step of the way.

Furthermore, Sylvia is waiting for me to get the gameplay to a point where we know what graphical assets will be really needed; she could be helping out with building the game world, but our tools are not simple enough - Blender is nice, but having to switch between various tools constantly breaks attention span, let alone not being able to integrate new assets easily. This could be faster.

These risks and considerations make it hard to just go ahead and try something out. In fact, I've felt so paralyzed by ambiguous design choices that I wasn't able to progress much with the actual game. Instead, I've been doing more work on the engine, and, attempting to evade my seasonal depression, also inserted two weeks of a prototyping phase where I worked on a different, smaller 2D game concept for a short while. While the smaller game did not come to be, I managed to figure out what the problem is, after a demo video of CryEngine 3 tech reminded me of an old dream of mine: we need better hands-on tools to speed up the production process and literally get back into the game.

Back at the game company I worked for there was never time allocated to really dig deep into the tooling process and create something that is fun for artists to use. In my opinion our top programmers spent too much time writing throwaway code for the game rather than working on reusable components and handing over the tools to our capable designers. Now, I realized, I'm actually running my own game company, developing a game on an open deadline, so I can do what I very damn well please. Well, almost.

A screenshot of our new editor Liminal, with an early version of the dataflow editor as 2D overlay

The result of all these considerations is called Liminal, an interactive graphical editor implemented on top of our Beige engine, which will allow us to design scene logic and shaders using node graphs similar to Blender nodes or Unreal Engine's Kismet. I have created Python bindings for Awesomium (they are open source and available here) so we can now design HTML5/JS based user interfaces. At the moment I am in the process of building an in-game node graph editor using Flask, Rapydscript, SASS, jQuery UI and jsPlumb that also runs in regular Chrome.

Together with node editing, an in-game code editor using the excellent CodeMirror library will allow to write, edit and test new components as the game is running.

A work in progress screenshot of me writing and debugging the node editor in the browser. Python classes directly translate to graphical user elements without any boilerplate coding, thanks to Python's metaprogramming abilities. Short explanation: this shit is bloody awesome.
Lastly, we are very excited about the arrival of the upcoming Oculus Rift. Ideally, when making the game, I would like to keep the goggles on, instead of having to constantly alternate between screen and HMD. Therefore, the UI is suitable to be projected as a floating surface within the game's 3D space.

We hope that node editing and in-game scripting are going to provide the seven league boots needed to help us make big leaps instead of mere steps.

Liminal will be released along with future alphas of the game, allowing you to play with the tools we use as well, starting with Alpha 42 which hopefully will be ready around the next weekend.

Finally, thanks for your continuous endurance of my moods and unending patience so far. Stuff is always happening on IRC, so feel invited to drop by (channel #duangle), meet other alphafunders and ask us anything.