I am attaching 2 examples of my AnimBP one is a little complex to look at so I also included a simplified version. These images are a little old at this point and I want to note a couple things about them. First off they are intended for a platformer so keep that in mind. But more importantly I don’t know that they are 100% correct either as I was still building this whole thing out when I took these ones. I had no way to actually get a more recent image since the entire project is in the middle of being re-built again. Those come from a rather early test build I was doing.
Anyhow as you can see in these images my connections some times go 2 directions and sometimes not. I use colors to help make the flow easier to follow when I am looking at this because it does get rather out of hand after you add a lot of states. Each of the small nodes between the actual states contain the logic so for example Idle -> walk would just check to see if there is input from the player along that axis or not. You do that for everything and you make sure whatever state you are currently in links back to any other state you could possibly go from that one into. And each link just needs to have whatever condition needs to be met in order to make the transition within it’s node. I hope that makes some sense.
Also remember you can use AnimTransitions between nodes… i added that feature to avoid having to create states for things like Start walking, stop walking, landing, etc… you just setup an animation to play in between. Our game uses that feature and has slimmed down the AnimBP quite a lot
It’s funny that I never even considered doing that. I was so used to having to put something in that I never thought about an easier way to do it. Thanks for mentioning that When I get back to rebuilding the animations I will slim them up for sure.
Right now i’m trying to overcome some issues the plugin has, mainly with AnimSequences and abstraction of different animation sources.
I’m still munching solutions, but i’ll most likely change a bit the underlying architecture and change AnimSequences to be a UAsset with factories.
Added to this, i plan to add a solution for RootMotion in 2d, something i have been needing on our game quite a lot (stairs… hate them)
If all goes good, i’m expecting to have a better organized class layout and some quite good new features that would open some gates to better upgrades down the line
I’ll be posting news here.
The update will also fix various bugs regarding stack overflows when changing states (sorry for not fixing that, haven’t had the time, but will now fix it).
Stairs and slopes that connect to the ground are tricky to tackle. I came up with some really great ways to handle both of those so if you want to compare methods of handling them let me know.
Sure, sounds good enough… we can discuss that on our discord, where we can mumble more freely.
I’ll be posting updates about PZD too, next update’s going to be kinda big, as i’m refactoring a lot of things that weren’t quite right, and that’s opening new possibilities like RootMotion2D and AnimSequence_Creature/AnimSequence_Skeleton… as animation sources
For people wondering about 4.21 update.
I’m currently working in a kinda big update, so that’s why i haven’t been able to roll a stable 4.21 version.
But i’m considering pausing development to roll an update to the new engine version using the current live build, before continuing the big update.
Thanks for the patience!
Just uploaded version 4.21, it’s essentially the same as 4.20.
I’m currently working on QoL changes for next version and QA testing right now, when that’s done i’ll roll out a 2 part update.
More info on our trello and discord
Just finished cleaning and working on a lot of improvements, right now we have way better support for external animations, actually just tested with Creature2D meshes and they work pretty well, so its just a matter of coding the specialized AnimSequences if anyone would want to add external support for other animation sources.
Added delegates for looping, change sequence and finish playing.
General cleanup of the code and debuged a lot of edge cases.
If all goes well and i finish the QA, i’m going to upload this new version on the weekend.
Any questions or feature requests feel free to check us out on our discord
Version 1.3 is up, this version is a very big overhaul to the AnimSequence system, which lets us provide a lot of support for future features, besides that this version contains the following key features:
AnimSequences as independent assets (must be parented to an AnimBP, in order to let the compiler know how to link the custom notifies)
AnimSequences are now an abstract class, which can be derived to give support to other animation sources besides paper2D (we tested with Creature2D and will upload the source code for that support on a github account, so you can hook it up)
Full backwards support: After loading, the editor will create all the new AnimSequences (if you’re compiling from source you will see an ensure trigger, this is normal, as the AnimSequences are now an abstract class; all your AnimSequences will be recreated as AnimSequence_Flipbook). Please remember to save ALL the created assets, to avoid issues.
Sequencer has backwards support too, but due to the nature of how its implemented, you have to open all your sequences first and slide the cursor (so they get Initialized)… this will queue the character and the Template section will be able to obtain the data from it.
Custom settings, so you can customize how and where to put newly created AnimSequences via the Animation Editor.
Full IWYU support, the code base is pretty big, so it took some time to fixup every dependency.
New AnimPlayer, which is responsible of running the AnimSequences… this player comes with 3 delegates: “OnPlaybackSequenceChanged”, OnPlaybackSequenceComplete, OnPlaybackSequenceLooped), and on the AnimBP: for sequence swap and sequence playback complete.
Fixed general crashes and errors when re compiling BP notifies while having a notify panel open.
Fixed Stack overflow when having two bidirectional states with transitions active.
Added bIgnoreTimeDilation on AnimBP, so you can have global time dilation without affecting your character’s animation.
Added support to opt out of “TransitionalStates”: With transitional states you can go to State A to C, passing from B, on the same frame without having a direct connection… the queue will only play the last transition + target state… this helps make the graph smaller, but can lead to too much recursion, (and stackoverflows on our previous bug)… for that we added a limit on recursion and visited states… Opting out from transitional states gives you a faster graph, but with the price of having to create every connection, if you don’t want flicker on your animations.
There’s a lot more, besides optimization and bug fixes… i hope you enjoy it.
Please remember to back up your project; because of the nature of this update, and the cheer size of it… some errors could have escaped our QA… in that case, please refer to this support thread or join us at our discord.
Next update will come with some big new tools… so be prepared…
Hey Makoto… yeah sorry, the example project is actually a very old project that i’m currently working to replace.
Besides that i’m due to creating good documentation on this plugin, because is a 1 man job.
If you have doubts, please come to our discord channel and i can guide you better on how to use the plugin.
But! so you have some guidance here:
To create an animation sequence, you first have to create a new AnimSequence (from the AnimBP Editor or from the right click context menu) and select AnimSequence_Flipbook as the parent.
You will have to parent the AnimSequence to a previously created AnimBP, this is done so the AnimSequence can use the Custom notifies defined for that AnimInstance, or ask for recompile/add notifies when you add a new one.
After creating the sequence, simply open it, it will open the AnimBP Editor on the Animation Mode, here you have a list of all the AnimSequences bound to your animbp.
If you click on the left list (My Sequences), you can open their editor, change the flipbook, and modify the Notify Panels.
If you have more questions, feel free to ask, and thanks!
Hey HeadClot, already talked to you… glad you found your way to us.
Blendspaces are on a whishlist as i discused with you on discord and will be put on the plugin, but first we’ll try to stabilize this version, because that would require a lot of changes to how the states chose their sequences.
Maybe on 1.4 would be a good idea to implement them, we’re currently on 1.3.2
I’ve created external repos for adding support for Spine2D and Creature2D.
A million thanks to each of those developers which had enough patience to help me implement those code changes.
Head to this links if you need support for these 2 platforms.
Blending doesn’t work on this first iteration, as its a pretty early implementation, but i’ll start working on better support for this tools.
Thanks for the headsup @Unreal-NetFly , i’ll check it out!
If you have more info on the compilation error, you can also create an “issue” on the github page.
Remember also that the Spine2D tool is a “connector” for Spine2D and PaperZD, thus you need to have both plugins already installed, and also, the guys from Spine2D tend to undo our spine-runtime modifications without notifying us much and break the support for external animation sources… in that case you can always go to our spine2d-runtimes fork for the compatible version, if they did break it.
@HeavyBullets Can you change the current running animation blueprint? i tried just using SetAnimationBlueprint in BeginPlay() but it didn’t seem to actually change the character’s anim blueprint