OpenRain β Dynamic Local Rain System for Roblox
Scripted by CodeSaviour | Discord: Paulitowashere
Introduction
OpenRain is a lightweight and fully customizable local rain system built for Roblox developers who want to add immersive and dynamic weather effects to their games. This module simulates rainfall, alters lighting and atmosphere, and even checks for overhead cover to realistically toggle visual effects.
Built with performance in mind, OpenRain handles cloud density, lighting dimming, fog and haze adjustments, and particle rain renderingβall locally per player.
Features
Local rain per player (great for story-driven or atmospheric experiences)
Smooth cloud and lighting transitions
Atmosphere adjustment via TweenService
Particle-based rain and floor splash effects
Roof detection system (optional)
Custom intensity, render area, and color
Setup
- Insert the module into
ReplicatedStorage
or your preferred location. - Require the module from a LocalScript.
- Call
OpenRain.new(data)
with your settings.
local OpenRain = require(game.ReplicatedStorage.OpenRain)
local rain = OpenRain.new({
StartDelay = 5,
RainColor = Color3.fromRGB(50, 50, 50),
CheckForRoof = true,
Intensity = 5,
UntilFullRain = 3,
RenderArea = 100
})
API Reference
OpenRain.new(data: RainData) β OpenRain
Creates a new rain instance.
RainData Fields:
StartDelay
: Time in seconds before rain visual transition begins (default:10
)RainColor
:Color3
value used for lighting, clouds, and atmosphere (default:Color3.fromRGB(33,33,33)
)CheckForRoof
: Whether to disable rain if the player is under a roof (default:true
)Intensity
: Controls particle rate multiplier (default:3
)UntilFullRain
: Time it takes to ramp up particle emission (default:10
)RenderArea
: Size of the rain area (default:86
)
OpenRain:Start()
Manually start the rain after initialization.
OpenRain:Stop()
Stops the rain and smoothly resets the environment to its original state.
OpenRain:update(newData: RainData)
Updates rain configuration in real time.
Assets Required
This module expects two child objects inside the script:
Rain
: APart
with aParticleEmitter
simulating falling rain.Floor effect
: APart
with aParticleEmitter
simulating floor splashes.
Make sure these are properly set up in the script before use.
Notes
- The module uses
RunService:BindToRenderStep
for frame-accurate updates. Raycast
is used to detect ground and roof presence.- Works best in games with R15 avatars and characters that have
PrimaryPart
set.
Feedback
If you find a bug, have suggestions, or want to contribute improvements, feel free to reach out via Discord: Paulitowashere
.