guts/web/assets/manifest.json
type-two 6d3bac8d41 [lane D] Real pathogens: Giardia and H. pylori get Trellis meshes
Playtest ask: "more detailed looking enemies... we have local trellis-2 and hunyuan, we can make
actual shaped pathogens". Two landed, keyed by ARCHETYPE so one mesh skins every instance of
that behaviour with no code change:
  latcher  -> Giardia trophozoite: teardrop body, broad front, ventral suction disc. 2232 tris.
              Replaces a tetrahedron, and it is the one that matters most — a latcher ATTACHES
              to your hull, so it is the only enemy the player ever sees close up.
  driller  -> H. pylori: thick corkscrew rod. 3231 tris. Replaces a cone.

Both prompts deliberately ask for BODIES and no flagella: the phage taught us image->3D webs
thin appendages into a lump, and at flat-emissive gameplay scale only the silhouette ships.
It worked — bbox aspect 3.80 (teardrop) and 2.12 (rod) against the phage's near-cubic 1.27:1.41:
0.94 failure, so these are genuinely shaped rather than blobs.

THE PIPELINE FIX that made them usable, worth recording: collapse-decimate FLOORS OUT on Trellis
output. Asking for 2500 tris gave 15871 and iterating moved it not at all; welding first made it
worse (12042 -> 78663); triangulating changed nothing. The answer is VOXEL REMESH first — it
rebuilds the surface as clean manifold topology, which is the right tool for a blobby organic and
finally gives decimate something it can collapse. 15439 -> 2232 and 78663 -> 3231, shapes intact,
4.4MB -> 91KB. Any future pathogen goes through the same path.

Not landed: seeker and turret. MODELBEAST returned 401 then 429 on both across two runs — the
guest token's active-job cap, not a content failure. The script is resumable; they need a quieter
window on the farm.

Honest limit, so nobody expects more than this delivers: at gameplay distance under flat emissive
these read mostly as silhouette, so the gain over the old primitives is real but modest. The place
it should actually show is a Giardia clamped to the hull. If we want enemies to read as DETAILED
rather than merely better-shaped, the lever is the rendering (a matcap or rim treatment on
entities), not more geometry — that is an ART_BIBLE decision, not a pipeline one.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-26 13:53:11 +10:00

160 lines
3.2 KiB
JSON

{
"audio": {
"beds": {
"esophagus": {
"gain": 0.5,
"loop": true,
"m4a": "audio/bed-esophagus.m4a",
"ogg": "audio/bed-esophagus.ogg",
"seconds": 24.0
}
},
"sfx": {
"boost": {
"gain": 0.6,
"loop": false,
"m4a": "audio/sfx-boost.m4a",
"ogg": "audio/sfx-boost.ogg",
"seconds": 0.85
},
"hit_squelch": {
"gain": 0.7,
"loop": false,
"m4a": "audio/sfx-hit-squelch.m4a",
"ogg": "audio/sfx-hit-squelch.ogg",
"seconds": 0.34
},
"pellet": {
"gain": 0.5,
"loop": false,
"m4a": "audio/sfx-pellet.m4a",
"ogg": "audio/sfx-pellet.ogg",
"seconds": 0.2
},
"pickup": {
"gain": 0.5,
"loop": false,
"m4a": "audio/sfx-pickup.m4a",
"ogg": "audio/sfx-pickup.ogg",
"seconds": 0.5
}
}
},
"matcaps": {
"mol_chrome": {
"url": "gen/matcap_mol_chrome.webp"
},
"mol_glass": {
"url": "gen/matcap_mol_glass.webp"
},
"mol_matte": {
"url": "gen/matcap_mol_matte.webp"
},
"mol_molten": {
"url": "gen/matcap_mol_molten.webp"
},
"mol_pearl": {
"url": "gen/matcap_mol_pearl.webp"
},
"tissue_wet": {
"url": "gen/matcap_tissue_wet.webp"
}
},
"models": {
"spore_pod": {
"url": "models/spore_pod.glb",
"tris": 3019
},
"latcher": {
"url": "models/latcher.glb",
"tris": 2232
},
"driller": {
"url": "models/driller.glb",
"tris": 3231
}
},
"textures": {
"wall_colon_a": {
"normal": "gen/wall_colon_a_n.webp",
"tile": [
3,
20
],
"url": "gen/wall_colon_a.webp"
},
"wall_colon_b": {
"normal": "gen/wall_colon_b_n.webp",
"tile": [
4,
15
],
"url": "gen/wall_colon_b.webp"
},
"wall_esophagus_a": {
"normal": "gen/wall_esophagus_a_n.webp",
"tile": [
4,
16
],
"url": "gen/wall_esophagus_a.webp"
},
"wall_esophagus_b": {
"normal": "gen/wall_esophagus_b_n.webp",
"tile": [
3,
12
],
"url": "gen/wall_esophagus_b.webp"
},
"wall_oral_a": {
"normal": "gen/wall_oral_a_n.webp",
"tile": [
5,
12
],
"url": "gen/wall_oral_a.webp"
},
"wall_oral_b": {
"normal": "gen/wall_oral_b_n.webp",
"tile": [
3,
20
],
"url": "gen/wall_oral_b.webp"
},
"wall_smallint_a": {
"normal": "gen/wall_smallint_a_n.webp",
"tile": [
5,
14
],
"url": "gen/wall_smallint_a.webp"
},
"wall_smallint_b": {
"normal": "gen/wall_smallint_b_n.webp",
"tile": [
6,
10
],
"url": "gen/wall_smallint_b.webp"
},
"wall_stomach_a": {
"normal": "gen/wall_stomach_a_n.webp",
"tile": [
4,
18
],
"url": "gen/wall_stomach_a.webp"
},
"wall_stomach_b": {
"normal": "gen/wall_stomach_b_n.webp",
"tile": [
3,
22
],
"url": "gen/wall_stomach_b.webp"
}
}
}