The Sky is Not a Ceiling: Adding Real Clouds to Your Island
The Sky is Not a Ceiling: Adding Real Clouds to Your Island
Imagine you’ve built the most insane battle royale map in Fortnite history. You’ve got trap-laden bunkers, a loot goblin that steals your shield potions, and a storm that moves faster than a player’s panic. But when you hit play, the sky is just… flat. It looks like a texture pasted on a bowl.
It’s time to upgrade from "flat sky" to "actual weather."
In this tutorial, we’re going to add Volumetric Clouds to your island. These aren’t just static pictures; they are 3D clouds that react to light, have depth, and actually look like clouds. We’ll also hook them up to Verse so you can change the weather based on gameplay (like making it stormy when the boss spawns).
What You'll Learn
- What Volumetric Clouds are and why they’re better than a skybox.
- How to add the component in UEFN (Unreal Editor for Fortnite).
- The Scene Graph basics: Where the cloud lives in your island’s hierarchy.
- A Verse script to dynamically change cloud density (making it foggy or clear) based on a game event.
How It Works
The Skybox vs. Volumetric Clouds
Think of a Skybox like a video game screen saver. It’s a 2D image wrapped around your world. It looks nice, but if you look closely, it has no depth. It’s like looking at a poster of a mountain range.
Volumetric Clouds are different. They are 3D volumes of "stuff" (clouds) floating in the air. Because they are 3D, they:
- Cast shadows on the ground.
- Block light from the sun (creating dramatic god-rays).
- Have thickness—you can fly through them.
The Scene Graph: Where Do Clouds Live?
In Unreal Engine (and UEFN), everything is part of a Scene Graph. Think of the Scene Graph as a family tree for your island.
- The Root is the whole world.
- Actors (like players, props, or lights) are children of the world.
- Components are the parts that make up an Actor.
A Volumetric Cloud is a Component. It doesn’t exist on its own; it needs an Actor to attach to. Usually, this is the Sky Atmosphere actor, which controls the overall sky color, time of day, and atmosphere. The cloud component sits inside that actor, riding along with the sky.
Why Use Verse?
You could just place clouds in the editor and leave them there. But where’s the fun in that? By using Verse (Epic’s programming language), we can make the clouds react to the game. Did the team lose all their shields? Make it gloomy. Did someone win the game? Clear the skies.
Let's Build It
We’re going to build a simple system: A Weather Control Device. When a player steps on a trigger plate, the clouds will get thicker (more density) and darker, simulating a sudden storm.
Step 1: Add the Clouds in UEFN
- Open your island in UEFN.
- In the World Outliner (the list of all actors on the left), find your Sky Atmosphere actor. If you don’t have one, add it from the World Outliner menu (
Add Actor>Sky Atmosphere). - Click the arrow next to
Sky Atmosphereto expand it. - Right-click and select Add Component > Volumetric Cloud.
- Now you’ll see
Volumetric Cloudas a child ofSky Atmosphere.
Step 2: Configure the Clouds
Select the Volumetric Cloud component. In the Details Panel (right side), you’ll see settings like:
- Cloud Density: How thick the clouds are. 0.0 is clear sky, 1.0 is solid gray.
- Cloud Height: How high up they float.
- Lighting: How they react to the sun.
For now, leave these as default. We’ll change them with code!
Step 3: The Verse Script
We need a script that listens for a player stepping on a trigger and then changes the cloud density.
Here is the complete, annotated Verse code. Copy this into a new .verse file in your project.
# WeatherController.ver
# This script controls the cloud density based on player input.
using { /Fortnite.com/Devices }
using { /Verse.org/Sim }
using { /UnrealEngine.com/Temporary/Sim }
# 1. Define the Script Structure
# This is like the "Blueprint" for our device. It holds references to other things.
simb WeatherController : IScriptable =
# This is a "Device" reference. Think of it as a remote control.
# We'll connect this to a Trigger Volume in the editor.
TriggerDevice: Device = Device{}
# This is a "Component" reference.
# We'll connect this to our Volumetric Cloud component.
CloudComponent: Component = Component{}
# This is a "Constant" (a value that never changes).
# High density means thick, stormy clouds.
const STORM_DENSITY: float = 0.8
# Low density means clear skies.
const CLEAR_DENSITY: float = 0.1
# This is a "Variable" (a value that can change).
# We'll use this to track if it's currently storming.
var is_storming: bool = false
# 2. The Main Event Loop
# This function runs once when the game starts.
Main =
# Listen for the TriggerDevice being activated.
# When a player steps on the trigger, this block runs.
TriggerDevice.ActivatedEvent.Subscribe(
func():
# Toggle the storm state
is_storming = !is_storming
# Call our helper function to update the clouds
UpdateClouds()
# 3. The Helper Function
# This function actually changes the cloud settings.
UpdateClouds =
# If it's storming, set density to STORM_DENSITY
# Otherwise, set it to CLEAR_DENSITY
if (is_storming):
CloudComponent.SetDensity(STORM_DENSITY)
else:
CloudComponent.SetDensity(CLEAR_DENSITY)
# Optional: Play a sound or change sky color here too!
Walkthrough: What Just Happened?
simb WeatherController : IScriptable: This defines our script.IScriptableis like a "job title" that tells Verse, "Hey, I’m a script that can do things."TriggerDevice: Device: This is a Variable that holds a reference to a device. In UEFN, you’ll drag and drop a Trigger Volume device onto this slot. It’s like plugging a remote into a TV.CloudComponent: Component: This is a Variable that holds a reference to the Volumetric Cloud component we added in Step 1. You’ll drag the cloud component from the World Outliner into this slot in the editor.const STORM_DENSITY: float = 0.8: This is a Constant. It’s a number that never changes.floatis just a fancy word for a decimal number (like 0.8).TriggerDevice.ActivatedEvent.Subscribe(...): This is the Event. Think of it like a doorbell. When someone presses the button (player steps on trigger), the code inside the parentheses runs.CloudComponent.SetDensity(...): This is a Function. A function is a block of code that does a specific job.SetDensityis a built-in function for the Cloud Component that changes how thick the clouds are.
Try It Yourself
Challenge: Make the clouds change color too!
Right now, we’re only changing the density. Can you add a Light Function or change the Sky Atmosphere color when the storm starts?
Hint: You’ll need to add another variable in your script for the Sky Atmosphere actor, and use the SetSkyColor function (or similar, depending on your UE version) to change the sky from blue to gray when is_storming is true.
Don’t know where to start?
- Add a
SkyAtmosphere: Actorvariable to your script. - In UEFN, drag your Sky Atmosphere actor into that slot.
- Look up the
SetSkyColorfunction in the Verse documentation. - Call it in your
UpdateCloudsfunction.
Recap
- Volumetric Clouds are 3D clouds that add depth and realism to your island.
- They are Components attached to the Sky Atmosphere actor in the Scene Graph.
- Verse lets you control these clouds dynamically using Variables (like
is_storming) and Functions (likeSetDensity). - By connecting a Device (Trigger) to your script, you can make the weather react to player actions.
Now go make your island’s sky as dramatic as the storm circle.
References
- https://dev.epicgames.com/documentation/en-us/uefn/UE/building-virtual-worlds/lighting-and-shadows/environmental-lighting/volumetric-clouds
- https://dev.epicgames.com/documentation/en-us/uefn/UE/ue-reference-environments-and-landscapes-in-unreal-editor-for-fortnite
- https://dev.epicgames.com/documentation/fortnite/verse-api/versedotorg/scenegraph/sweep_hit
- https://dev.epicgames.com/documentation/fortnite/verse-api/versedotorg/scenegraph/overlap_hit
- https://dev.epicgames.com/documentation/en-us/fortnite/environment-light-rig-device-in-unreal-editor-for-fortnite
Verse source files
- 01-fragment.verse · fragment
Turn this into a guided course
Add Volumetric Cloud Component to your free study plan — we'll suggest related pages and stitch the lot into one compile-checked, self-guided lesson with worked examples and quizzes.
References
Original tutorial generated by Verse Island from the Verse/UEFN knowledge base, with references to the Epic Games sources above. Code is validated against the knowledge base.