[Open Beta] Procedural On-the-Fly Animation in UE4: iTween!

Thanks for the vote of confidence, Swift!

You’ll be happy to know that the new version is coming along nicely. I’ve ported over every single node minus three, so I’m working on those and adding some polish and there will be a release soon!

Things to look forward to:
-Completely static library, meaning you no longer need to pull out a reference to an iTween object. Now any node can be called from any blueprint.
-Huge speed gains in blueprint compile times, Play-In-Editor startup times and runtime tweening!
-The long-promised component and umg-specific tweening operations are now !
-Data tweens replace the need for iTProxy. A lot less mess now to tween vectors, vector2Ds, rotators, floats and linear colors without needing to actually perform these operations on an actor.
-A new frontend scripting language built inside of the blueprint interface to let users write pseudocode to drive iTween events… maybe. This may or may not make it into this release. It’s under rigorous testing.

Expect a release probably by next week unless something goes horribly wrong, but I don’t forsee that happening. Thanks for keeping the faith, Swift!

No worries at all :)!

That is all so very awesome to hear :D! I’m so glad it has ended up being a positive rebuild for you, and for there to be a release coming up soon :D.

Best of luck, hope nothing goes wrong :), keep up the awesome work :D! :)!

,

Thanks so much for doing this. It was a bit shocking to see UE not having tweening functionality. Cocos2d and derivatives, all JavaScript browser based libraries I’ve used have it by default.

Have you put it up on GitHub yet?

You’re welcome! I’m always happy to see people finding it useful!

When you say GitHub, do you mean have I submitted it as a pull request to the engine or have I created a personal repository for iTween? Because the answer to both is no, haha.

Honestly I have never used source control either for myself or as a part of Sweet because we have our own synchronization and backup system, so I never got into using GitHub. If that would be useful for a lot of people, I’d be glad to get it going but I just simply don’t know what the advantage of that is.

The new code-based iTween will be out sometime within the next week. We’re just testing and bug-squashing at this point. Trying to figure out the best and easiest way for both blueprint users and coders to be able to use the library.

I was just curious to see if the partially complete source is ready, compile it myself and use it in my project bugs or not, maybe contribute or spin off it. Not if you forked the engine :P.

Looking for the blueprint version, but no problem with c++ either. Thanks again for doing this!

De nada. 's the unofficial iTween 0.8 beta preview:

http://www.mediafire.com/download/9v65u19xt3f85ry/iTween+for+UE4+0.8+beta+preview.zip

It’s in plugin format, so unzip it to your project’s Plugins folder.

I don’t have time to write up a changelog, but everything I wrote up there is true for this release except for the frontend scripting language, so all the nodes labeled “Expert” and “Minimal” will be of little use without the parser. The “Full” and “Simple” nodes all work though.

Additionally, Move Update and Rotate Update operations are not included, though Scale Update operations are.

Enjoy! Post any questions you have!

Oh also, it is not compatible with previous iTween releases (written in blueprint), so you’ll have to replace all of your nodes if you’re upgrading. This will be true of the full release as well. That is to say, you’ll need to upgrade your nodes coming from previous releases, but future releases will maintain compatibility with this release for the most part.

Dude you rock! Thank you!

You’re welcome. Anytime.

we are… iTween version 0.8 beta! Get it : Mediafire

Big sweeping changes with this release! We hope you really enjoy all the work put into this beast. It’s been a long time coming.

I swear we didn’t hold back this release for Christmas, but Merry Christmas to those who celebrate!

New features:
-New C++ infrastructure! This new version lives entirely in C++ code, so C++ users can call iTween operations and Blueprint users can benefit from some extra speed in their iTween calls.
-New installer! Users no longer need to manually install iTween for their projects - the graphical installer will take care of all the cleanup and installation for blueprint users AND for C++ users. Users can still install manually if they choose.
-Completely Static library. You no longer need an iTween reference object or to spawn anything at all. Just call the appropriate event from anywhere and you’re tweening!
-Added Component-specific tweens. These operations work exactly like the tweens for Actors, but they operate on Scene Components.
-Added UMG Render Transform operations: Move, Shear, Scale, and Rotate From/To. These will allow you to directly transform UMG widgets without the need for iTProxy. This is slightly more performant than using iTProxy and won’t require use of the messaging system. Note this is not for the “User Widget” class, but the specific “Widget” class that is used to wrap individual widgets. The “User Widget” class is the actual User Interface class with the “Designer” and “Graph” tabs. Also note that widgets will note physically move or change size within the canvas - this affects only the Render Transform properties. They will have the appearance of moving or changing size, but their “home base,” so to speak, will not change. For example, if you place a widget on the canvas panel anchored to the center with a position of [5,5] and a size of [10,10], that’s the widget’s home base. Tweening its translation to [100,100] does not change the widget’s location to [100,100] or [105,105], it sets the Render Translation to [100,100]. The original location remains [5,5]. The same thing happens when adjusting the Render Translation directly on the widget. Similarly, setting the Render Scale to [2,2] does not change the original size to [2,2] or [20,20] (double). The original size remains [10,10]. The widget just has the APPEARANCE of having been transformed.
-New Data Type Tween operations: Vector, Vector2D, Float, Rotator, and Linear Color From/To. This is meant to replace iTProxy. This removes the need for wire messes.
-New OnTweenDataTick interface message. This is used for Data Type tweens to pass through floats, vectors, rotators, etc. to avoid having the OnTweenTick node becoming much too tall.
-New Front-end scripting language for Blueprints and C++! Certain nodes/methods now have a “Parameters” string input so you can change iTween properties through text, similar to the Hash() method from the original iTween. For example, if you want to set the vectorFrom and vectorTo to the actor’s current position and (10, 10, 10) respectively with an Ease In and Out Quadratic easetype, you can do so by typing either of the following into the “Parameters” input: “vectorfrom = current; vectorto = 10,10,10; easetype = easeInAndOutQuadratic” or “vfrom = this; vto = one * 10; ease = ioquad”. We’ve gone to great lengths to make the system as easy and forgiving as possible, so don’t be afraid to try it and give us your feedback!
-New related nodes for every event! In addition to the classic (and rebranded) Full nodes, you can try Simple nodes which cut out the less-used features to save space or Expert nodes which cut out everything but object references while still giving you the power of the Full node by providing you with a string input to harness the power of an easy-to-use front-end scripting language so you’re only setting options you need. Or go even Expert-er with Minimal and rock only three inputs: the tweening object reference, whether or not to begin ticking, and the string parameters. Object references with the minimal node can be handled via the Parameters input by putting in the object name or by setting them directly, pulling out the return value from the node. With this method you may need to leave “initialize on spawn” as false so that you can set things like Spline Components on spline operations, then initialize manually.
-Changed “InterpPointOnSpline” to “AlphaCompletion” in OnTweenTick interface message. This output now returns a float between 0 and 1 to show a “percentage” of completion for the tweening operation and works for all tweening operations, not just spline operations. This allows you to fire an event when, for example, the tween is 70% complete in its journey. Just check to see if AlphaCompletion >= 0.7.
-Added “Sweep Hit Result” output to On Tween Complete
-Updated “Successful Transform” passthrough parameters to be more accurate when using interface events.
-Loop Type “Once” changed to “Play Once” to avoid confusion that “Once” made the tween play twice.
-No more math nodes! This means no more build errors for users trying to package their games with iTween.

Some upgrade caveats:
-No more blueprint source. All the code is now C++ exclusively, though this source is available.
-Not compatible with previous version of iTween. Users will have to completely replace every node with new nodes should they choose to upgrade to this new release.
-No more iTProxy. Anything iTProxy used to do can now be done with the Data Tweens. If there actually IS anything iTProxy was doing that the Data Tweens can’t, please use an empty actor because that’s really all iTProxy was. I know I said that iTProxy would be kept for compatibility, but considering that these new nodes are not compatible with the old releases and Data Tweens do the necessary work, we figured it was best to just lose it. We’re sorry!

Known issues:
~ActorRotateFromTo, ComponentRotateFromTo
-Constraining pitch causes rotation jumping
~ActorMoveToSplinePoint, ComponentMoveToSplinePoint
-No handling for “out of bounds” easetypes
~ActorRotateToSplinePoint, ComponentRotateToSplinePoint
-No handling for “out of bounds” easetypes
-RotateToPath does not respect initial rotation; will snap rotation so that up vector of actor aligns with up vector of world
~General
-Restoration of original Tickable When Paused settings is still not possible yet, as there is no exposed property for “Get Tickable When Paused.” The function still works, but keep in mind that it will only set the actor to be Tickable but not set it back afterward. It’s better to leave this unchecked and manage Tickable When Paused on your own until this property exists in the engine.

Roadmap:
-Create new training videos
-Look into using landscape splines for spline operations
-Fix “out-of-bounds” EaseTypes with spline events
-Add more object-specific nodes

This needs to be standard part of UE4. Awesome.

This is so awesome, great work on the new release, the changes and improvements all sound incredibly exciting, can’t wait to put them to use in my projects and have them help increase the amount of design possibilities with the engine :D!
And that installer is absolutely amazing (even including initial tick boxes for the debug/error messages!)! Seriously great job with that :D, seeing the effort you put in to polish this so much fills me with confidence for its progress and I can’t wait to see its continued development as I feel it’s truly 100% necessary and you are all doing it absolutely right :D.

Great timing with its release :D, hope you all get to have a wonderful Christmas/enjoy the holiday celebrations :)!

You guys are incredible in your support, seriously thank you for the kind words.

I’ve begun writing a wiki for iTween. I’ve put a link to it in the first post. This will serve as the documentation for the plugin and will be the best place to get information about things like the Parameters language and text how-tos.

We’re on break as a team and I personally will be away on a vision quest with my girlfriend until Sunday, so I don’t expect I’ll have much opportunity to work on the plugin or the wiki until then, but that will be my focus for the rest of the week until we come back from break. That and new tutorials for the new version. Gotta keep myself busy.

Hey , have a good vacation. Its working great . You’re incredible for doing this.

I did get it to consistently crash in Construction Script, but it works like magic in Event Graph. My little game project is coming alive!

Will this work with Paper2D?

Thanks again mxnko! I believe the crash is caused by the fact that the editor update logic is different from the runtime Tick function that iTween relies on. If you need tweening in the editor, I’ll definitely be glad to take a look at getting that working. Can you give me a use case for editor tweens?

On that I’m not sure because I’ve never touched paper 2D, but it should work if it utilises the same transform functions as 3D games. If not, you can use vector 2D from/to and use the vector2d it outputs with the OnTweenDataTick function. Paper 2D was on the list to ensure compatibility with before 1.0, so if the current set of tools doesn’t do the job for you, it’ll be implemented withing a few weeks. Thanks for your interest, and I encourage you to give the tools a shot!

A wiki for this is a brilliant next step, great start to it :D!
Goodluck on your break, hope you all get to have a great time :).

,
I do a lot of component set up in Construction Script (I use it like constructors on classes), because I spawn a lot of geometry during gemplay (my game is an endless runner). There is no constructor only use case I can think of, but crashing part should probably be handled gracefully at some point.

It would be great to be able to wire tweens in constructors, but really not necessary.

I absolutely agree, mxnko. Crashing is never acceptable for a plugin to cause, so I will definitely be working to correct that. I was just trying to get a feel for your use case so I could try to accommodate the fix for it.

So glad to see this over on UE4! I used iTween quite a bit on Unity, but had to abandon it (plus many other things) when I made the transition. Thanks for all the hard work and the continued support.