
Pixel Weather Kit for Godot 4
A downloadable asset pack
Six skies, one dial, and ground that stays wet after the rain stops.
Six kinds of weather for a Godot 4 game — and, more importantly, the turn between any two of them. Rain that soaks the ground and leaves puddles behind. Snow that settles on the moor and on the hedge. Lightning whose thunder arrives late. Wind that one shader global hands to every leaf in the scene.
GDScript only. No C#. No addons. No dependencies.
Weather is data
A condition is a plain object of numbers. There is no Storm class and no if fog: anywhere in a _process. Adding a seventh kind of weather is a dictionary entry and nothing else:
&"hail": ["Hail", {
"sky_top": Color(0.31, 0.34, 0.40),
"sun_energy": 0.7, "ambient_energy": 1.1,
"fog_density": 0.018,
"snow": 0.6, "cover": 0.35, "wetness": 0.7,
"wind": 8.0, "gust": 3.0, "strikes": 2.0,
}],
Unknown keys push_error rather than failing silently, and anything left out keeps its default. Because a condition is only floats and colours, blend() mixes any two of them generically — which is what makes the turn between weathers free.
The turn is the feature
weather.turn_to(&"storm") # over seven seconds weather.turn_to(&"clear", 20.0) # over twenty weather.snap_to(&"fog") # now, for a menu or a load
Every frame the director interpolates the current condition toward the target and pushes the result at the sky, the sun, the fog, the tonemapper, the particles, the wind and the ground. Nothing downstream knows a turn is happening.
Lag is what sells it
Three things deliberately refuse to keep up with the sky, and they are the reason the weather reads as weather instead of as a switch:
- Wetness soaks in over 3 s and dries over 26 s. The ground is still glossy long after the cloud has gone.
- Snow cover settles over 9 s and thaws over 16 s, so the moor whitens while it is falling rather than the instant the first flake lands.
- Thunder arrives at 343 m/s. A bolt at 1.7 km bangs five seconds later — and it is the near ones that make you jump.
Four numbers the whole world agrees on
The project declares four shader globals — wind_vector, wind_strength, wetness, snow_cover — and the director writes them once a frame. Any material in your game can read them with one line and no wiring at all.
What is inside
- condition.gd — one weather as twenty-odd floats and colours.
- weather.gd — six presets, blends between them over seconds, drives everything else.
- precipitation.gd — one particle class at two speeds, in a box that follows the camera.
- lightning.gd — forked bolt, screen flash, thunder delayed by the speed of sound.
- wetness.gd — darkens and glosses the ground, grows puddles, lays and thaws snow.
- sway.gd + sway.gdshader — finds the leaves by material name and bends them; whitens them under snow.
- diorama.gd — camera, depth of field, sun, sky, tonemap, glow, and the moor to drop weather on.
- demo/ — all six conditions, a live read-out of every number, and an auto-cycle.
Signals
weather.turned.connect(func(id): print("it is now ", id))
weather.struck.connect(func(metres): shake_the_camera(1.0 / metres))
struck fires on the flash, not on the thunder — so a screen shake hangs off the light and the rumble hangs off the delay.
Controls in the demo
1–6 pick a condition · Left / Right step through them · Space hand it back to the auto-cycle · L strike lightning now · A / D turn the camera
The read-out in the corner is the point of the demo: watch ground 12% wet → 85% climb for half a minute after the rain starts, and keep climbing for a while after it stops.
Requirements
Godot 4.4 or newer. Built and tested on 4.7, Forward+. Everything is GDScript — no C#, no addon to install, no third-party dependency.
Licence
Use it in commercial and non-commercial projects, modify it, ship it, keep the money. The only thing you cannot do is resell the kit itself as a kit.
Funding goal — $150
Every sale of this pack goes straight into the next one. At $150 this line gets a free Seasons & Time-of-Day Pack: a day/night cycle that drives the same dial, plus four seasonal palettes, pushed to everyone who already owns this kit at no extra cost.
Three dollars is deliberately cheap. If it saves you an afternoon, that is the trade.
More in this series
All four kits share the same camera, scale and palette, so they fit together.
- HD-2D Starter Kit: sprites in a 3D world, the diorama camera and day/night
- HD-2D Battle Kit: turn-based combat with weaknesses and guard breaks
- HD-2D Town Kit: a walkable village with dialogue, a shop and doors
HD-2D Complete: all four kits for $8.
Disclosure
The art in this kit was generated with AI tools and then assembled, lit and rendered in Blender by hand. The code was written with AI assistance and then edited, commented and tested by hand. Every screenshot is the kit actually running.
Purchase
In order to download this asset pack you must purchase it at or above the minimum price of $3 USD. You will get access to the following files:






Leave a comment
Log in with itch.io to leave a comment.