feat(client): animated terrain fluids + viewport-windowed ground blend on a 3x world (#222) #223
No reviewers
Labels
No labels
alpha:wave-0
alpha:wave-1
alpha:wave-2
alpha:wave-3
area:assets
area:combat
area:ecology
area:infra
area:render
area:scripting
area:ui
area:world
enhancement
epic
migration
post-alpha
roadmap
tech-debt
type:bug
type:chore
type:design
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
marco/IsoMmo!223
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/terrain-animation"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Two goals: make the terrain feel alive, and let the world be much bigger without the client paying for it.
content/terrain_anim.txt(cyclic surfaces ping-pong0-1-2-3-2-1; rivers loop one-way, the direction is the biome). The blend isn't re-run per frame — only the biome's atlas-cell pixels swap, so the shoreline blend animates for free. Frames are colour-matched to a common mean (genland --match) so a loop ripples instead of pulsing in brightness.Computeis local: a cell ≥EdgeMargininside the window gets the exact same weights as the whole-map field.docs/architecture.mdgains a "Client ground blend" section (the durable model).scripts/genscatter.py(prop re-scatter) is now tracked inscripts/.No wire-contract change — the animation and blend are purely client-side display, so
ProtocolVersionis untouched.Screenshots / recording
Captured by piloting the Debug client via the harness (
docs/debug-harness.md) on the fresh 3× world. Each is a settled frame (/tpthen wait ~6s — the visual position slides to the target, so an immediate capture shows the slide path, not the destination):(PNGs captured via the harness and shared with the author.)
How it was tested
TerrainBlendFieldTests—Window_interior_weights_match_the_whole_map_fieldpins the locality property the whole viewport-windowing rests on (a cell ≥16 inside a window == the whole-map field);TerrainAnimationTestscovers the frame-index maths (loop vs ping-pong).dotnet test: all green (Client.Core 165, GameServer 271, Shared 107, …).Checklist
just lintpasses (CSharpier + analyzers, zero warnings)just testis green.xnb, not compiled at build)Screenshots (harness, settled frames)
Coast — desert→beach→coast→animated ocean (tp 114 1571)
River — one-way teal flow between redwood floor and grass (tp 680 1320)
Lake — arctic lake in tundra, open prop-free area (tp 1858 339)
Pink sand — 4-biome blend: ocean→pink sand→desert→salt-plain (tp 177 1611)
Redwood forest — titanic trunks around the central glade (spawn 327 1172)
b508e2a15702e52516e6