← All posts

A title screen in the rain

The first thing running in Godot: a backdrop with real water reflections, layered rain, and Pew blinking and firing from inside the logo.

Listen to this post

Read in Dodz's voice, cloned with AI

0:00 / 0:00
PewRun's title screen in Godot: the logo over a rainy street with puddles.

With a GDD and a style guide in hand, it was time to open Godot. I didn't start with movement. I started with the title screen, because it's the first thing anyone sees, and because it forced me to solve rain, light and water right away. Those are half of PewRun's identity.

The title screen, recorded straight from Godot. The game was running in Portuguese.

The foundation nobody sees

Before any pixels, a few decisions that are much cheaper on day one:

  • Godot 4.7, statically typed GDScript, the Forward+ renderer with HDR 2D turned on, so bright things can glow.
  • Inputs registered per player in code (p1_jump, p2_jump…), instead of one global set. It costs nothing now and keeps options open later.
  • English and Portuguese from the start. There's no fixed text in the code: every string goes through a translation key, and the game picks the system language the first time it runs.
  • An audio manager with separate buses for music, ambience, effects and interface, where a missing sound file just means silence instead of a crash.

Water that reflects

The backdrop is a generated painting of a wet street. To make the puddles reflect for real, a small tool builds a water mask: a grayscale image where white means "this is water". A shader then mirrors whatever sits above the waterline into the white areas, wobbles it with noise and drops rain rings on it.

The trick is that the reflection is computed every frame. When Pew fires, the orange flash shows up in the puddles too.

Pew lives inside the logo

The logo has Pew peeking over the letters with his blaster. Another tool splits it into layers: the logo without any shots, the same image with Pew's eyes closed, and the plasma bolt cut out on its own.

The logo layer with Pew's eyes open and no shots.Eyes open
The logo layer with Pew's eyes closed.Eyes closed
Two of the logo layers. Swapping them is all a blink takes.

From there it's timing. Pew blinks every 2.2 to 5 seconds, and one blink in four is a double blink. He fires bursts of three shots, 0.11 s apart, then waits 1.6 to 3 seconds. Each shot kicks the logo back 5 pixels and lights up the scene. Small numbers, but they're what make him feel alive instead of looped.

The bloom comes from HDR: colors brighter than 1.0 cross the glow threshold. It took a few screenshots to calibrate. Too much light and the logo burns out and the blaster disappears.

Sound

The main theme, the rain loop and the effects were generated with ElevenLabs through a small script, one entry per sound. The shots on the title screen play very low, so the theme stays in front.

If the first screen of this website looks familiar now, that's on purpose: it's a web port of this title screen, with the same water, rain and blink timings.

Next: nine sprite sheets and eighteen animations.