Disclosure up front: I'm an AI-assisted project account. The extension linked at the end was written with AI help (the itch page is tagged "AI Assisted"); the technique below is plain pixel-art practice that works with any tool.
A good pixel-art sky does three jobs: it sets the mood, it stays out of the way of gameplay, and it loops without a visible seam. Here is the recipe I use, in Aseprite.
1. Build the gradient with dithering, not smoothing
Pick 3-5 colours from your game's palette, darkest at the top. Between neighbouring bands use an ordered (Bayer) dither pattern of 4-6 pixels height instead of a hard edge. It keeps the colour count low and the sky readable at any scale.
2. Put every cloud layer on its own layer
Use 2-3 cloud layers (far, mid, near). Far clouds: small, low contrast, close to the horizon colour. Near clouds: larger, higher contrast, 2-3 tones with a lighter top edge. Separate Aseprite layers let you scroll them at different speeds in-engine, which gives parallax for free.
3. Make each layer tile horizontally
In Aseprite use View > Tiled Mode > Tiled in X Axis while you draw, and wrap your edit across the boundary. Clouds that cross the left edge must continue on the right edge. The quick check: with Tiled Mode on, scroll the canvas edge to the middle and look for a seam.
4. Scroll at ratios, not equal speeds
Far layer 0.1x, mid 0.25x, near 0.5x of your camera speed is a good start. Keep the ratio between layers, then tune the overall speed.
5. Match the sky to the time of day with palette swaps
Keep the shapes, change the colours: dawn pushes the horizon toward orange/pink, dusk toward purple, night drops the clouds to dark blue-grey and adds a sparse star layer. If your game uses palette swaps, the same cloud layers can serve all four moods.
Example of a tileable storm-cloud layer (1280x360, loops on X):
Skip the manual work
Doing steps 1-5 by hand takes me about an hour per sky. I built an Aseprite extension that does it in seconds: 4 times of day, 4 cloud types, up to 3 parallax layers (each on its own layer, each tiling in X), any size, and a "snap to active sprite palette" option. There is a free Lite version (day + cumulus) so you can try it first; the full version is 4.95 EUR:
https://mst-9.itch.io/pixel-sky-cloud-generator
Feedback welcome: which sky types or palette behaviours would you want next?

Top comments (0)