Weekly Update - Archery, Game Over Screen, and IK

For the past few weeks I've continued work on combat focusing on archery and projectiles, and work on the Animation Editor continues with the addition of inverse kinematics.

Roadmap

First, I just want to re-affirm the current development roadmap so that it doesn't get lost among my current sub-tasks.

Adding combat to Antilia remains my top development priority. I will continue to work the project's "animation woes" with the Animation Editor and importers/converters on the side unless I need a specific animation to continue work on combat.

Once the main combat modes (melee and ranged weapons) are working I'd like to get our collection of "temporary decorative weapons" all in working order, so that finding those items is a bit more fun and there is more to play with in combat than just a single working sword and bow. To compliment the weapon variety I'd like to get a small number of enemies in the game that offer a bit of diversity as far as behavior and attacks go as well (you've seen most of these already - iichii, racha, serpents, slimes, etc.)

Once combat is in good working order I plan to spend a few months debugging and optimizing a bit, and then I think we'll be in a good place to start some community testing and getting feedback. Antilia is a huge project with a lot of things in "first pass" state still, so there's still a lot of development work to do even after testing resumes (second passes, new crafting systems, magic systems, the Sakii and Reisuii...).

Archery and Projectiles

My work on combat recently has been focused on adding ranged weapon modes to the game, something that was sorely lacking in the MMO.



Here I am working on the aiming mechanic, trying to get the bow's trajectory, character animation state, and camera to align well.


Firing arrows is becoming more functional, and they even stick into walls and hillsides when struck! (But not to characters yet.)

A system I spent a few days working on this past week is communicating the direction a player is aiming their bow to the server and the client/server part of archery and projectiles. I won't dive into the more complicated technical details, but suffice to say a lot of network communication is involved in aiming, shooting projectiles, and detecting hits for multiplayer.

KO Screen

Another item I worked on this past week is a "game over" or KO screen. This work also includes getting creatures and characters to go into a "KO" mode and adding new logic to AI behaviors so that creatures don't continue to attack targets which have already been defeated.



The current KO screen. (It's been pointed out that the font chosen for the character quote is a bit difficult to read.)

Animation Editor - IK

On the editor side I've been slowly adding a system to provide Inverse Kinematics (IK) when working in the Animation Editor. Our current Animation/Pose Editor only supports what is called "Forward Kinematics". With Forward Kinematics you position a character by rotating individual joints. So for a character to say, reach out and grab a cup you must rotate the character's shoulder joint, then their elbow, then their hand, etc. With Inverse Kinematics you move a 'target' point and the angles of individual joints (shoulder, elbow, hand) are calculated automatically.

While both modes are useful at times, the lack of IK in the editor makes some tasks more difficult than they need to be. Technical: I've implemented IK based on the simple "FABRIK" algorithm.



An early mathematical test of my IK implementation. The bones try to orient automatically to reach out and touch the red spherical target.


Testing the same algorithm again but with a longer chain.


I'm now starting to build an IK solution in the Animation Editor using the IK chain math developed above.

In the past week I started integrating the new IK algorithm into the editor, but first I had to refactor the way object selection and visualization was implemented. Previously only bones could be selected. If IK targets can also be selected it introduces an additional layer of complexity with multiple types of "Visualization Entities".

World Building and Lore

And finally here are a few lore articles I've been working on lately. These are all a work-in-progress as I continue building up a repository of information to write stories from.

That's all for this week, thanks for reading!