I've been working with the Bone Behavior in Construct for awhile now, and while it's awesome, it's also very tough to work with. Since animation is my area of expertise, I thought it might be a good idea to get some thoughts out there for a possible version 2 of the bone animation tool. Some of these could still apply to how the bone behavior works now, others would probably require a complete rewrite. Here is my wishlist for bone animation in Construct 2.0.
1) Bone Root Object
Instead of a behavior, you would create a Bone Root Object which would have no sprites inherently attached to it. It would act like a root node to the actual rig. Editing that bone root object would bring up an editor window where you would build out your hierarchy of bones into a full rig, similar to how it is now but just creating bones with no attached sprites. You can then edit each bones properties like name, angle, size etc. The bones would be invisible during runtime.
Since there are no attached sprites to the bones, you can then link any sprite to any bone dynamically. The sprite would attach by its hotspot and auto align with the bone. You would also have options to change the angle of the sprite if necessary. If I'm creating a worm like creature, I can have one body segment sprite and attach it to each bone in the hierarchy to create the full body. Using only one sprite would save a lot on texture space. Through keyframing (see #2) or events, I can change from a "worm segment front" sprite to a "worm segment side" sprite. Being able to change sprites on a bone in realtime would help greatly with animations where the arms connect to different areas that you have to line up with the sprite.
2) Timeline Based Animation System
Basically your standard animation timeline. You have a timeline based on frames at the bottom of the window. Scrub the timeline to a frame where you want a new keyframe, manipulate a bone or hit a keyframe button, and the keyframe appears on the timeline. The keyframes would be per bone and not apply to the whole hierarchy as it does in Construct 1.0. A nice little play button would look great next to the timeline to preview animations
-Things you can keyframe
-Translation
-Rotation
-Scale
-scaling individual bones would stretch the sprite
-scaling the root bone object would scale the whole rig
-Z depth to control overlapping sprites
-Changing sprite texture (see #1)
3) Additive Blending and Layering
For Additive Blending, if I have an animation which is just the character shaking, I can play that animation over the top of others and it will blend additively (not take over the base animation, which is what layering would be). For example, if the character is running and then is suddenly on fire, I can trigger the shake animation to play on the character relative to what the run cycle is doing. This was used to create lots of organic movement in Drakes Fortune for ps3.
Layering would take over the animation based on a percentage. For example, I have two animations, a run cycle which has keyframes over the entire body and a cheer animation which only has keyframes on the upper body. Layering the cheer animation over the run cycle at 100% would have the lower body playing the run, with the upper body playing the cheer animation and ignoring the run keyframes.
4) IK
The ability to add simple IK chains to rigs would be a huge help for animating. This wouldn't be realtime IK (although that would be cool too) but more for making animation easier.
5) Misc. Features
- Rotations on a parent object should maintain the angle with the child object. If I have the arm bent in an L shaped position and I rotate the upper arm, the forearm should rotate with the upper arm and retain the L shape. As it works now, in the same scenario the arm will straighten out.
- Ability to get individual bone position, angle, scale, etc through events.
Feel free to post your own thoughts.