Feature Specification

Wetness and Rain

When it rains, exposed characters and worn/held surfaces get wet. Wetness is a real, replicated visual (and optional survival) state — not only a sky/particle effect.

Status: draftOwner: UnassignedUpdated: 2026-09-14

Production context

Deprecated source referenceGDD/01-Gameplay/11-Wetness-and-Rain.md
Decision markers12 confirmed · 6 recommendations · 15 TBD
Browser document roleThis standalone HTML file is authoritative; edit this file directly through the project workflow.

Verified implementation evidence

  • Owner-reported pass 2026-09-10: local HUD lens droplets and shelter via UI_G3SetRain on dedicated-server PIE. Rain VFX remains unauthored and is out of G3. Material wet-look mapping (UI-HUD-017) is deferred: current L1810/magazine/MetaHuman materials have no WetAmount parameter. Do not invent roughness/albedo/drip numbers.

Relationships

Document contract coverage

Use these required Feature Specification areas during review. The HTML content below is authoritative; items not stated explicitly remain unresolved.

  • ReviewPurpose & Player Value
  • ReviewScope
  • ReviewOut of Scope
  • ReviewTerminology
  • ReviewFunctional Behavior
  • ReviewStates & Flows
  • ReviewRules & Edge Cases
  • ReviewDependencies
  • ReviewAcceptance Criteria
  • ReviewOpen Questions

Authoritative project content

When it rains, exposed characters and worn/held surfaces get wet. Wetness is a real, replicated visual (and optional survival) state — not only a sky/particle effect.

Related: 04-Survival-System.md, 10-Blood-Visual.md, 06-Inventory-and-Items.md, 08-Character-Creation.md, 02-Player-Character.md, ../02-World/01-World-Design.md, ../03-Enemies/01-Zombie-Design.md, ../06-Art-Audio/01-Art-Direction-and-MetaHuman.md.

Blood is a separate scalar. Being wet does not replace BloodAmount. Rain exposure does reduce blood over time[CONFIRMED]; the exact wash rate remains in Blood Visual.

Layers — [CONFIRMED]

Layer What it is Persistence
World rain Server weather: rain on / rain off (and intensity). Particles, wet ground, audio. Session weather state; exact cycle [TBD]
Mesh wetness WetAmount 0–1 on a Dynamic Material Instance (MID) Character and (where specified) item/instance state
Local HUD Optional wet-lens / droplets on the local player's screen Fades; not shown to other players. Existence [RECOMMENDATION]; tuning [TBD]

Day/night lighting stays cosmetic for survival decay (no temperature-from-clock in v1). Rain is the gameplay-visible weather exception: it applies wetness. Fog, snow, and other weather types do not apply wetness unless a later decision says so.

Rain does not change zombie AI, loot tables, or spawn density in v1.

Exposure — [CONFIRMED] rules, numbers [TBD]

A pawn is rain-exposed when all of the following are true:

  1. Server weather is raining (intensity above a [TBD] threshold).
  2. The pawn is outdoors — no valid overhead shelter.
  3. The pawn is not in a [TBD] exception (e.g. fully enclosed vehicle — treat as shelter [RECOMMENDATION] once vehicles exist).

Shelter (blocks rain):

  • Player-built pieces that form a roof / ceiling over the pawn (same building system as 05-Building-System.md).
  • Authored interiors / overhangs that the world marks as covered (trace or volume — [TBD] technical).

Does not block rain by itself:

  • Trees / foliage [RECOMMENDATION] do not count as roof in v1 (readability; avoid cheap full-cover camping in woods). Confirm if art wants light drip under canopy later.
  • Open doorways with no ceiling.

While rain-exposed, WetAmount increases toward a ceiling (treat cap as 1.0 unless decided otherwise). Rate vs rain intensity is [TBD] — do not invent a curve in this doc.

While not rain-exposed, WetAmount dries from fully wet to 0 in 10 real-time minutes[CONFIRMED]. Heat-source acceleration and wind modifiers remain [TBD].

Mesh wetness — material contract — [CONFIRMED]

  • Approach: parameter on the existing material, not a required Material Layer Blend stack.
  • Control: a single scalar WetAmount in 0–1 per wet object (one value for the whole item/mesh, including multi-slot materials), same ownership pattern as BloodAmount.
  • Look: darker / higher gloss / wet sheen. The scalar parameter is WetAmount; roughness/albedo mapping and drip VFX remain [TBD] (technical art).
  • If a mesh has no wetness path, it shows no wet look. Missing path is not a ship blocker for that asset; new player clothing, body/hair, and held items in this pipeline are expected to expose it.
  • WetAmount and BloodAmount can both be > 0. Materials must compose them without one overwriting the other.

What gets wet — [CONFIRMED]

While rain-exposed:

  • Hair and skin (not eyes) — WetAmount on the character/pawn, not on appearance cosmetics. Changing clothes does not clear body/hair wetness. See 08-Character-Creation.md.
  • Outer worn clothing — which slot is “outer” is [TBD] until clothing layers are designed (same open question as blood).
  • Held / equipped weapons and tools (visible in hands).

Does not get wet from rain in v1:

  • Items in inventory that are not worn or held (backpack contents stay dry).
  • World loot bags and containers [RECOMMENDATION] stay dry (avoid persist/replication cost). Revisit if designers want soaked ground loot.
  • Eyes — no mesh wetness on the eye; optional local HUD droplets instead.

Zombies, bosses, and animals use the same pawn WetAmount contract when rain-exposed (visual only in v1). Whether AI wetness is saved across restart is [TBD] (same class of question as AI blood). [CONFIRMED 2026-09-14] P07 does not persist AI wetness. Character body/hair wetness and world rain intensity are persisted.

Dual state: item vs character — [CONFIRMED]

Surface Where WetAmount lives Unequip / swap
Worn clothing, gloves, shoes, held weapon/tool Item instance Stays on that item (drop, loot, inspect, re-equip)
Hair, skin (not eyes) Character Stays on the character when outfits change

Both can be wet at once (wet shirt item + wet skin/hair on the pawn).

Water that is not rain — [TBD]

Swimming, wading, and standing under a faucet are not specified here. Do not treat them as rain. If they should share WetAmount, that is a later decision.

Gameplay — [RECOMMENDATION] temperature, rest [TBD]

  • [RECOMMENDATION] wetness feeds temperature (wet + cold exposure is harsher; drying near fire is safer). Survival already names wet/cold; this is the rain hook. Exact modifiers are [TBD] and live in data. See 04-Survival-System.md.
  • [CONFIRMED] rain/wetness does not change zombie senses, loot, or stamina by itself in v1. FEAT-AGRICULTURE first increment uses the same rain-exposed test to water plants; that is crop watering, not a loot or AI change.
  • There is no waterproof clothing or rain-gear mitigation in the current design — [CONFIRMED].
  • Wet equipment weight — [CONFIRMED]: each wet worn item uses EffectiveWeight = DryWeight × (1 + 2 × WetAmount). Therefore WetAmount=0 is 100% of dry weight and WetAmount=1 is 300% total weight (an additional 200%), with linear scaling between them.
  • Wet weapons: no jam/spread from wetness in v1 (dirt/cleaning is already cut). Durability unchanged by rain.

Networking, inspect, save — [CONFIRMED]

  • Other players must see mesh wetness (worn clothes, held gear, hair/skin, zombies when relevant).
  • Item WetAmount is instance state: world drops of a soaked worn/held item show wet if that item carried the scalar.
  • Character body/hair WetAmount persists in the player save (log off wet → log in wet). World rain intensity also persists so a wet character does not reload under a clear sky — [CONFIRMED 2026-09-14].
  • Weather (is it raining) is server-authoritative and replicated for VFX/audio; clients do not decide exposure.
  • HUD droplets are local-only and are not replicated.

Pipeline ownership — [CONFIRMED]

  • Spec first; material wetness parameters follow the contract above.
  • Game-wide for player characters and future clothed/held content; unhooked meshes simply look dry.

G3 weather / shelter decision — 2026-09-09

CONFIRMED — owner approved the recommended settings. Implementation and PIE validation remain in progress; confirmed drying and lens timings remain unchanged.

AreaRecommended starting pointReason / alternative
Weather authorityServer-owned weather component on GameState; replicate rain intensity 0–1 and transition timing. Clients render rain/audio/lens effects. Initially use server commands or authored sequences; random cycle remains undecided.Joining clients receive current weather. A future visual weather package can consume this state without becoming gameplay authority.
ShelterTrace above the pawn against explicitly rain-blocking roofs/ceilings; supplement with shelter volumes for caves and exceptional interiors. Foliage and ordinary props do not shelter unless explicitly classified.Trace follows constructed/destroyed roofs; volumes cover complex authored geometry. Pure volumes need more manual coverage authoring.
Rain exposureIntensity > 0 starts lens wetness when unsheltered. Approved mesh wetting rate: intensity / 120 per real-time second; clamp WetAmount to 0–1.Full rain wets a dry object in 2 minutes; half rain in 4 minutes. These threshold/rate values are approved prototype tuning.
DryingKeep confirmed full wet to dry in 10 real-time minutes without an active water source. Heat/wind bonuses remain undecided.Body/item drying is separate from the confirmed 5-second lens fade.
SwimmingConfirmed: submerged body, worn items and held items reach WetAmount=1; unexposed backpack contents remain unchanged. Fade the lens only after both rain and swim exposure end.Mesh wetting and lens behavior are confirmed. Track simultaneous exposure sources separately.

Separate decisions remain: weather schedule, clothing outer layers, blood washing rate, heat/wind modifiers and AI persistence. They are not implicitly approved with this proposal.

G3 source, 2026-09-09: held items and occupied clothing slots use the approved rain/swim/dry rates; swimming still sets worn/back-weapon instance WetAmount to 1; backpack contents stay dry. Owner confirmed rain should wet every occupied clothing slot until outer layers exist. Development exec UI_G3SetRain sets server intensity. MCP placed RainShelter_G3Test and a tagged cube roof in L_Dev_Sandbox. Map save verified 2026-09-10: those actors are in the saved map. Owner-reported pass 2026-09-10: HUD lens droplets plus shelter via UI_G3SetRain. Owner decided G3 rain presentation stays HUD droplets + UI_G3SetRain; rain VFX is out of G3. Material wet-look mapping moves to G3.2 and remains TBD until authored.

Engine reference: Epic: Game Mode and Game State. Numeric tuning above is owner-approved project tuning, not Epic guidance.

Open questions still [TBD]

Do not implement as if decided:

  • Heat-source/wind modifiers; rain exposure, wetting and base drying follow the confirmed decision above.
  • Shelter coverage authoring and validation of the confirmed trace-plus-volume approach.
  • Clothing outer-layer resolution.
  • Wet-look mapping (roughness, albedo, normals, drips); the scalar name is confirmed as WetAmount. Owner assigned this mapping to G3.2; do not invent values.
  • HUD droplet intensity vs rain intensity / WetAmount beyond the confirmed start-on-exposure and 5-second fade. G3 local droplets exist via UI_G3SetRain; owner reported that path on 2026-09-10.
  • Vehicles as full shelter.
  • Exact rain wash rate for BloodAmount.
  • Faucet wetness; swimming follows the confirmed decision above.
  • Any future reconsideration of waterproof gear; none exists in the current design.
  • AI wetness persistence. P07 does not persist it.
  • World surface wetness (puddles, wet roads) beyond “rain VFX exists.”
  • Temperature modifier numbers if the survival hook is approved.

Local lens droplets — [CONFIRMED]

FEAT-HUD-UI owns presentation. Droplets begin immediately when rain reaches the player, also occur while swimming and when emerging from water, and fade completely within 5 seconds after exposure ends. This effect cannot be reduced or disabled in Settings.