Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The Road to Animancer v8.0 #295

Closed
KybernetikGames opened this issue Jul 4, 2023 · 6 comments
Closed

The Road to Animancer v8.0 #295

KybernetikGames opened this issue Jul 4, 2023 · 6 comments
Labels
Enhancement New feature or change request Solved A solution is available here (but may not yet be included in the latest release)

Comments

@KybernetikGames
Copy link
Owner

KybernetikGames commented Jul 4, 2023

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.

  • I plan to work on Inertialization after this Animancer update.
  • It will likely be part of FlexiMotion instead of Animancer. It could be a new standalone asset, but quite a few utilities can probably be shared from FlexiMotion.
    • The only part that should actually need to interact with Animancer is the ability to steal a regular fade to apply an inertialized fade instead (like how Custom Fades work).
    • Other than that, it should be usable with other animation systems as well.

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.

@KybernetikGames KybernetikGames added Enhancement New feature or change request Read Me Introduction Feedback Wanted Community feedback is desired labels Jul 4, 2023
@KybernetikGames KybernetikGames pinned this issue Jul 4, 2023
@nscimerical
Copy link

nscimerical commented Aug 27, 2023

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
Copy link
Owner Author

KybernetikGames commented May 1, 2024

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

  • The Change Log is now up. Obviously I'll keep adding to it as I work, but all the major features are there.
  • This will be a paid update. Anyone who buys Animancer Pro after today will be able to upgrade for free. Anyone who bought it before that can upgrade with a 50% discount. The Upgrade Guide has more details.
  • Feedback is welcome, particularly regarding the changes to Animancer Events.
  • If anyone has an idea where I could go to get a trailer video made, please let me know. The current one isn't great and will need to be updated for the new features anyway, so I figure now is a good time to look into getting one made professionally.

@KybernetikGames
Copy link
Owner Author

@KybernetikGames
Copy link
Owner Author

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
Copy link
Owner Author

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.

@KybernetikGames KybernetikGames added Solved A solution is available here (but may not yet be included in the latest release) and removed Read Me Introduction Feedback Wanted Community feedback is desired labels Aug 16, 2024
@KybernetikGames KybernetikGames unpinned this issue Aug 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Enhancement New feature or change request Solved A solution is available here (but may not yet be included in the latest release)
Projects
None yet
Development

No branches or pull requests

2 participants