Update 192 introduces a screen-space GPU rain weather effect to Shogun Exodus, providing optimized precipitation rendering without per-particle CPU overhead. The reusable particle system features Light Rain, Normal Rain, and Heavy Rain presets, each tuned with distinct particle densities, alpha visibility, and drop widths. The effect hooks directly into the wind system, dynamically adjusting diagonal fall angles based on current wind speeds while automatically managing viewport overscan to maintain consistent screen-budgeted performance across camera zoom levels.
Precipitation changes now feature standardized 30-minute in-game transitions, smoothly interpolating density, alpha, and width while scaling accurately with game speed and soft pauses. Particle allocations adaptively scale during intensity changes to prevent unnecessary resource consumption. In addition, the Alpha-stage precipitation planner cadence has been rebalanced across wet, normal, and dry states, supported by refreshed documentation for weather architecture and modding contracts.
Raw Patch Notes
UPDATE 2026-08-23 #192 - Rain GPU Weather Effect - Added one reusable `rain_sheet` Weather Effect: a single additive, untextured GPUParticles2D reproducing the selected tutorial setup at exactly 1000 particles, including box emission, 3000px/s² gravity, velocity-aligned Y streak scaling, initial-alpha ramp, lifetime alpha curve, one-second lifetime, and 0.5-second preprocess. No custom texture/shader, trails, turbulence, collision, subemitters, controller, timer, or per-particle CPU work was added. - Rain is screen-space and screen-budgeted. The emitter follows the rendered camera center with inverse zoom and local particle coordinates, derives emission/culling geometry from the viewport only when camera/zoom/viewport changes, and never increases amount for the larger world area visible at extreme zoom. GPUParticles2D.speed_scale follows TimeSystem's soft pause and x1/x2/x4 signals; opacity fades fulfill the existing binder lifecycle and report renderer CPU work under `weather_fx`. - Registered `rain_sheet` in its own mod-mergeable `rain_effects.json` on the `foreground` host. All three Rain states are available to automatic planning and the existing Dev Tools Spawn/Force paths, and the generic effect test scene defaults to Rain on `foreground`. - Corrected stale darkness documentation: `behind_mountains` is darkened directly by WorldTerrainBackground; only `overall_background` remains non-darkened. Added current Rain architecture/modding documentation and one player-facing Rain loading hint. - Tuned the visually approved normal Rain technique without changing its speed or architecture: density increased 50% from 1000 to 1500 particles, the lifetime alpha plateau increased 25% from 0.30 to 0.375, and a constant 1.1x X curve now makes the untextured drops slightly thicker without altering their existing Y-stretch curve. - Gravity, lifetime, preprocess, fall speed, camera behavior, screen-based budget, host, fade lifecycle, and TimeSystem integration remain unchanged. The previous 1000-particle, 0.30-alpha, un-widened setup became the starting reference for Light Rain. - Added `light_rain` and `heavy_rain` as data presets of the existing single `rain_sheet` scene/effect, not separate renderers or systems. Light uses density 700, lifetime-alpha plateau 0.25, and the original 1.0x drop width; Heavy uses density 2500, alpha 0.4, and 1.375x width (25% thicker than normal Rain's current 1.1x). Normal remains 1500/0.375/1.1x. - RainSheet now consumes max-oriented `alpha_strength` and `drop_width_multiplier` parameters alongside density/overall opacity. Only the mutable X-width and alpha curves are duplicated per runtime instance; the Y-stretch and other authored particle resources stay shared. All three presets retain identical gravity, lifetime, preprocess, speed, additive blend, camera behavior, time scaling, and one-layer GPU architecture. - Enabled the existing Light Rain and Heavy Rain precipitation states and attached their matching presets. The existing data-driven Dev Tools Weather menu now exposes None, Light Rain, Rain, and Heavy Rain automatically; no Rain-specific menu/controller code was added. - Connected the existing `rain_sheet` effect to `wind/speed_kmh` through the generic registry `weather_inputs` contract. RainSheet receives only plain cached response endpoints/timestamps and interpolates them in game time; it never queries WeatherSystem. The shared max-oriented `horizontal_push_at_reference` passthrough defaults to 300, producing `gravity.x = -300 * wind_response` while preserving vertical gravity 3000. Existing Align Y to Velocity rotates all three Rain presets with their diagonal motion. - Added event-derived right-side emission overscan equal to the greatest current/target horizontal displacement over the one-second particle lifetime. Overscan recalculates on Wind descriptor, reference-push, or camera/viewport changes and expands culling bounds accordingly. Light/normal/Heavy remain fixed at 700/1500/2500 particles, so strong Wind never raises GPU allocation to compensate for the wider emitter. - Wind transitions reuse RainSheet's existing renderer process and TimeSystem game-hour clock, freezing on soft pause and scaling with game speed. Gravity is written only when the interpolated response changes; stable Wind adds no material churn. No Rain controller, timer, tick, turbulence, random direction, density/alpha/width coupling, or per-particle CPU logic was added. Updated the player Wind loading hint to include Rain. - Standardized Light/normal/Heavy Rain destination fades at 0.5 game hours, making every Rain-to-Rain intensity change take 30 in-game minutes instead of visually snapping even though the same effect instance remained active. RainSheet now fades density, lifetime-alpha strength, and X width together through the existing destination fade spec; it still has no state identity or hardcoded transition duration. - Density uses `GPUParticles2D.amount_ratio` only as a transition bridge. Growing Rain allocates the destination amount once and begins at the equivalent current ratio; weakening Rain lowers the ratio against the current allocation, then commits the true smaller `amount` at fade completion. Light Rain therefore returns to a stable 700-particle allocation rather than retaining Heavy Rain's 2500-particle cost. The existing 0.5-second preprocess covers the infrequent amount restart boundary. - Fresh None->Rain instances snap their preset look while fully transparent and keep the established opacity fade. Blank-fade Force/load paths snap and commit immediately. Alpha/width curve and amount-ratio writes are gated to actual look transitions, so opacity-only appearance/removal fades add no unnecessary resource churn. Game-hour transitions freeze on soft pause and scale with x1/x2/x4. - Rebalanced the precipitation planner's initial Alpha-stage cadence. Effective Wet/Normal/Dry weights are now None 0.70/1.50/3.60, Light Rain 1.40/0.75/0.55, Rain 2.40/0.65/0.20, and Heavy Rain 1.50/0.30/0.08; their uniformly rolled minimum dwells are respectively 6-16, 4-12, 4-14, and 3-11 game hours. These effective values are encoded through each state's base weight and rainfall-characteristic multiplier, preserving the generic mod-facing weight contract. - Clarified the Rain tuning contract beside the data and Inspector exports: density controls drop count, alpha strength controls lifetime visibility, width changes X thickness only, opacity fades the entire sheet, and reference Wind push controls diagonal slant. The Weather architecture and mod guide now also distinguish effective precipitation weights from their stored base/multiplier representation and minimum dwell from actual joint-cluster hold time. - Files: `Scenes/Enviroment/Weather_Systems/RainSheet.tscn`, `Scripts/Weather_Systems/RainSheet.gd`, `Scripts/Weather_Systems/WeatherEffectBase.gd`, `Data/Weather_Systems/Effects/rain_effects.json`, `Data/Weather_Systems/conditions.json`, `Data/LoadingScreenText.json`, `Scenes/TestScenesDev/WeatherEffectTestScene.tscn`, `DeveloperFiles/Weather_System_Explainer.txt`, `DeveloperFiles/World_Background_Explainer.txt`, `DeveloperFiles/current-game-setup.txt`, `DeveloperFiles/mod-guide.txt`, `DeveloperFiles/briefs/rain-effect-baseline-brief.md`, `DeveloperFiles/update-log.txt`. - Updates 187-191 were consolidated into update 192.
*This is an automated post, using Python and LLMs to summarize game updates. Mistakes, while rare, may happen.

Leave a Reply