Art/Fix: A0 gate pass — death-pose lock, off-palette drift, lighting debris
Found by running the A0 style-proof against the SHIPPING scene instead of ArtStaging (which judges static glTF bakes on an import shader, with zero SkinnedMeshRenderers and no Animator — it cannot answer "does the game look like this"). Player-facing bugs fixed: - AC_PlayerTopDown/AC_EnemyTopDown "Death" had ZERO outgoing transitions. Any State enters on IsDead and nothing ever leaves. The player ghost is a persistent entity, so its Rukhanka animator never resets: once you died you rendered sprawled on the seabed permanently — sim fully respawned, moving and fighting, visually a corpse. Added Death -> Idle on (IsDead == false). - AmbientMotionSystem drift was still the deleted biome system: key 0 = "meadow", MeadowMoteColor (0.62, 0.85, 0.60) = GREEN motes, 600 of them in a 36x7x24 box following the camera — the most off-palette thing in the frame. Its x>500 region probe pointed at space now holding zero renderers. Collapsed to one cold marine particulate; dropped the 4 dead mote colours + AridWind. - FeedbackFx.MakeParticleMaterial built Sprites/Default with NO texture, so every procedural particle rendered as a hard SQUARE. Added a procedural soft dot (no Resources.Load — build-stripped; asset-free presentation is the rule). - Game.unity carried a stock Unity "Directional Light" (warm-WHITE, 1.05, Soft) outranking KeyWarm as a second competing shadow caster, plus 6 orphaned LandmarkLights — four at x=1030/1530 lighting a kilometre of empty water, two with no renderer within 12u, two of them purple. All 7 deleted. Added RimCold for silhouette separation; key:fill set to the tuned 3.9:1; WarmPool -> Soft. ArtStaging (kept as a lighting lab): KeyWarm 0.15 -> 0.85 — it was the only shadow-caster yet sat BELOW GloamFill 0.22, which destroys form by definition and is what read as "flat". StagingAmbiance was attached to nothing and its flora wiring searched for a Game.unity parent, which is what read as "static"; it also force-played the combat one-shot pool, now restricted to looping emitters. Flicker raised to a measured x2.11 cold swing vs x1.03 warm. 304/304 EditMode green; death-recovery, palette and particulate all verified live in Game.unity Play. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -147,35 +147,22 @@ namespace ProjectM.Client
|
||||
emission.enabled = true;
|
||||
}
|
||||
|
||||
// palette key: base hub vs the replicated per-room biome (WorldAtmosphereSystem's switch shape)
|
||||
int key = 0; // 0 = meadow/base
|
||||
if (_cam.transform.position.x > 500f)
|
||||
// 2026-08-07 (A0 gate): the per-biome drift — meadow / arid / cavern / blight — went with the
|
||||
// expedition. LANTERN is ONE look, so this collapses to a single cold marine particulate. The old
|
||||
// "meadow" default was painting GREEN motes across the whole seabed (the most off-palette thing in
|
||||
// the shipping frame), and the x>500 region probe pointed at space that now holds zero renderers.
|
||||
if (_biomeKey != 0)
|
||||
{
|
||||
key = 1; // arid default
|
||||
// 2026-08-07 audit purge: per-room biome selection keyed off RunInfo.CurrentBiome, which went
|
||||
// with the run FSM. The expedition region keeps its single motion set.
|
||||
}
|
||||
if (key != _biomeKey)
|
||||
{
|
||||
_biomeKey = key;
|
||||
_biomeKey = 0;
|
||||
var main = _drift.main;
|
||||
main.startSize = cfg != null ? cfg.DriftSize : 0.09f;
|
||||
Color c;
|
||||
Vector3 wind;
|
||||
switch (key)
|
||||
{
|
||||
case 1: c = cfg != null ? cfg.AridDustColor : new Color(0.85f, 0.68f, 0.45f, 0.28f); wind = cfg != null ? cfg.AridWind : new Vector3(2.2f, -0.15f, 0.5f); break;
|
||||
case 2: c = cfg != null ? cfg.CavernMoteColor : new Color(0.55f, 0.65f, 0.95f, 0.33f); wind = new Vector3(0f, 0.18f, 0f); break;
|
||||
case 3: c = cfg != null ? cfg.BlightSporeColor : new Color(0.72f, 0.50f, 0.85f, 0.33f); wind = new Vector3(0f, 0.28f, 0f); break;
|
||||
default: c = cfg != null ? cfg.MeadowMoteColor : new Color(0.62f, 0.85f, 0.60f, 0.35f); wind = new Vector3(0f, 0.22f, 0f); break;
|
||||
}
|
||||
main.startColor = c;
|
||||
main.startSize = cfg != null ? cfg.DriftSize : 0.07f;
|
||||
main.startColor = new Color(0.55f, 0.80f, 0.95f, 0.26f); // cold: warm is reserved for OURS
|
||||
var vel = _drift.velocityOverLifetime;
|
||||
vel.enabled = true;
|
||||
vel.space = ParticleSystemSimulationSpace.World;
|
||||
vel.x = wind.x; vel.y = wind.y; vel.z = wind.z;
|
||||
vel.x = 0f; vel.y = 0.16f; vel.z = 0f; // detritus rising up the water column
|
||||
var emission = _drift.emission;
|
||||
emission.rateOverTime = cfg != null ? cfg.DriftRate : 28f;
|
||||
emission.rateOverTime = cfg != null ? cfg.DriftRate : 18f;
|
||||
}
|
||||
if (!_drift.isPlaying) _drift.Play();
|
||||
// follow the camera's ground focus so the volume always blankets the view
|
||||
|
||||
Reference in New Issue
Block a user