As a developer who loves graphics and aesthetic, clouds are one my favorite parts in environments and I would love to see the terrain clouds get some love. Clouds literally fill the entire sky, so I feel like they need to be able to compliment the rest of the environment. I have some ideas that could implemented to achieve this.
Current Problem
The clouds in studio (as of writing this) look fine, but ‘fine’ isn’t necessarily good enough. I tweaked the lighting and atmosphere to try and make as realistic as possible while maintaining the look of the world.
The problems I can see right off the bat is how oddly wispy the outlines of some of the clouds are. While there are such things as wispy clouds, they aren’t usually within dense clouds that much. The second issue is how blurry it is, which I know is probably an optimization relic so I’m not too worried about it. Thirdly, it lacks variety in cloud types. Finally, not related to the image, but if the clouds ever change form mid-game, the developer shouldn’t have to tinker every setting while coding to achieve the effect.
Solutions
Cloud Styles
Cloud styles solve the lack of cloud variety by allowing for custom allowance of types of clouds whether it be puffy, flat, wispy, etc.
Custom Presets
Custom presets allow for the developer to save cloud settings and call them later in during an event with a function or property like :LoadClouds(presetName) or Terrain.Clouds.Preset
Let me know any flaws or additional ideas you may have.
They made almost everything years ago and coast on it, leaving the terrain and clouds looking super outdated. The water is another thing im disappointed with.
Being able to spawn certain types of clouds for, as an example, weather events for a game.
This could work like
local clouds = workspace.Terrain:FindFirstChildOfClass("Clouds")
clouds:SpawnCloud(Enum.CloudType.Nimbostratus)
-- even more interesting if you could Set and Get it's position like this:
local cloud = clouds:SpawnCloud(Enum.CloudType.Cumulus, Vector2.new(32,64)) -- I want to say Vector2 as the height should be predefined
-- now we could get its position like this
cloud:GetPosition() -- returns a Vector2/Vector3?
-- and lets say we want to scale it too
cloud:SetScale(Vector2.new(256,192)) -- and obviously this could be used in the Get too, and should be able to be set when its added
local cloud2 = clouds:SpawnCloud(Enum.CloudType.Stratus, Vector2.new(32,64), Vector2.new(384,384)) -- type, position, scale
quote me if anything here isn’t perfect, I’m not a cloud expert, but I feel like this would be a good addition to the original post. Also, they should be able to randomly spawn and also should be able to be tracked depending on each cloud spawned.
Even better if this could be done by instances inside of the original Cloud instance, or even just by doing
local clouds = workspace.Terrain:FindFirstChildOfClass("Clouds")
clouds:GetActiveClouds()