Visulie - Dynamic, Data-Driven Animations

Visual effects and animations are an integral part of making any game. However, one will quickly find out that creating such effects (such as abilities, attacks, impacts, spells, etc.) can become quite tedious. Creating effect props and brute force testing animation code is an excruciatingly slow process. Complex effects can be a couple of hundred lines of code! Let’s make this process more interactive! No more banging your head because you’ve been looking at the same 26 letters of the English lexicon trying to fix a pesky issue with your code!


The Visulie plugin comes with an editor and a player:

Visulie Editor Visulie Player

The editor provides a straightforward approach to creating animations, editing existing animations, and serializing the effects into data modules. This data can then be read on the fly during runtime and translated into a real-time animation.

Here’s a little showcase of what this plugin can do:

Runtime Playback

(excuse my mediocre animation expertise)
More examples!


Bob eats Taco Bell 3 miles from the nearest washroom:


Editor

Animating Rigs*

*Visulie uses a different system of rigging. Motor6Ds are not used at all. See here for more details.


The animation player supports playing at all framerate and playback speeds. You can also dynamically configure how the animation plays during runtime! You can create both 2D and 3D animations with this plugin. Traditionally unanimatable data types, such as ColorSequence, are supported with Visulie!

A tutorial is planned, but there are tooltips built-in to the plugin to help you navigate and use the editor. Functionality is similar to the built-in Roblox animator.


FAQ

Why not use the built-in animation editor?

The built-in animation editor is meant to animate rigs. The Visulie animator does not require any rigging to work.

Isn’t Moon Animator the same thing?

Moon Animator is used as an alternative to the built-in editor. Its purpose is more suited to create video content, rather than executable content during runtime as runtime playback faces the same limitations as Roblox animation.

Can I share my creations?

Yes! You can share the animation exported from Visulie. You can also freely distribute the Visulie Player’s source code (not the plugin source code! Just the player!).

I’m not hearing any audio in studio, is that a bug?

Currently, plugins are limited to where they’re able to play audio within a studio session. This issue will be immediately fixed once this feature request is resolved. For the time being, you must export and play your animations during runtime to hear your audio play in sync.


Example Place File

Animation Example.rbxl (60.0 KB)
Run the game and hold down the “Z” key to set the animation origin.


Get Visulie here:

GetVisulie


:warning: NOTICE :warning:

Game SignalBehavior must be set to “Immediate” for the plugin to work properly! You can find this property under Workspace.

Tag option will be removed in the next revision. Please do not use it for new work.

Visulie’s update schedule is currently paused. I alternate between different projects every so often for higher work efficiency (it gets a little mundane working on the same thing for such a long time!). Thank you for your understanding!

Here are some planned updates when the update schedule is resumed:

UI refresh (possibly matching the new studio UI!)
Tabs (editing audio, effects, and other visuals in a separate tabs)
Video-editor-like workflow for audio editing (as well as audio automation)
Undo/Redo (this is hard, might take a while)
Compatibility (immediate signal behavior is no longer required, version handling for data instances)
Performance (multi-threaded animations)
CFrame versatility (>180 degree rotation)


Please report any bugs and feature requests in the replies!

115 Likes

Looks pretty cool. Sounds like it has left and right sound

7 Likes

This is really cool. Hopefully, this also makes VFX more mainstream by making it more accessible to people.

8 Likes

The UI reminds me of Moon Animator

anyways great job on making the plugin, gonna swipe it when I got some robux

3 Likes

This Plugin Makes Scripting (Animation) Really easy its 100% worth 1,429 R$

7 Likes

It would be cool if you could add things like tweening Ui

1 Like

You can currently tween UI instances in 3D space using instances like SurfaceGuis and BillboardGuis. I’ll definitely add an option to create 2D animations with ScreenGuis in the future. Thanks for the suggestion!

This is really cool. Sad that it’s for that much robux, but totally deserves to be that much. Looks like a ton of work, great job!

I think for that much robux you should be including docs & tutorials if you’re looking for a wide audience

EDIT: Of course that’s not to say its not worth it on its own

1 Like

Hey! I understand your concern. I am planning to make a tutorial as well as the documentation. However, I want to refine the plugin and examine the current workflow further before doing so.

3 Likes

The price is fair, nice work. I’ll give it a try.

2 Likes

Visulie Version 1.1

  • Improvements

    • Removed “Edit Defaults” option (value of the first keyframe extends to the beginning frame). The button’s functionality will be superseded by a new behavior where the first keyframe for each property determines what the value will be upon initialization
    • Changed the data format of the exported animation. Please update your Visulie player so the new format can be read correctly (future data format changes will include a converter to convert old versions to the new version)
    • Minor playback optimizations
    • Made button tooltips clearer
  • Bug fixes

    • Fixed a bug where changing the instance name would cause properties to be recorded unintentionally
    • Fixed a bug where creating animation events would not work
1 Like

This is the first time I have seen a plugin worth so much and a petty cheap guy like me saying it’s worth it. I can totally understand the efforts you put on it, great job!

4 Likes

Could you add MeshParts support?

1 Like

I’ve actually contemplated how MeshParts could be supported within this plugin. To briefly describe the issue with implementing this feature, mesh parts are very difficult to create on the fly. There is no native API that allows the configuration of MeshId’s during runtime. However, there are workarounds to create mesh parts during runtime (although slightly hacky) but, it takes a while to plan and implement it practically and efficiently.

I’ve made a topic a while back trying to address this problem:

Mesh parts are still planned. It may just take a while before a satisfactory solution is released.

3 Likes

Visulie Version 1.2

  • Bug fixes

    • Inserting initiation properties no longer causes errors
    • Fixed an error where properties with the UDim datatype errored upon playback
  • NEW supported classes

    • Seat
    • VehicleSeat

2D animation editing is now supported!

Create 2D animations by dragging the editor folder to a location where guis can be rendered:

2023-11-23 22-21-30

Thank you @Crafterr33 for bringing this up.

6 Likes

This is what I’ve always thought moon animator should be. Imagine scripting out normal rig animations the way people script vfx, what a chore. Great work.

1 Like

That looks amazing!

I can see making loading screens with this!

1 Like

Visulie Version 1.3

  • Bug fixes

    • Renaming objects no longer stops listening to property changes to that object until it’s selected again
  • Improvements

    • Numbers and number containing datatypes datatypes (e.g., Vector3, NumberSequence) with the exception of CFrame rotation values are now clamped to three decimal places. This is done to preserve readability when making adjustments within the serialized animation
4 Likes

Visulie Version 1.4a

  • Bug fixes

    • Animations with multiple descendants now load without an error
  • Improvements

    • Time values clamped to four decimal places to increase readability
    • Internal approximation epsilon reduced from 1e-7 to 1e-4 to support the new time accuracy value and reduce the frequency of accidental keyframe inserts from inaccurate approximation
    • Color3 now serializes to Color3.fromRGB instead of Color3.new to prevent long strings of numbers

Anyway, here are some examples of this plugin being used in-game:


Most of the 3D animations seen are done using this plugin.

5 Likes