Production context
GDD/01-Gameplay/11-Wetness-and-Rain.mdVerified implementation evidence
- Owner-reported pass 2026-09-10: local HUD lens droplets and shelter via
UI_G3SetRainon 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 noWetAmountparameter. 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:
- Server weather is raining (intensity above a [TBD] threshold).
- The pawn is outdoors — no valid overhead shelter.
- 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
WetAmountin 0–1 per wet object (one value for the whole item/mesh, including multi-slot materials), same ownership pattern asBloodAmount. - 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.
WetAmountandBloodAmountcan both be > 0. Materials must compose them without one overwriting the other.
What gets wet — [CONFIRMED]
While rain-exposed:
- Hair and skin (not eyes) —
WetAmounton 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-AGRICULTUREfirst 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). ThereforeWetAmount=0is 100% of dry weight andWetAmount=1is 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
WetAmountis instance state: world drops of a soaked worn/held item show wet if that item carried the scalar. - Character body/hair
WetAmountpersists 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.
| Area | Recommended starting point | Reason / alternative |
|---|---|---|
| Weather authority | Server-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. |
| Shelter | Trace 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 exposure | Intensity > 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. |
| Drying | Keep 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. |
| Swimming | Confirmed: 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 /
WetAmountbeyond the confirmed start-on-exposure and 5-second fade. G3 local droplets exist viaUI_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.