Portfolio Case Study

Bonding SystemSystem Design & Balancing

A progression system that makes the relationship with a horse visible through gameplay and behaviour.

Role: Game Designer/Ownership: End-to-end system design · Progression & balance model · Behaviour specification/Tools: Google Sheets

The problem

Horses felt predictable and static. Spending time with an individual horse needed to produce a noticeable sense of progress.

The system

Player actions build or reduce Bonding. In the stable view, higher Bonding changes how the horse reacts to the player through position, orientation and animation.

Input
Player actions
PositiveFeeding · Training · Trial · Grooming · Mentality encounter
NegativeFalling off
Progression
Bonding
01234
01,5004,2007,80012,000
Output
Stable behaviour
Position & orientationBody languageIdle & greeting animations
Constraints: 4+ Bonding levels · existing stable view · match current progression pace · prevent action spam
Progression & Pacing

Balancing around a target progression time

I used the model to answer one question: given the game's existing progression pace and expected player behaviour, what should each Bonding action be worth?

Bonding balance model showing general parameters, action frequencies, importance factors, action values and estimated progression time
Working artifact

Balance model in Google Sheets

The sheet keeps pacing assumptions, action weights and calculated results in one place, so changes can be checked against the target progression time.

Open full balance model ↗

Set the pacing target

InputBaseline
Target progression period4 game years
Horse ageing2 game months / IRL day
Sessions1 / day
Target duration(4 × 12) / 2 = 24 IRL days

Set maximum Bonding and the level curve

0
0
1
1,500
2
4,200
3
7,800
4
12,000
Level threshold: level^1.5 × 1,500 Level 4 = 12,000 maximum Bonding

Early levels are faster to reach, so the player sees the system respond quickly. Later levels take longer, making maximum Bonding a longer-term goal.

Turn player behaviour into action values

Net weighted activity Σ(freq × signed weight) = 17 units/day
Base action value 12,000 / (24 × 17) ≈ 29
Action Expected / session Weight Weighted unitsfrequency × signed weight Bonding / action29 × signed weight Bonding / dayfrequency × Bonding / action
Feeding3×26+58+174
Training1×11+29+29
Competition1×11+29+29
Trial4×28+58+232
Mentality encounter1×11+29+29
Grooming1×11+29+29
Falling off1negative ×1−1−29−29
Baseline total 17 units / day 493 Bonding / day

Frequency is the expected number of actions per session; weight is the design importance of the action.

Why weight actions differently?

Feeding and trials have more weight. Training and competitions are primarily work for the horse, while trials put more emphasis on spending time together in a different setting. Feeding also gives the player another reason to buy feed from the shop.

Check the resulting pace

At 493 Bonding / day, each level lands close to the intended progression curve.

Level stepBonding requiredEstimated days at 493/day
0 → 11,500~3
1 → 22,700~5
2 → 33,600~7
3 → 44,200~9
Total / max Bonding12,000~24 days

Stress-test the pacing

Action frequencies were assumptions, so I checked what happens when player activity changes.

ActivityWithout capWith 600/day cap
75% of baseline~33 days~33 days
Baseline~24 days~24 days
125% of baseline~19 days~21 days
3× baseline~8 days~21 days

Without a limit, repeatable actions could cut a multi-week progression down to about a week. I set the daily positive Bonding cap to 600, leaving baseline play unchanged while keeping the fastest possible progression at about 20 days.

Stable Behaviour

Showing Bonding in the stable

Higher Bonding brings the horse closer to the player, with more attention and more expressive behaviour.

Level 0

Distant

Horse at the back of the stall, standing side-on with its head held high and turned away.
At the back of the stall

Alert posture · Looks away

Level 2

Relaxed

Horse at a neutral distance, with a relaxed stance and its head turned toward the player.
At a neutral distance

Relaxed posture · Looks toward the player

Level 4

Responsive

Horse close to the entrance, facing the player and stepping forward in greeting.
Close to the player

Greets the player · More varied idles

View behaviour specification · all five levels
BondingPosition & orientationExample behaviour
Level 0Steps away toward the back of the stall, ~65° from the playerAlert posture; head high; does not look at the player
Level 1Stays in place, ~45°More relaxed stance and idle; still does not look at the player
Level 2Stays in place, ~35°Relaxed idle; can look at the player
Level 3Steps toward the player, ~20°Greets the player with a bow, then returns to relaxed idles
Level 4Stays close and faces the player, ~20°Looks out to greet the player; playful movement and more varied idles
Designer Controls

Keeping the system easy to tune

The main progression and behaviour parameters should be editable by a designer in Unity.

Progression controls
  • Actions & valuesAdd, remove and tune Bonding actions.
  • Level progression curveControl how Bonding requirements grow between levels.
  • Daily gain capLimit positive Bonding gained per day.
  • Bonding decaySet when decay starts and how quickly Bonding is lost.
Stable behaviour — per Bonding level
  • Horse positionSet where the horse stands in the stall.
  • Horse orientationSet how directly the horse faces the player.
  • Opening animationChoose the first reaction when the stable view opens.
  • Idle animation setChoose the idle behaviour pool for the level.

These controls let the designer tune progression and make each Bonding level read clearly without changing the underlying system.

Other Case Studies

Seasonal Meta-Progression

A 13-week Battle Pass progression model for a solo Battle Royale, balanced across survival time, quest pacing, and absence resilience.

Systems & Economy Design · Solo Battle Royale

Seasonal Meta-Progression: Pacing, Motivation & Reward Architecture →

100-tier progression track with zero required wins, non-expiring weekly catch-up quests, and a deterministic 1,274-row simulation model in Google Sheets.

Read Battle Pass case study →