Docs: DR-025 world redo (natural-frontier biomes) + session log; CLAUDE.md art pointer
Session log + DR-025 for the off-world natural-frontier world redo; mark PolygonNatureBiomes in-use in the Synty inventory; archive the long-form gotchas (PNB ring-mesh white-torus, edit-mode region-fog preview, EG-entity vs cosmetic, execute_code DeleteAsset block, shadow-cast hygiene). CLAUDE.md: net-zero art pointer to DR-025 (39882 B, under the 40KB budget). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -321,3 +321,44 @@ Full rules: `~/.claude/skills/dots-dev/references/dots-conventions.md` (Windows:
|
||||
`.mcp.json` is committed + portable (`${CLAUDE_PROJECT_DIR}`); the **`dots-dev` skill travels with the repo** (`.claude/skills/dots-dev/`). Each machine still needs: (1) `uv`/`uvx` + Obsidian app + `obsidian-cli` (the `unity-mcp-skill` + native `memory/` are machine-local, don't sync); (2) basic-memory registration — `uvx basic-memory project add gamevault "<repo>/Docs/Vault" --default` then `uvx basic-memory reindex --full --search --embeddings --project gamevault`; (3) Unity 6.4 open + the Unity-MCP bridge connected (`mcpforunity://editor/state` → `ready_for_tools`).
|
||||
|
||||
<!-- END snapshot -->
|
||||
|
||||
## 2026-06-08 — World environment redo to Synty nature biomes ([[DR-025_World_Environment_Redo_Natural_Frontier]])
|
||||
|
||||
Long-form lessons from the off-world-natural-frontier world redo (Meadow_Forest base + Arid_Desert expedition as
|
||||
cosmetic classic-URP biomes in `Game.unity`; region-aware `WorldAtmosphereSystem` fog/ambient cross-fade).
|
||||
|
||||
- **Synty PNB_Core fog-ring / cloud-ring PREFABS are MESHES that render as a bright white torus band** at gameplay
|
||||
scale — they do NOT read as soft haze. Do not place them for atmosphere; the global `RenderSettings` fog
|
||||
(exp-squared, low density) gives the haze, and a `Skybox/Procedural` material gives the sky. (All 4 ring instances
|
||||
were deleted in review.)
|
||||
- **Two regions, one scene → use a `Skybox/Procedural` MATERIAL on `RenderSettings.skybox`, never a Synty skydome
|
||||
MESH.** All Synty biome "sky" materials use one `SkyDome.shadergraph` authored for a dome MESH centred at origin —
|
||||
a single dome can't cover the expedition at x=1000, and per-region domes double the cost. The procedural skybox is
|
||||
infinite and region-agnostic; per-biome mood comes from the cross-faded fog/ambient instead.
|
||||
- **Edit-mode screenshots show the BASE region's BAKED `RenderSettings` over the +1000 expedition**, because the
|
||||
runtime cross-fade (`WorldAtmosphereSystem`, a `ClientSimulation` presentation `SystemBase`) only runs in Play.
|
||||
The desert therefore looks washed/cool in an edit-mode capture. To preview a region's TRUE in-Play look without
|
||||
entering Play: temporarily bake that region's `RenderSettings` (fog colour/density + ambientSkyColor) via
|
||||
`execute_code`, screenshot, then revert. The desert read correctly the moment its warm-orange fog was baked.
|
||||
- **A cyan capsule at each region centre is a baked Gameplay-SUBSCENE entity** (rendered by Entities Graphics with
|
||||
the Aether material), NOT cosmetic dressing and NOT removable in an art pass. `Object.FindObjectsByType<MeshRenderer>`
|
||||
returns nothing for it — EG entities use `BatchRendererGroup`, not `MeshRenderer`. Confirms the cosmetic/gameplay
|
||||
split: an art pass touches only `Game.unity` GameObjects, never the subscene.
|
||||
- **`execute_code` safety-checks BLOCK `AssetDatabase.DeleteAsset`** (and `File.Delete`, `Process.Start`, etc.) — the
|
||||
whole snippet is rejected pre-execution (nothing runs, so no partial state). For idempotent asset clones, rely on
|
||||
`AssetDatabase.CopyAsset` over an absent destination (it no-ops/false on an existing one and you load that), or
|
||||
pass `safety_checks=false` deliberately.
|
||||
- **Shadow-cast hygiene for hundreds of cosmetic props:** nothing in the project set `ShadowCastingMode.Off`, so all
|
||||
~377 placed meshes + the 2 ground planes cast realtime soft directional shadows (4-cascade, soft-quality-3) — a
|
||||
large depth-pass bill for sub-pixel foliage shadows that read as noise top-down. Fix: walk the biome roots and set
|
||||
`Renderer.shadowCastingMode = Off` on small props (name heuristic + combined-AABB extent < ~1.6m) and the flat
|
||||
ground planes, keeping it ON for trees/cliffs/landmarks (254 off / 149 kept here). Forward+ clustered lighting
|
||||
makes 4 simultaneous additional point lights/region a non-issue (the per-object `AdditionalLightsPerObjectLimit`
|
||||
is ignored under `RenderingMode: 2`); non-static cosmetics + SRP Batcher is the right batching choice (no static
|
||||
combine, re-tint-friendly).
|
||||
- **Region-aware presentation cross-fade pattern:** a client-only `SystemBase` in `PresentationSystemGroup` that
|
||||
reads `Camera.main.transform.position.x` and lerps `RenderSettings` (fog/ambient) across the X>500 boundary
|
||||
(mirrors `HudSystem.ExpeditionRegionXMin`). No ECS query, observe-only, `"Game"`-scene guarded so the menu isn't
|
||||
restyled; knobs in a `WorldFeelConfig`-style MonoBehaviour with `SubsystemRegistration` static reset + null-safe
|
||||
fallbacks. Zero sim/netcode impact (writes only global managed `RenderSettings`; `ClientSimulation` filter keeps
|
||||
it off the server/headless world).
|
||||
|
||||
Reference in New Issue
Block a user