Hello Falafel,
I’m honored that you liked the template I created.
ZeroScripts has already provided an explanation, but I thought it would be helpful to also share my own process and approach to creating it.
First, regarding how to make it work, as already mentioned, control is achieved by combining condition expressions and operation expressions. I will explain this separately for each.
• Condition Expressions
In most cases, as long as the Live2D itself does not change, it is often possible to consolidate all behaviors into a single template.
This is because many of the parameters are shared, and even when not actively used, they still exist while holding some value.
For condition expressions, you should look for parameters that always have some value, but whose behavior changes when you want to differentiate actions.
For example:
- A parameter is fixed in scene A but changes in scene B
- A parameter is fixed in both scene A and B, but with different values
You should look for parameters like these.
A recommended approach is:
- Display the list during scene A and enable Freeze
- Scroll to the bottom of the item list
- Then switch to scene B
Items near the bottom are those that were not changing before, so if any of them become highlighted, they can often be used to create condition expressions.
Of course, this method is not perfect. In practice, you may need to note down fixed values or apply more flexible thinking.
As for writing condition expressions, they are typically in forms like:
(ParamA == N) * or (ParamA != N) *
You can also use operators like <= or >= for more flexibility.
Although I haven’t tested it, something like
((p_ParamA == N + p_ParamB == N) >= 1) *
could potentially work as a switch that activates when either condition is true.
• Operation Expressions
Basically, this is just selecting parameters and converting their behavior into expressions to input into Offset.
When controlling via Offset, make sure to always set Multiplier to 0.
The controllable range of Offset is proportional to the Multiplier value.
Except for Twist, I recommend starting from 0.5.
This helps avoid situations where, due to missing parameters or when selecting templates, values default to 0 and cause undesirable movements.
One advantage is that when directly modifying Multiplier, the result may shift relative to the Offset position depending on the scale.
However, when controlling via Offset, this shift does not occur.
It also allows you to:
- Combine multiple parameters into one motion
- Correct mismatches between parameter values and animation behavior
Actual Expression Format
In my templates, I generally use the following format:
([Invert]p_ParamN / [max - min] * Multiplier + Offset)
- If Invert is enabled, a
- is added before the parameter
/ [max - min] normalizes the value to a 0–1 range
* Multiplier adjusts the intensity
+ Offset determines the center point of motion
Offset is also useful when values do not center around 0 (e.g., 0–1 ranges).
When combining multiple movements, simply add two or more of these expressions together.
• Thought Process
Basically, I first go through all the mechanics in a scene and note how I want each axis to behave when changes occur.
Then I:
- Create condition expressions that detect those changes
- Combine them with operation expressions
In my opinion, the greatest strength of this plugin is that it allows anyone to easily create game-linked mods without requiring specialized knowledge.
As you can probably tell from how often I post, templates can be created very quickly and easily.
At first, things may not go as expected, but after some trial and error, you’ll quickly get used to it.
I’ve been creating templates for SR6, but not for Liner. I believe there are many people who can create even better multi-axis templates than I can.
If you’re reading this, I highly encourage you to give it a try yourself.
Sorry for the long explanation, and thank you for reading.