The red outline is the target ghost.
Bars update every frame as you draw. Toggle Diff
to see green (hit), red (outside), grey (missed) pixels at 64×64 resolution.
Notice Pixel Match % stays high when you draw outside —
IoU drops immediately.
⚠ Small drawings score 0 — a single dot or short line
is rejected. Your bounding box must span at least 20% of the 64×64 grid in both dimensions.
Accuracy Algorithms
All algorithms work on a 64×64 grid. Your drawing is cropped to its bounding box and scaled before comparison — position on canvas doesn't matter, only shape.
〰️Chamfer DistanceDefault · Forgiving
For every pixel you drew, finds the nearest target pixel, and vice versa. Both averages pass through a Gaussian curve — small misalignments still score well. Also applies a size penalty: drawing twice as large or half as small reduces your score logarithmically.
coverage = exp(−dPT² / 2σ²) ← how well you covered the target
completeness = exp(−dTP² / 2σ²) ← how much of the target you hit
sizePenalty = exp(−(log ratio)² / 2·log²(2)) score = coverage × completeness × sizePenalty
🎯Exact — IoUStrict
Intersection over Union. Overlapping pixels divided by all pixels covered by either drawing. Every pixel drawn outside the target inflates the union without helping the intersection, directly lowering your score. Even one extra stroke hurts.
intersection = pixels in both drawings
union = pixels in either drawing score = intersection / union
🟩Pixel Match %Coverage · Beginner
Pure recall — what percentage of the target's pixels did you cover? Drawing outside the shape costs nothing. Good for learning new shapes since messy extra strokes don't hurt. Strategy: make sure you hit every part of the outline even if your lines are messy.
score = pixels you drew inside target / total target pixels
⚖️Reward & PenaltyPrecision
Each pixel inside the target earns +1. Each pixel outside deducts the penalty weight (0.25 light / 0.5 balanced / 1.0 heavy). Net total divided by target pixel count, clamped to 0. Heavy penalty means one wrong pixel cancels one correct pixel.
Instead of averaging distances like Chamfer, Hausdorff uses the single worst-misaligned point. It finds the furthest-from-target pixel you drew, and the furthest-from-your-drawing target pixel — and scores based on the worse of those two. One stray stroke destroys your score even if 99% of your drawing is perfect. No averaging, no mercy.
dPT_max = worst of: min distance from each of your pixels to any target pixel
dTP_max = worst of: min distance from each target pixel to any of your pixels
hausdorff = max(dPT_max, dTP_max) score = exp(−hausdorff² / 2σ²)← Gaussian conversion, same σ as Chamfer
🪞Symmetry ScoreNew · Shape-aware
Measures how well your drawing's axis symmetry matches the target's.
For each of four axes (horizontal, vertical, and both diagonals), the algorithm measures
how symmetric both the target and your drawing are. Your per-axis symmetry is then
compared to the target's and scored on each axis, weighted by how symmetric the target
actually is on that axis.
A Star has high symmetry on all four axes — you must draw it symmetrically to score well.
An Arrow or Flag has almost no symmetry — those axes carry near-zero weight so the algorithm
falls back to the base Chamfer score, making it fair for inherently asymmetric shapes.
Strategy: focus on balanced, even strokes. A slightly smaller star scores higher than a
lopsided one the same size.
targetSym[axis] = IoU(target, reflect(target, axis)) ← how symmetric is the target?
playerSym[axis] = IoU(player, reflect(player, axis))
axisScore[axis] = 1 − |playerSym − targetSym| score = Σ(targetSym[axis] × axisScore[axis]) / Σ targetSym[axis] falls back to Chamfer if target has no axis symmetry (e.g. Arrow, Flag)
Animated Walkthrough
Step through exactly how each algorithm processes a drawing — from raw canvas to final score.
Select an algorithm, then use the step buttons to advance the animation.
Algorithm Walkthrough
Select an algorithm to begin
—
Select an algorithm above to begin the walkthrough.
—
Running Score
—
Points Modes
🏆Win-basedPoints Mode
Highest accuracy earns 1 point. Everyone else earns 0. Ties award 1 point to all tied players. Small accuracy edges matter enormously — 99% beats 98% the same as 99% beats 1%.
+1 pt to the player(s) with highest score · all others: +0
📊PercentagePoints Mode
Your accuracy percentage becomes your points directly. 73.5% → 73.5 points. Everyone scores independently. Rewards consistency — scoring 80% every round beats 100% twice and 40% the rest.
points this round = accuracy × 100 · total = sum across all rounds
Modifiers
⚡Speed BonusModifier
Multiplies your accuracy by a factor based on how much time remained at lock-in. Max 1.5× if you lock in immediately. Exactly 1.0× at the buzzer. The live bar always shows base accuracy — the multiplier only applies at Lock In.
Rewards drawing the shape in as few strokes as possible. Each pen-down to pen-up counts as one stroke. Changes strategy completely — plan each stroke before committing rather than freely sketching. One precise stroke beats four sloppy ones.
1 stroke → 1.5× · 2 strokes → 1.3× · 3 strokes → 1.1× · 4+ strokes → 1.0× Stacks with Speed Bonus, total capped at 2.0×
🏅Peak ScoreNew · Mode
Uses your highest accuracy at any point during drawing, not the score at lock-in. Draw freely, overshoot, refine — your best moment is captured automatically. Strategy change: you don't need to stop at exactly the right second. A small peak marker in the accuracy bar shows your best so far.
locked score = max(accuracy at each frame during round) Speed Bonus multiplier still applies at the moment you press Lock In
Algorithm Comparison
Algorithm
Penalises extra strokes
Penalises missing parts
One bad stroke ruins it
Difficulty
Chamfer
✓ size penalty
✓ completeness
✗ averaged
Easy–Medium
Exact (IoU)
✓✓ heavily
✓✓ heavily
✗ averaged
Hard
Pixel Match %
✗ ignored
✓ coverage
✗ no penalty
Easy
Reward+Penalty
✓ configurable
✓ not rewarded
✓ at Heavy
Medium–Hard
Hausdorff
✓ worst point
✓✓ worst miss
✓✓ yes
Very Hard
Recommended Combinations
Classic Duel
Chamfer · Win-based · no modifiers. The original feel — forgiving, competitive.
Expert Arena
IoU · Win-based · Speed Bonus. Every stroke counts, fast drawing rewarded.
Minimalist
Chamfer · Win-based · Stroke Efficiency. Draw the shape in one stroke. Plan first.
Endurance
Chamfer · Percentage · no modifiers. Consistency wins. One bad round doesn't eliminate you.
No Stress
Peak Score · Percentage · no modifiers. Your best moment counts. Ideal for casual players.
Surgical
Hausdorff · Win-based · no modifiers. No outliers. Every single stroke must land on target.