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

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 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.
Eyes open
Eyes closedFrom 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.
