Wednesday, February 20, 2013

NOWHERE - Liminal Activities - Part 2

It's time for a development update. I've been eagerly working on Liminal in the past week, you know, the one with this logo:

It's probably best to explain everything with a screenshot, so this is how the editor looks at the moment:

The IDE is being designed with strong support for stereoscopic visualization, rapid prototyping/live coding and a low latency edit & continue working cycle. Using a 3D monitor or headset, you should be able to maintain deeply productive editing sessions over longer periods of time, without having to switch to a different program. The workflow is of course hand-tailored to my preferences, but will be User-configurable.

What you see are two distinct layers on top of each other: the world and the workspace. The world displays the actual game world, and can run in an interactive (also known as: "the running game") or introspective mode. The introspective mode is very much like Firebug or the Chrome debugger, and interacts heavily with the views opened on the workspace.

The workspace is a large 2D desktop, on which all views are hosted by draggable windows. It can be panned and zoomed, to reveal a larger portion of the data you're editing, or focus on a detail you're interested in. Each view is a Webkit control implemented by Awesomium and offers all functionality of the Chromium browser engine.

Using the classic console hotkey Ctrl+~ (Ctrl+^ on German keyboards, or whatever key is below the Escape key), you can toggle between controlling the in-game camera and interacting with the game world, or browsing and altering the game's internal structure on the workspace. As you alter node parameters or source code, the game updates accordingly. You can also write and test new node types as the game is running.

The node editor allows to glue together modules that encapsulate game logic and engine functionality, with immediate feedback. The game we are working on has a strong focus on procedural content, and this kind of work is easier to organize with a visual graph that assists to both create and understand dependencies.

The workspace also hosts a Python console through which you can also retrieve and alter editor and data model values, or quickly try out a particular idiom you would like to put in your code.

These are my current TODO's for this week:
  • The source code editor is just a stub and doesn't actually work yet. There's also a file explorer-like component missing to actually load code into the editor. Therefore, finish the file manager and source code editor. Committing source code with a hotkey should immediately reload dependent resources in the game and allow you to see changes as they happen.
  • Making builds is currently an annoying disruption. I need to switch to three different platforms, boot into different computers, load up different VM's, update the codebase and make packages. Usually, as code hasn't been tested on platforms for a longer time, hunting down and fixing those issues often costs hours and lowers morale. Therefore, we have to setup a build server to produce daily builds of Nowhere and Liminal for all three platforms, so it becomes less of an annoyance to prepare builds, and  new deployment issues become apparent within hours.
  • Once the build server stands, make a release.