Temporal Anti Aliasing
Bolt has built-in support for handling the dis-joint relationship between Update
and FixedUpdate
in Unity, to put it a bit more bluntly: The simulation (FixedUpdate
) and rendering (Update
) portion of your game does not always line up 1:1 with each other.
This causes what's commonly known as 'micro-stutter'.
When you define a 'Transform' property on your state in Bolt, you need to assign a transform to it in the Attached
callback to have it sync over the network.
Normally a simple prefab would look like this:
And the code for hooking up the transform like this:
C#
using UnityEngine;
using System.Collections;
public class Sphere : Bolt.EntityBehaviour<ISphereState> {
public override void Attached() {
state.Transform.SetTransforms(state.Transform, transform);
}
}
If you've used bolt past the first part in the 'Bolt 101' series, this should look very familiar.
Since all simulation happens in FixedUpdate
, this setup can lead to 'micro-stutter'.
The way to deal with this is something called Temporal Anti-Aliasing.
Read more about "Temporal Anti-Aliasing".
The first thing we need to do is to just setup a normal class field on our 'Sphere' class, and pass that in as the secondary value to SetTransforms.
C#
public class Sphere : Bolt.EntityBehaviour<ISphereState> {
[SerializeField]
Transform renderTransform;
public override void Attached() {
state.Transform.SetTransforms(state.Transform, transform, renderTransform);
}
}
We then split out the mesh rendering parts from our root game object into a child object and make sure to assign the new 'SphereMesh' child object to the 'Render Transform' property we created on our 'Sphere' script, like this:
Now Bolt will take care of handling all artifacts which happen from FixedUpdate/Update not lining up perfectly.
Back to top