Bill Robinson gives us an insight into how animation curves can be used for game balancing with his Multi-Curve editor. He also introduces UIAnimSequencer - a tool to quickly add juicy transitions and animations within Unity.
13. Spreadsheets - except
So much data!
Abstractions get lost in transfer
Consider Transformers: Earth Wars
● 50 troop levels
● 4 star levels
● 100+ characters
● Multiply => 10,000s of rows
17. ● Steering input curve
○ mapping input to steering amount
● Drift curve
○ same, but while drifting
● Acceleration curve
○ simulate drag with speed
● Rubber band curve
○ distance behind : catch-up boost
● … and many more
Super Karts
25. Example Use-case
“A wave-based random enemy spawner with escalating threat”
● Multiple types of enemies:
○ Reds
○ Oranges
○ Yellows
○ Greens
● Spawn random enemies in waves
○ Mostly Reds and some Oranges at the beginning
○ Mostly Greens at the end
○ Some Yellows in the middle
“… we think… until we try it, then we’ll see”
26. Weighted Random
● Pick weights for all elements (eg. Red=5, Orange=4, Yellow=2, Green=1)
● Sum up all the weights (eg. 5+4+2+1=12)
● Pick a random number up to sum
● Iterate through elements subtracting until we bust <= 0
Eg. Rolling my “d12”:
● 1-5 => Red
● 6-9 => Orange
● 10-11 => Yellow
● 12 => Green
30. var enemy = spawnConfig.enemies.WeightedRandom(e => e.weightingByWave.Evaluate(waveIndex));
One Line of Code
Enemy config we want
List of enemies
Custom weighted
random extension
AnimationCurve
31. ● Data drive!
○ Code / Config split essential
○ Consider size of your data
● Spreadsheets
○ Still probably your best friend
● Animation Curves
○ Pretty cool for many things
Summary - Balancing
37. Want More Juice!
● Waiting for coders - bottleneck
● Creating Animation Clips - pretty awkward, laborious, error prone
○ Sensitive to hierarchy change
○ Clunky interface
○ Performance issues
There must be an easier way
38. A Request From UX
As a UI Designer or Artist I would
hereby like the ability to quickly and
easily add animations to UI
Widgets and have them play those
animation forthwith in a quick and
easy manner.
An elementary animation sequencer
would allow us the quickly
prototype these experiences and
then refine as we progress.
Sincerely