Master

Telemetry that shows the game in the wild

The bot measures the design. The players measure the game. Recording where players stop, what they retry, and how long they take turns the design into something checked against real sessions rather than against a model.

What you will see

Counts per reason. A single reason dominating names the thing players die on, which the score alone never shows.

About 1 min of reading

Try It

Record and read one session

1

Write one row per run

printf 'rows.push([progress, reason, seconds]); ' | tee game/tele.js

Before you run it, say out loud what it will print. Then open the answer.

What it prints
Three numbers per run. No frame data and no player identity.
2

Bucket the stops

node -e 'const rows=[[0.3,"hit",41],[0.6,"hit",88],[0.6,"hit",90],[0.9,"fall",30]]; const b={}; rows.forEach(r=>b[Math.round(r[0]*10)/10]=(b[Math.round(r[0]*10)/10]||0)+1); console.log(JSON.stringify(b))'

Before you run it, say out loud what it will print. Then open the answer.

What it prints
A small object of bucket to count. The mode is the busiest bucket.
3

Compare to the bot curve

print the player mode and the bot survival cliff side by side

Before you run it, say out loud what it will print. Then open the answer.

What it prints
Two numbers. Far apart means the policy is not what players do, and the model is the bug.
4

Record the reason too

count the rows by reason and print the counts

Before you run it, say out loud what it will print. Then open the answer.

What it prints
Counts per reason. A single reason dominating names the thing players die on, which the score alone never shows.
Do not record every frame of every run. The file becomes unreadable and the useful question is lost in it.

Data Flow

Run to a row to a histogram
1 Run ends
↓
2 Write one row with progress and reason
↓
3 Bucket the rows
↓
4 Find the mode and act on it
Why this works
What to do with the histogram

Find the mode. The most common stop point is where the game is too hard for most people, and that is the change to make.

Where telemetry is wrong

If it records only finished runs, it hides the abandonments that matter most. Record the stop reason, not only the score.

Examples

Record the stop point

The progress value where a run ended, per run. A histogram of that is the difficulty the players actually experienced.

Compare the two curves

The bot curve and the player histogram should be near. A wide gap means the policy was wrong, and the finding is about the model.

Keep the record small

One row per run with a few numbers. A record of every frame is a file nobody can read and a cost nobody accepts.

Words this lesson uses

Each one is defined here on this site. Open the entry for the full definition and the other words it points at.

← Balancing a game by measurement, not by play
Previous Lesson
Balancing a game by measurement, not by play
Next Lesson
Shipping a game build that can be rolled back
Shipping a game build that can be rolled back →