Breeze into Wind! [Fully Released]

Hi Creators!

[Release Update] October 31, 2023:

Today, we are excited to release the very first step in allowing your experiences to get windy!


With Wind, you can set a direction and strength in which wind will blow through your experience and you will notice that any grass, clouds, or particle effects you have in your experience react realistically to the wind.

We also have a nifty new Wind Widget to help you get the exact look you want! Please give these features a whirl and let us know if you have any issues/feedback. :wind_face::leaves:

You can find more details about Wind in the GlobalWind section of the creator documentation.

This is just the first step for wind. We are eagerly waiting to share how more systems in your experiences will be able to interact with Wind in the future. Stay tuned!


GlobalWind property

In your Workspace property pane, you will now be able to find the GlobalWind property, which is a Vector3 that sets the direction and magnitude of the wind.

This property can be directly set using the Explorer and Property windows by going to Workspace > Behavior > GlobalWind and modifying the value.

Wind Widget

To make it easier to tune the Wind to exactly the way you like it, we are introducing the new Wind widget. The Wind widget allows you to visualize how the wind is currently blowing using a wind sock and gives you a direct way of modifying the speed and direction of the wind.


You can toggle the widget by going to the View tab > Actions panel > Wind Direction.


Alternatively, you can also open the widget by clicking on the icon appearing next to the Workspace > GlobalWind property. It shows up when the property is selected for edits.


The widget will appear overlaid on your place viewport. The Widget can be moved around your viewport so you can place it wherever is convenient for you.

Speed Yaw Pitch

The Speed, Yaw, and Pitch of the wind can be varied by clicking the corresponding aspects’ name on the left and using the slider to set the desired value.
The Yaw can also be modified by clicking the green circle and rotating it left or right, while the Pitch can also be modified by moving the blue arrow up and down.


You can also directly input a precise value by clicking on the number displayed. This will turn it into an input field in which you can type your desired value.

Changes made using the Wind widget will reflect in the Workspace > GlobalWind property after the appropriate conversions into a Vector3. The opposite is also true, meaning that if you modify the values of the GlobalWind property directly or through a script, the Wind widget’s values and visualization will update in real time.


The GlobalWind property can also be set through a script, using something like this:

workspace.GlobalWind =, 0, 0)

(The above line will set the global wind to blow with a speed of 10 studs per second in the +x direction)

Scripting wind also opens up a whole range of possibilities. For example, you can use something like the code snippet below to cause cyclical gusts of wind for a more subtle visual effect:

Code snippet
local gustCycleDelay = 5 -- Max duration between gust cycles in seconds
local gustCycleDuration = 5 -- Duration of each gust cycle in seconds

-- During each gust cycle, a portion of "gust" will be added to "baseWind" in a ramped fashion
local baseWind =,0,-3) -- Vector3 representing base wind speed and direction
local gust =,5,-5) -- Vector3 representing gust speed and direction
local gustIntervals = 100 -- Number of iterations used to calculate each gust interval
local dg = gustCycleDuration/gustIntervals
local dgf = dg/gustCycleDuration

workspace.GlobalWind = baseWind -- Set globalWind to baseWind initially
wait(gustCycleDelay) -- Wait delay amount before starting gusts

while true do
    for i=1,gustIntervals do
        local f = math.sin(math.pi * dgf * i) -- Use sin function to ramp gust
        workspace.GlobalWind = baseWind + f*gust -- Set GlobalWind to baseWind + gust

    workspace.GlobalWind = baseWind -- Reset wind to base wind at end of gust cycle
    wait(math.random()*gustCycleDelay) -- Wait a random fraction of delay before next gust cycle

Particle effects


ParticleEmitters with Drag > 0 will follow wind if you enable the WindAffectsDrag property. Fire and Smoke instances follow wind by default.


Adding grass, clouds, and particles to your experience

You can follow the steps outlined in these guides to add grass, clouds and particles to your experience:

Made with loveđź’š

Wind was made possible by @iiostream, @ProfessorKJM, @Homeomorph, @kckhem, @PotionSeller33, @IgnisRBX, @MetaverseAstronaut, @PixelMiner47, @DodgerJavi, @MetaVars, @FGmm_r2. Thanks for your contributions! :raised_hands:

Please let us know about your experience with Wind and if you encounter any issues!

Thank you.


This topic was automatically opened after 10 minutes.

How wonderful! I would love to try making GlobalWind on ParticleEmitters, Clouds and Terrain Grass!


Great innovations—a step in the right direction! Now, when are we getting those cloth physics?


Super big win for Roblox Devs!! :raised_hands: :raised_hands:


Honestly been wanting this for ages but didn’t know how hard it would be for you guys to make it a reality. Really useful and will make realism easier to recreate


Wonderful addition…

Too bad smooth terrain on large scales is nearly impossible to use. As much as I’d love to experiment with this, I can’t due to the nature of how poorly optimized voxel/smooth terrain is.


This is clearly a step in the right direction to enhance the realism inside of our games. Will custom grass texturing and/or possibly systems be delivered to the engine? I know myself and many other people have been requesting this.


I am very excited to use this feature!! This is one of the few features some of us really wanted and it is finally here in Beta! I will definitely mess around with this new feature and get used to it! :smile:


That is fantastic! I am going to try this as soon as possible. :+1:

But I wonder if this will not lag so much our games? :thinking:


This is awesome!

I would love to see this implemented in some kind of local volumetric system as well.


Super awesome, especially the interaction with particles. I was manually doing this before with a hard-set velocity/acceleration.

Very curious to know what else wind is going to interact with. I want to integrate it into my game so that windshake is driven automatically by this property but I want to be sure it won’t affect anything unexpected in the future.


Awesome to see! Is it applying forces on parts as well? or only the grass?


Awesome to see wind getting into Roblox! Ropes and tree leaves, and eventually rain would be a great next step!

Also, unrelated to this feature, but it would be nice if characters could also interact with grass, so it’s more interactive:


Are there plans to expand this into an API or something? Would love to be able to have parts be affected by this as well.


I ran into a small problem with editing the GlobalWind property in the explorer. It doesn’t work unless I edit the individual axis:



ooooooh! i love this so much! it will add such a nice in-depth experience with different weather types :smile:


Will there ever be any plans to separate grass from terrain? I’d love to use grass with regular meshes without having to hide some terrain underneath the map. Terrain is very limiting with its voxels and having a way to use grass separate from it would be great.

Perhaps a Grass instance that could be parented to parts similar to other particle instances?


Great update! I hope in the future we can get a way for parts and other custom objects to react to the wind though.

(Also, that example experience looks very beautiful, is there a way for me to get the place file plz?)


This is amazing as this would make games become more realistic but, would it cause lag?