post: only claim shipped tiers — crowd + hero, not impostor

This commit is contained in:
2026-06-15 22:58:06 +01:00
parent 05685ba477
commit 5997a5a56f
2 changed files with 11 additions and 10 deletions
+5 -5
View File
@@ -373,13 +373,13 @@ NORMAL = normalize((skin * vec4(NORMAL, 0.0)).xyz);</code></pre>
<p>At runtime, <code>AnimalHerdRenderer</code> spawns one <code>skinned_herd</code> 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.</p>
<h2>Where we stand vs the industry</h2>
<p>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.</p>
<p>The platform supports three tiers by distance, all driven by the same <code>(clip, count, speed, phase)</code> packet:</p>
<p>Stock Godot has no answer for this. <code>Skeleton3D</code> per character caps at ~20. <code>MultiMesh</code> can't skin. There is no built-in crowd animation path.</p>
<p>The platform runs two tiers by distance, driven by the same <code>(clip, count, speed, phase)</code> packet:</p>
<ul>
<li><strong>Crowd tier (palette)</strong> — baked poses, GPU-driven, zero CPU. Thousands of agents.</li>
<li><strong>Hero tier (real rigs)</strong><code>AnimationTree</code> + <code>SkeletonIK3D</code> + <code>PhysicalBone3D</code> for the nearest few. Smooth gait blends, foot-lock, look-at, ragdoll.</li>
<li><strong>Impostor tier (2D billboards)</strong> — sprite atlas indexed by view-angle and animation-frame. For very far agents.</li>
<li><strong>Crowd tier (palette)</strong> — baked poses, GPU-driven, zero CPU. Thousands of agents in one draw call per type.</li>
<li><strong>Hero tier (real rigs)</strong>the nearest few agents get real <code>Skeleton3D</code> + <code>AnimationTree</code> + IK. Smooth crossfades, head look-at, ragdoll. Hidden from the palette so they don't double-render.</li>
</ul>
<p>One abstraction, three detail levels. The same code that drives 30 animals today will drive thousands of colonists at launch.</p>
<p>Same code drives 30 animals today. Same code will drive thousands of colonists at launch.</p>
<h2>What's deliberately not here</h2>
<ul>
<li><strong>No C# wrapper.</strong> Instantiate from GDScript via <code>ClassDB.instantiate()</code> — the binding surface is small and stable.</li>
Before
After