The first thing we agreed about Aetheris — before combat, before story, before we knew what genre we were making — was that the sky would carry the game. Everything else could be small. The sky had to be a character.

Seven weeks in, we had a shot of the horizon from the west gate of Aethon's Rim that looked exactly like the reference boards. We shipped it internally, cheered, and then noticed it looked like every other painterly game. This post is about what we did next.

Start with what the sky is for

A sky in a game does three jobs. It tells you the time. It tells you the mood. It tells you where you are. In most action-RPGs, the first two do all the work — the third gets outsourced to signage and quest markers.

In Aetheris, the sky is the map. It rearranges continents. It changes what's reachable. So the third job — where am I — got promoted, and the other two had to learn to share.

The pipeline, in one paragraph

We paint 28 sky states per region — twelve times of day, seven weather patterns, nine drift phases (the game's word for how the continents have shifted relative to each other). Each is a hand-painted matte, resolved at 8K. At runtime, the engine crossfades between three of them at a time, driven by the drift simulation and the time-of-day system. It sounds like a lot of art. It is.

Final sky render Early sketch
⇔
Early sketch Final render

The reference board was the mistake

Our first reference board was, to be honest, gorgeous. Studio Ghibli, Moebius, Simon Stålenhag, some Turner, one Rothko for reasons no one wrote down. It was also the reason our first sky looked like every painterly game.

A reference board of finished paintings teaches you to make finished paintings. It doesn't teach you what your own thing is. We threw that board out and started a new one made only of process — half-finished paintings, brush studies, notes about failures, and a lot of screenshots from our own build.

What the shader team fixed for us

You cannot paint a sky that never sits still. We can paint keyframes; the shader team paints the space between them. Ren's crossfade shader takes three of our mattes at a time and blends them across a 6-band luminance space, so instead of the sky fading it seems to settle from one state to the next.

The mistake we made twice: we shipped a version of the shader that fed all three mattes to the fragment shader unweighted. It looked like a JPEG being loaded on dial-up. We fixed it, everyone celebrated, and then we did it again three weeks later because someone reverted the wrong file. This is a devlog. We are telling on ourselves on purpose.

What it looks like now

The shipping sky has 28 states per region, but you only ever see it as a continuous slow drift. You'll cross the Long Bridge one evening and swear the light changed while you were looking at the horizon. It did. That's the sky remembering what it was ten minutes ago and being pulled toward what it should be now.

Next month I'll write about how the shader team went from "we blend three mattes" to "we blend the music of three mattes". It's stranger than it sounds. Thanks for reading.

← Previous devlog Character silhouettes: designing Iolen from the shoes up Next devlog → Combat flow v3 — parries, momentum, and the new stagger meter

Related devlogs