KybernetikGames / animancer

Documentation for the Animancer Unity Plugin.
66 stars 8 forks source link

The Road to Animancer v8.0 #295

Closed KybernetikGames closed 2 months ago

KybernetikGames commented 1 year ago

Edit: the Change Log is now up with much more detail than this page.

This is a summary of my current progress and plans. Things may change at any time. Last Updated: 2024-08-17

I've started work on the next major version of Animancer and it will likely end up being the largest update yet by a significant margin because the main feature I want to implement (Transition Sets) actually requires several other big features as well.

Feature Description Status
Transition Libraries A system which lets you set up different transition details based on the previous state (i.e. you tell it to play A and it can pick a different fade duration depending on whether it was previously playing B or C). It will most likely let you visualise a web of connections like Animator Controllers, but it will not be an actual state machine with transition conditions that let it act on its own. Done
Mixer Parameter Binding Similar to how Animator Controllers have parameters to control Blend Trees so your code can just set a parameter and any mixers that care about it will respond accordingly. This will be necessary for Transition Sets because your code won't necessarily have a direct reference to a mixer if it's defined in a set so you wouldn't be able to easily control its parameter directly. It will also be a significant improvement for nested mixers which can be painful to control. Done.
Animancer Event Binding Similar to Mixer Parameter Binding, but for Animancer Events. You would call something like animancerComponent.Events.SetCallback("Name", callback) then any event with that name in any state will automatically trigger that callback instead of needing to set the callback on every specific state/transition. This will also be necessary for Transition Sets (otherwise Animancer Events would be basically unusable with them so you'd need to just use Unity's Animation Events). Unfortunately, this is a breaking change. Any event callbacks set up in an older version of Animancer will be lost. Done.
Scriptable Objects as Event Names Instead of text fields in the Inspector for event names, it will have a field for picking a NamedKey asset with a button to create a new one. The runtime event sequence still supports direct string usage so existing code will still work and you won't need to get a reference to the asset in order to assign a callback with that name. This reduces the chances of misspelling (without needing the [EventNames] attribute) and allows easier renaming. Unfortunately, this is a breaking change. Any event names set up in an older version of Animancer will be lost. Done
Examples At the very least, I want to do a pass over all the examples to replace the character model with the new one I made for FlexiMotion. I've heard about some tools (Plask and Cascadeur in particular) that may allow me to make my own animations so they can be distributed with Animancer instead of depending on the very limited supply of Creative Commons licensed stuff I've been able to find. That would open up possibilities to significantly improve some examples and make some new ones. Done.
Trailer Video Big new features and examples means I should probably make a new trailer video. I hate video editing.
Package If you take a look at the Package Contents of FlexiMotion you can see that it's actually imported into the Packages folder instead of Assets/Plugins. Does that mean it works like Unity's packages which can be removed or updated without needing to manually delete them? Nope, we still don't get that. It only really has 2 benefits: 1) it keeps plugins out of the Assets folder which many people prefer, and 2) it allows for Defining symbols based on Unity and project package versions so other plugins can be set up to allow #if ANIMANCER (or whatever symbol they want) to conditionally compile out code that would use Animancer if it's not present. Done.
Unity Versions Drop support for Unity 2019, 2020, and 2021. Currently Animancer v7.4 requires me to test and upload Animancer Pro and Lite with 5 different Unity versions each, which is hella inconvenient. Done. Not really a task, just needed to be done as part of a major update.

Inertialization

Inertialization is a technique which could potentially improve the visual quality and/or performance of animation transitions compared to the simple cross fading Animancer currently uses.

DOTS Animation

Nope. Practically no part of Animancer would be directly usable in DOTS and without any base system to build upon like the Playables API I'd essentially be competing directly with Unity's animation team as well as anyone else making their own plugins from scratch, but at a massive disadvantage with limited time and the need to continue supporting old Animancer (and all my other plugins). So I don't plan on attempting anything there in the near future.

Release Date

Not any time soon. Having a full time job means I can't spend anywhere near as much time as I used to developing Animancer and this one will likely be significantly larger than any previous update.

nscimerical commented 1 year ago

I look forward to the Inertializaton technique being implemented. It would certainly ease the burden for networked games. Regardless if it would be part of Fleximotion or a new package, it's definitely a day one buy for me!

KybernetikGames commented 6 months ago

Hey everyone, it's time for a progress update on Animancer v8.0:

KybernetikGames commented 3 months ago

Animancer v8.0 is now available for Alpha Testing..

KybernetikGames commented 3 months ago

Animancer v8.0a3 is now available for Alpha Testing. The main changes from a2 are:

Anyone with access to the Pro Test can download the new package from the same link as before. The Lite Test is available in the Upgrade Guide.

KybernetikGames commented 2 months ago

Animancer v8.0a4 is now available for Alpha Testing. It doesn't have any significant changes from a3, just a few minor fixes and cleanup with most of my work going into improving the Samples, including a few new ones.

KybernetikGames commented 2 months ago

Animancer v8.0 is now up on the Asset Store and Itch.io. I decided to skip the planned Beta release since the Alpha has been stable and I've already updated a lot of the documentation so it should only take a few more days to finish the key pages. I've set up the upgrade discounts so they should just work automatically, but let me know if you have any issues with it.