diff --git a/gpu-skinned-herds.html b/gpu-skinned-herds.html
index a71d73d..c9ebabd 100644
--- a/gpu-skinned-herds.html
+++ b/gpu-skinned-herds.html
@@ -373,13 +373,13 @@ NORMAL = normalize((skin * vec4(NORMAL, 0.0)).xyz);
At runtime, AnimalHerdRenderer spawns one skinned_herd per animal type. The herd bakes the palette from the model's clips. Animation logic maps sim FSM states to clip keywords (attack → attack/bite, flee → run/gallop, wander → walk). The renderer lerps positions between sim ticks for smooth motion and writes per-instance custom data each frame. Zero per-frame CPU on the animation path.
Where we stand vs the industry
The bone-matrix palette technique is the same architecture used by Assassin's Creed Unity, Total War: Warhammer, and Hitman for their crowd systems. We're using the same core idea, in a Godot fork, with smaller VRAM — our low-poly animals keep textures tiny.
-The platform supports three tiers by distance, all driven by the same (clip, count, speed, phase) packet:
+Stock Godot has no answer for this. Skeleton3D per character caps at ~20. MultiMesh can't skin. There is no built-in crowd animation path.
+The platform runs two tiers by distance, driven by the same (clip, count, speed, phase) packet:
- - Crowd tier (palette) — baked poses, GPU-driven, zero CPU. Thousands of agents.
- - Hero tier (real rigs) —
AnimationTree + SkeletonIK3D + PhysicalBone3D for the nearest few. Smooth gait blends, foot-lock, look-at, ragdoll.
- - Impostor tier (2D billboards) — sprite atlas indexed by view-angle and animation-frame. For very far agents.
+ - Crowd tier (palette) — baked poses, GPU-driven, zero CPU. Thousands of agents in one draw call per type.
+ - Hero tier (real rigs) — the nearest few agents get real
Skeleton3D + AnimationTree + IK. Smooth crossfades, head look-at, ragdoll. Hidden from the palette so they don't double-render.
-One abstraction, three detail levels. The same code that drives 30 animals today will drive thousands of colonists at launch.
+Same code drives 30 animals today. Same code will drive thousands of colonists at launch.
What's deliberately not here
- No C# wrapper. Instantiate from GDScript via
ClassDB.instantiate() — the binding surface is small and stable.
diff --git a/posts/gpu-skinned-herds.md b/posts/gpu-skinned-herds.md
index 5fbb380..5097f5a 100644
--- a/posts/gpu-skinned-herds.md
+++ b/posts/gpu-skinned-herds.md
@@ -157,12 +157,13 @@ At runtime, `AnimalHerdRenderer` spawns one `skinned_herd` per animal type. The
The bone-matrix palette technique is the same architecture used by Assassin's Creed Unity, Total War: Warhammer, and Hitman for their crowd systems. We're using the same core idea, in a Godot fork, with smaller VRAM — our low-poly animals keep textures tiny.
-The platform supports three tiers by distance, all driven by the same `(clip, count, speed, phase)` packet:
-- **Crowd tier (palette)** — baked poses, GPU-driven, zero CPU. Thousands of agents.
-- **Hero tier (real rigs)** — `AnimationTree` + `SkeletonIK3D` + `PhysicalBone3D` for the nearest few. Smooth gait blends, foot-lock, look-at, ragdoll.
-- **Impostor tier (2D billboards)** — sprite atlas indexed by view-angle and animation-frame. For very far agents.
+Stock Godot has no answer for this. `Skeleton3D` per character caps at ~20. `MultiMesh` can't skin. There is no built-in crowd animation path.
-One abstraction, three detail levels. The same code that drives 30 animals today will drive thousands of colonists at launch.
+The platform runs two tiers by distance, driven by the same `(clip, count, speed, phase)` packet:
+- **Crowd tier (palette)** — baked poses, GPU-driven, zero CPU. Thousands of agents in one draw call per type.
+- **Hero tier (real rigs)** — the nearest few agents get real `Skeleton3D` + `AnimationTree` + IK. Smooth crossfades, head look-at, ragdoll. Hidden from the palette so they don't double-render.
+
+Same code drives 30 animals today. Same code will drive thousands of colonists at launch.
## What's deliberately not here