projectrtsunitygame developmentdevlogvegetationtreesweatherseasonsenvironment artphotoscansnow

Dev Diary #4: Forest, Snow and Weather

October 2, 2026
5 min read

A blizzard in the game cuts visibility in half, increases the spread of shots two and a half times and grounds all aircraft. While setting that up I finally understood that weather in my game is not decoration but a part of the rules of combat. This part is about that, and about the trees where it all started.

Dev Diary #4: Forest, Snow and Weather — 1

The screenshot shows a battle in a snowfall on a test map: bare trees, snow and a frozen lake with cracks in the ice. As before, all the maps in the screenshots are test maps.

Trees

Before, the trees in the game were placeholders made of primitives: a ball on a stick for broadleaf trees and a cone for conifers. That was enough for testing the game, but for a map you play on for half an hour you need proper trees.

Dev Diary #4: Forest, Snow and Weather — 2

This is what the placeholders looked like. I asked for trees with proper textures and UVs, without stylization. The first two attempts didn't work for me. First came a low-poly stylization, and in the second the leaves were drawn procedurally right in Blender, and it looked like clip art. The third version turned out to be the working one: I took free CC0 scans from ambientCG and Poly Haven and built the foliage from real photographs of leaves and twigs. The trunk and branches are tubes with a photo of bark, and the crown consists of cards with foliage. The set has three broadleaf species (oak, beech and linden), three spruces and three pines, three bushes and five kinds of grass. Each tree has a near level of detail of two to four thousand triangles and a far one of about four hundred.

Dev Diary #4: Forest, Snow and Weather — 3

This is what the forest in the game looks like now.

Wind

Wind took the most time. In the first version the wind weight depended on the position in the crown, and in the game I saw the same thing several times: branches sway separately from the trunk, leaves separately from the branches, and the trunk sticks out of the crown. I took the solution from SpeedTree: the displacement is calculated in three layers, and each layer equals zero at the point where it attaches to the previous one. The trunk bends depending only on height, a branch continues the movement of the trunk at its attachment point, and a leaf continues the movement of the branch and also flutters with its tip. Now a branch can't come off the trunk, because at the attachment point it moves exactly as the trunk does.

The Tree Editor

Then I wanted to make trees myself instead of getting them ready-made from scripts, and I built a tree editor. It defines a recipe: the height and bend of the trunk, the number of branches, the size and orientation of leaves, bark textures and a triangle budget the tree is fitted to automatically. The second version added a graph of generators, splines with manual editing and a bark UV editor. Right in the window you can turn on wind and a season with the same shader parameters as in the game, and see at once how the tree will look in autumn or winter. There is also a plant database of the game: you can replace any species with your own tree, add a new species and set which biomes it grows in.

Dev Diary #4: Forest, Snow and Weather — 4

The screenshot shows the tree editor window with autumn turned on.

Biomes and Seasons

Every map now has a biome: temperate forest, taiga, steppe, desert and so on. The biome defines the weather, the temperature and which vegetation grows on the map. The same map can be played in different seasons: summer, autumn, winter or spring, if the map author allowed it. The season is chosen in the room before the match, and there's no need to bake four versions of a map: the terrain and the placement stay the same, while the season changes the color of the ground and foliage and which plant models are used.

Dev Diary #4: Forest, Snow and Weather — 5

The screenshot shows the same spot of the map in four seasons: a bridge over a river. In summer everything is green, in autumn the trees turn yellow and red, in winter there is snow and the river is covered with ice full of cracks, in spring the crowns are light and young.

Dev Diary #4: Forest, Snow and Weather — 6

And this is the forest edge by the lake. In autumn the grass dries to yellow, in winter the trees stand bare, in spring light young leaves appear on them. To be honest, spring and summer still differ from each other less than the other seasons, and I will keep working on that. In winter snow lies on the ground, rocks, bridges, buildings and vehicles, and in autumn the leaves fall.

Weather

Weather depends on the biome. At the start of a match it is chosen by the rules of the biome, and then every three to seven minutes it either stays the same or gets better or worse, but only by one step. In summer it goes from clear through overcast and rain to a thunderstorm, and in winter from clear through snowfall to a blizzard, and it can't jump from clear weather straight to a thunderstorm. What exactly falls is decided by temperature: above two degrees it's rain, from zero to two it's sleet, below zero it's snow. Snow on the ground builds up during a snowfall and melts when it gets warmer.

Weather affects combat, not just the picture, so the simulation calculates it and it is the same for all players in a match. Rain leaves 80 percent of visibility and increases the spread of shots one and a half times. A thunderstorm leaves 65 percent of visibility and doubles the spread, fog leaves 60 percent of visibility, and a blizzard 50 percent with a spread two and a half times larger. In a thunderstorm, a blizzard and a dust storm all aircraft stay on the ground. These numbers are only first versions, and I will tune them with playtests.

Dev Diary #4: Forest, Snow and Weather — 7

These two frames show a thunderstorm. At a normal moment the field is dark and it rains, and during a flash of lightning everything is lit up for a second.

Dev Diary #4: Forest, Snow and Weather — 8

And this is a blizzard: visibility is half as much, and in the wall of snow you can hardly see who is fighting whom.

Dev Diary #4: Forest, Snow and Weather — 9

And a battle in autumn at the forest edge: yellow grass, orange and red trees, an overcast sky.

Forest in Combat

I wanted the forest to be a part of combat in both directions. Infantry in a forest takes 30 percent less damage from small arms and 20 percent less from explosions, and the enemy notices it only at 40 percent of its vision range until it fires: a shot reveals the position for three seconds. But you also see worse from the forest, at 70 percent, and vehicles in a forest move at 60 percent of normal speed and give themselves away with noise every three seconds that can be heard 30 units around. Less noticeable things were done nearby too: trees are cut down under buildings, the crown becomes transparent above units so they don't disappear under it, and enemy buildings stay on the map as ghosts in the fog of war.

Performance

Forest and grass are tens of thousands of objects on a map, and they ate a noticeable part of the frame. I moved the vegetation rendering to the graphics card and tuned the shadows, and on two test maps the frames per second grew from 42 to 51.7 and from 43.6 to 55.2.

What's Next

In the next part I'll talk about a bot that plays against me and shows the course of its thoughts, and about how it learns.