feat(assets): import biome ground art into the pack (#137) #155
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
marco/IsoMmo!155
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/biomes-art"
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?
Imports the authored biome ground art into the committed pack, so the biomes already defined in
content/tiledata.txtrender real land tiles instead of the placeholder tint. Addresses #137 (groundportion — see "remaining" below). Design #135.
What this does
art/land/<landArt>_0..3.pngfor the 8 biomes whosetiledatarows currently fall back to atint: dry_grassland, northern_grassland, tundra, desert_sand, salt_plain, harsh_mountain_rock,
rocky_ground, volcanic_ground (32 tiles).
E:\Asset(
<biome>_1..4.png) by downscaling and applyinggrass_0's alpha mask — so they tessellateidentically to the existing grass/marsh ground (no square-edge artefacts).
client/IsoMmo.Client/assets/assets.isoawith the extractor'sown-artcommand(no UO client needed — it overlays own-art onto the existing pack). Pack stays ~12.4 MB.
Verification
81, Assets 4, Extractor 17, Auth 18, MapEditor.Core 14).
tundra, rocky/mountain, dry savanna now render textured land art, not flat tint; tiles
tessellate cleanly (diamond mask). Screenshots taken.
Remaining (not in this PR)
PNGs in
E:\Assetare RGB with no alpha, and props need a transparent cut-out (project forbidscolour-key). They feed the scatter (#140) and statics, not the ground, so ground art ships now and
props follow once re-exported as RGBA. #137 stays open for that part.
Definition of Done (ground art)
land/<biome>_0..3for all 8 biomes; grass/marsh unchanged.221aba300a3c242d8fa9Correction after in-client review: the first pass downscaled each 1254² source to 44×44, which averaged away all texture (tile stddev ~4 vs grass ~50) — biomes rendered as flat colour, indistinguishable from the placeholder tint. Fixed by regenerating tiles from a native-resolution 128×128 centre crop (keeps the source grain) with the diamond alpha mask. In-client the biome grounds now show real texture (measured screenshot stddev: desert ~46, salt ~40 vs ~6 before). Naming/loader unchanged (
land/<landArt>_0, as grass).3c242d8fa9cea082be0cAdded 4-variant-per-cell ground rendering (commit
46a8633), on top of the authored art:the loader now loads all
land/<landArt>_0..3as aTexture2D[]per biome and the renderer picksa variant per cell (deterministic hash + horizontal flip, re-added
GroundTileSelectorinClient.Core, unit-tested). This reverses the#143"one tile per biome / no procedural variety"simplification — per the owner: terrain art is always ≥4 variants, never a single tile (also
recorded in
docs/asset-authoring.md). In-client the ground now reads as varied natural terrain,not a repeating grid. Also folded in the authored grass + marsh grounds (from
grassland_*/wet_marsh_ground_*), so no biome uses UO-derived land art anymore.Whole solution builds 0 warnings; all tests green (Client.Core +GroundTileSelectorTests).
Also restructured the world map into climate-coherent biome zones (commit
4eb3821): a128×96 map generated by a provisional climate model (temperature by latitude + noise moisture/
elevation, Whittaker-style) — tundra/mountains in the cold north, a grassland heartland (spawn) with
a marsh valley, desert/savanna in the hot south, a small volcanic caldera at the mountain peak,
salt flats in a corner. Organic region boundaries (hard biome edges remain — transition tiles are
a deliberate follow-up). The generator (
scripts/genmap.py, numpy+scipy, fixed seed) is athrowaway authoring aid — a pure-binary map format is planned to replace the text map. It carves
the PvP arena (#109) footprint to rocky_ground so those authored statics keep their floor.
Verified in-client (fresh spawn, walked spawn→mountains→south). All tests green.
NB: this PR now bundles #137 art + 4-variant rendering + the world map (biome content as a whole).
#138 — terrain move-cost + marsh feedback
This branch now also carries #138 (terrain move-cost — marsh slows players & creatures, flying-exempt) and its client feedback (a per-step ground ripple + a one-time hint). Server side is enforced in
MovementSystem/CreatureSystemviaTileMap.MoveCostTicks; the feedback is pure client presentation (no wire event;ProtocolVersion11→12 only for the newSystemMessageId.MarshSlowsYou).Screenshots from the debug harness (fresh DB, driven over the DebugHarness socket:
login→goto 64 46on grass →move northonto marsh at(64,45), capturing the burst as the tile flipped):Stepping onto marsh — ground ripple + one-time hint. The self player wades from the grass clearing onto marsh (HUD reads
tile (64, 45)); a ripple plays at the feet and the journal shows the one-time notice “The marsh drags at your feet, slowing your step.”Ripple close-up — the authored splash sits flat on the ground (iso 2:1), scaling up and fading over ~0.55s from a single frame.
Baseline — on grass, no ripple.