Skip to content
Media 1 for listing Tickify

Description

Quick setup video and in editor performance comparison.

Video about the Tickify custom delegate pin.

Have you ever worried about performance when adding so much of these ticking features you only need to run under certain condition?

Have you ever wanted to avoid adding an extra branch in a sequence in the event tick just for little things like a smooth interpolation?

Have you ever wanted a UObject to have a tickable function?

Does your project involve hundreds of actors with small ticking tasks?

Have you ever wanted to perform different functions per tick depending on the LOD of a Skeletal Mesh?

If you are looking for a solution to any of the above, this plugin can fulfill your needs!

What does Tickify do?

Tickify provides nodes that subscribe the bound function/event to the tick when they are called, allowing you to dispense with the Actor Tick. This way, it eliminates the running cost of the Event Tick when none of the functions are enabled, or saves you the time of creating a system to determine when to disable/enable this Actor Tick.

Creating a tick is done by calling a Tickify node with a valid bound Tickify Tick function.

Stopping a tick is done by calling the Untickify function from the desired tick handle.

How fast is implementation?

One of the goals for this plugin was to make it really fast to work with.

  • Handle variable: When you create a new Tickify node, it automatically creates a handle variable for the tick to make it faster to locate the tick. 

  • Custom delegate: Tickify nodes use a custom delegate that allows you to quickly create a function or event that matches the name you gave to the Tickify node. It also allows you to quickly navigate to the bound function by pressing the link button or double-clicking the Tickify node.

  • Naming: You can change the name of the tick from the variable or by modifying the Tick Name field in the details panel when a Tickify node is selected. This name will automatically be used only as a prefix when creating functions/events from the drop-down list.

How are exceptions handled?

  • Removed bound function: If a Tickify node had a function bound in some of its delegates, it will generate a compiler error from which you can navigate to the node with the error. Additionally, the custom delegate pin will turn red.

  • Owner of the function destroyed at runtime: Tickify checks if the actor owning the function is valid before calling the bound function, if it is no longer valid, Tickify will schedule the tick removal.

How to get the best performance when using Tickify?

  • Unconditional tick functions: For those ticking functions that you need to run every tick, it is better to wrap them into a single Tickify tick function. Tickify is faster than Unreal's tick due to its simplicity for use in blueprints, but it still has a complexity of O(n). Minimizing the number of ticks you use, if they will be running all the time, is the best way to improve your performance.

  • Calling the Tickify node once: If you want to activate the tick, avoid calling the Tickify nodes per tick. If you have a scenario like this, you want to wrap the logic you have in the Tickify Tick function into a separate function and call it directly per tick instead of calling the Tickify node. 

What about migrating projects to new Unreal Engine versions when using Tickify?

After opening a migrated project, you should avoid saving any changes if you have not yet installed the latest version of the plugin corresponding to the version of the engine to which you are migrating the project. If you do, you will lose all the nodes that come with Tickify. First activate the plugin from the plugins window, restart it without saving any changes, and you should be good to go.

Although updating a project that uses Tickify following the instructions above is proven and completely safe, as a precautionary measure, it would be best to follow this tutorial by @JonathanWinbush to permanently enable Tickify, or any other plugin your project uses, before opening the project so that there is no chance of losing data.

Why to force the use of a variable?

This handle variable is required to quickly locate and modify the tick via the handle, eliminating the need for containers that require costly operations such as rehashing or O(n) complexity iterators.

In addition, Tickify provides an alternative node called Tickify Glider, which performs an output execution pin per tick and does not create a handle variable in your object.

Included formats

  • logo of Unreal Engine format