I will be focusing on Armitage for a while. I finished reading the Qt book in August and it’s time to put all the theory to good use. Need to build a framework for project and document management so that I can plug the individual editors into it.
29
Aug 10
I’m doing some cleanup in scene and actor code and also working on the actor internal behavior for task switching. In wme1, actors can exist in the following states: idle, walking, turning, talking and playing animation. These states are mutually exclusive. This is not a good design, because for example it’s perfectly legal for a character to talk while walking. For that reason wme2 will recognize full-body states (idle, walking, turning), and states that may or may not co-exist with other states (talking and playing animations). The script programmer will have to specify whether the “play animation” and “talk” commands should cancel actor’s walking, or if they should be blended on top of it. Can you think of some other border cases related to actor states, which are hard to handle in wme1?
01
Aug 10
Audio and video
I implemented a basic sound system, based on OpenAL. Nothing too fancy, but it gets the job done (i.e. play Ogg Vorbis and uncompressed WAV files, both streamed and preloaded). I didn’t add support for 3D sound yet, but with OpenAL this should be relatively easy to do when the time’s right.
Now I’m adding rudimentary video playback support. It will be Theora video again, but this time using the very sweet libtheoraplayer library, because I’m not masochistic enough to use Xiph’s code directly again.
It also means most of the basic systems are in place now so it’s time to start building the actual application on top of them
Finally, whee!
25
Jul 10
Introducing Armitage
Armitage is, or rather will be, the editor for WME2. It will be an all-in-one solution, replacing the current separate tools. As I blogged some time ago, I abandoned .NET and switched to Qt instead, and I have to say the more I learn about Qt the more I love it.
The screenshot doesn’t look too impressive (yet), but it demonstrates the integration of the engine with Qt. Exactly the same content that the standalone WME2 runtime displays now lives inside a Qt window. Also notice my very first custom Qt control, and expandable property bar, inspired by the sidebars in 3ds max
20
Jul 10
While working on the GUI, I implemented a feature I’m particularly excited about. One can map the GUI onto a 3D mesh, and the GUI is still fully interactive within the 3D scene. On the pictue below, you can still click the button on the cube and drag the window around.
I could actually map an entire scene onto the cube, but I’m afraid the universe would implode.
05
Jul 10
I’ve been a little stuck lately, for several reasons, but now I’m unstuck and the animation system is coming together nicely. Special thanks to Jynks for creating some test animations for me.
05
Jun 10
I’m working on an animation system now. The animation system in wme2 will be internally based on an animation blend tree. The blend tree is a nifty concept used by many modern games, which allows to combine many animations in a simple and generic way. The idea is to feed individual animations to the tree on one side (the tree leaves) and to receive a single final combined animation on the other side (the tree root). The way how the animations are blended together is defined by the tree nodes and their connections. See the following picture for an example of an animation tree in Unreal.

There can be various types of nodes plugged into the tree. The most obvious is a blend node, which receives two animations and a ratio, and outputs a single animation with the two mixed, based on the ratio. A specialization of a blend node would be a crossfade node, which would automatically transition from one animation to another, by smoothly changing the ratio over time.
The tree in wme2 will be using a special “layer node”, which will allow mixing several animations, each affecting a different set of bones in the model – i.e. the same way the animation channels work now in wme1.
I’m not yet sure if I will allow the designers to use the tree directly. I think in the initial release there will be a simplified interface, similar to the channel system known from wme1, and the tree will only be used internally to handle transitions. But the blend tree is a very powerful and flexible system, which will surely bring many possibilities in the future.
23
May 10
There are two things I’m intending to focus on next: an animation system (doing some research now) and GUI system (I’m starting to miss this one even for my own testing purposes). More info later.
15
May 10
Started working on a “navigation mesh editor”. It’s NOT meant for editing the actual shape of the mesh, but rather to allow you to define named areas of the mesh, which you’ll be able to activate or deactivate from scripts. Also fixed some path finding flaws I discovered in the process.
P.S. Special thanks to everyone who took the time to test the little demo and commented on it.
09
May 10
Demo time!
And in reaction to yesterday’s post, I realized I actually could release *something*. You will not be terribly impressed, but it’s something to fool around with for a while.
Disclaimer: it’s very, very, very raw. It’s a snapshot of a work in progress with temporary art, quickly put together with many shortcuts taken.
Now, what you can do with the demo… There are two modes, “game mode” and “editor mode”. You switch the modes by pressing the F1 key.
In game mode, you can’t do much. It’s mostly a pathfinding test. You click somewhere in the scene, a path is plotted and the green ninja will walk to the target point (or nearest accessible point). Ninja is actually walking on a navigation mesh, which you can’t see (you can see it on a screenshot someewhere lower on this page, though). There are no animation transitions and actor turning is just temporary.
In editor mode you can play with the editing “gizmos”. There are three gizmos, move gizmo, rotation gizmo and scale gizmo. You switch those by pressing the right mouse button. Select an object by left-clicking it (you can select multiple object using shift+left-click). Then use the gizmos to manipulate the selected object(s).
In both modes you can use the focus camera controls. It allows you to freely look around the scene. To focus camera, hold down the Alt key and left-click and hold the point of your interest. While holding the mouse button, you can move mouse to orbit the camera and to zoom in and out. Hold the Ctrl key to change camera angle. Hold the Ctrl+Shift keys to pan camera. Once you master the controls, they are very effective for navigating the 3D environment (those of you who know Second Life may find these controls familiar, which is of course pure coincidence
).
And that’s it. Have fun and feel free to post a comment.


