Technical Update #1
Our initial set of videos did a great job of putting us on the map and bringing in enough donations to get us 2/3 of the way to our goal. As our donor community has grown and taken on definition, we've begun seeing more requests for updates that talk about the technical challenges. The ability to make comedy skits doesn't necessarily go hand-in-hand with game design acumen, some have pointed out.
We're pleased that the campaign has progressed to the point where this has actually become a matter for conversation!
-- We hope it doesn't put anyone off if we continue posting the occasional video with high entertainment value. We trust that even the most technically serious donor will understand that this sort of outreach is necessary in a campaign that pivots on reaching a large number of potential donors.
-- Putting a gifted comic actor in a giant hamster wheel and pointing a camera at him is relatively straight-forward. Answering technical questions in polished-looking video clips is slow work and consumes a lot of resources.
-- While we’re working on a few video clips, we’ll default to writing out our answers. The forthcoming updates might be on the TMI side of things.
Motion Capture and the Combat Tree
In our lingo, MASE stands for Martial Arts System Embodiment and it means the aggregation of code, assets (e.g. animations), and in some cases hardware needed to make a particular martial arts style work in CLANG. The first MASE we are making is based on Il Fior di Battaglia (Flower of Battle) by Fiore dei Liberi (1410). This system is sometimes referred to as Armizare.
(In keeping with our long-term goal of trying to allow a knight and a samurai to get into a fight, MASEs should be interoperable. That's a challenge for later, though.)
Every martial art--at least, every one that we would consider trying to turn into a MASE--includes a finite set of stances. Armizare is no exception. If there is more than one stance, then the system needs to include transitions between stances. In the particular case of Armizare, these transitions are frequently synonymous with sword movements: typically attacks (both cuts and thrusts), sometimes parries, and sometimes just changes in position with no offensive or defensive content. So, as a first move toward creating a MASE, it makes sense to get someone who knows the art in question, put them in a motion capture (mocap) environment, and have them go through the list of stances and the transitions between them. In our case, that person has been Guy Windsor, who runs the School for European Swordsmanship in Helsinki, Finland. www.swordschool.com
The mocap technology is a sensor-equipped suit from Xsens that we borrowed from Valve (and a second one that we borrowed from Suckerpunch) We shot this video a couple of years ago while we were capturing a number of basic Armizare moves.
Of course, stances and transitions do not make for much of a martial art. There will be a range of attacks, parries, counterattacks, and so on. So as long as we had Guy in an expensive electronic catsuit, we captured a number of those too. That's why we needed two suits: so that Neal could act as his tackling dummy.
We clean up and process these short segments of mocap data into discrete animations embodying stances such as Posta di Donna (where the sword is slung around behind the back of the neck) and moves between stances, such as mandritto fendente (an attack out of Posta di Donna from high right diagonally downwards) as well as various parries, counterattacks, etc. With a little help from the game engine and some clever programmers, these can be strung together according to rules in the combat tree--which is another data structure that makes up a part of the MASE. How you move the controller determines the path that you'll take through the combat tree.
All stances and moves in a system are therefore embodied, within a MASE, as sets of coordinates and paths. Some of those moves are so obvious and basic that even the lowest-level character will have immediate access to them. More advanced moves will have to be acquired over time by learning them from trainers in the game world. Learning a move adds it, in effect, to the inventory of things your character is capable of doing. You gain access to more of the combat tree, giving you the ability to execute a wider range of moves.
If you play Warcraft, you can make an analogy here to the inventory of spells, attacks, etc. that a character acquires over time. For a high-level character, this becomes a vast array of options, many of which are context-dependent in some way. The interface becomes the bottleneck. Actions need to be mapped to keys on the keyboard. When the keyboard fills up, players need to create multiple key maps and switch between them. Much of the screen real estate is taken up with icons, some of which may be grayed out or timed out in a context-dependent manner. In CLANG we seek to replace that style of interface with a swordlike object that you can move through space to select options from your "inventory" in a more obvious and intuitive way.
In-system vs. Out-of-System Movement
No hardware controller can measure every nuance of position and movement. By doing some basic pattern recognition on how the controller is oriented, however, it's possible to make a pretty good guess as to what stance the player wants his character to be in. If the data from the controller matches up with a known stance from the MASE, then we are In-System. The character in the game world drops into an animation that is biomechanically stable and martially sound. Various options in the combat tree become available. For example, if CLANG recognizes that you are in Posta di Donna, it will light up a number of relevant options on the attack star (a user interface widget that we'll talk about in a future technical note), cueing the player that a wide range of angles of attack can be launched from this stance.
An early prototype shows getting into Posta Di Donna and a mandritto fendente:
Sometimes CLANG might not be able to map the player's position onto a known stance from the MASE. In that case we are Out-of-System. CLANG then defaults to using the built-in capabilities of the game engine (inverse kinematics) to make the character stand and move in a plausible way. Many of the offensive and defensive options in the user interface become grayed out, since they can't be launched from arbitrary stances. In other words, being Out-of-System is not a desirable situation when you are playing the game, and most players will quickly learn how to avoid it. A simple interface (a reset button on the controller, for example) can be used to get back In-System when things have gotten into this state.
Our single most frequently asked question concerns what happens when the position of the on-screen sword gets out of sync with that of the hardware controller, which is something that might happen, for example, when your attack gets blocked and you keep swinging through even though your character's sword has been suddenly stopped. Sword Sync is what we call that. We'll cover it in more detail in a future technical note and video. Other than a good UI that helps you know when you are blocked, one answer is that real swordfighters move in such a way as to minimize the effect of being blocked; and part of becoming good at playing CLANG is learning to be more like a real swordfighter.