Nine hard cuts
The opening used to be eight still images with a slow digital push across them, and the names appearing one letter at a time. It held up for months and it was honest. As of today it’s gone.
Nine clips, no dissolves
The opening runs seventy-two seconds and changes shot every eight, never fading from one to the next: a hard cut, the way it’s done in an edit room. The ship from far away, the registration on the hull, the engines, a corridor towards the bow, the hold, hands on a connector, the comms room, the bunk with the tablet, the bridge.
The last shot is the close-up above. The final two clips stay clean, with no words over them: sixteen seconds that carry you to the face, and then the alert sound that sets the whole story going.
The clips arrive finished, cut to the exact size of the game frame: no scaling, no filter on top. All the game does is assemble them and swap them.
The titles aren’t drawn on screen
This is the part that took the most attempts. The main titles had been written the way you write a web page: real text, animated with the browser’s style rules. They were clean, and they were wrong. They had that unmistakable website quality you spot instantly without being able to say why.
The why is measurable. In cinema anything that moves leaves a trail inside the frame, because the shutter stays open for a fraction of a second. The browser does nothing of the kind: every frame is perfectly sharp, and that unbroken sharpness is what the eye reads as “this wasn’t filmed”.
So the titles stopped being text. They are now films with a transparent background, composed outside the browser with Remotion and laid over the clips as a second layer. Outside the browser there’s no ceiling on quality left: the text arrives out of focus and overexposed, pulls into focus as the glow crosses it, drags a squashed horizontal trail, then blooms on the way out. In exchange the game gets simpler, because laying one video over another is the same mechanism it already uses for the clips.
There are seven blocks, one per clip, and they now say who did what: the studio, the author, the voices of Leonardo Tomassetti, Olivia Quattrocchi and Deborah Piu, the cinematic sequences by Alex Raccuglia, the music by Alirio Bruni, the executive production by Michela De Paola.
RUNTAME MULT1MEDIA
The first block is the studio name, and it arrives like a transmission being decoded: the characters come up corrupted, then on the thirtieth frame they lock into register and stop. In the first version the corruption characters were drawn from the alphabet, and this is what came out: RUNTAME MULT1MEDIA.
On a studio name, corruption doesn’t read as corruption. It reads as a typo, the same defect we already had to fix on the generated cover art, where the logo had turned into “RIUNTIME”. The corruption characters are now symbols only, never letters and never digits. The name stays intact, everything else is plainly being decoded.
Two defects you couldn’t see
The game title, on the final black, was invisible. Not transparent: covered. The container holding the titles had a stacking rule that, without saying so, sealed its children inside a layer of their own; from in there none of them could climb above the black, however high you sent it. A check that only asked “is it opaque?” always came back yes.
The second one is worse. On a cold cache the title films would sit frozen on their first frame, which is transparent: invisible and silent, with no error of any kind. We’d added an automatic repair that kept asking the video to play for as long as it read as paused. Except every new play request aborts the one still in flight. The cure was the cause: the video never started. Now it waits until the film is ready, two attempts never overlap, and it retries at most twice a second.
Twenty-three findings, read with the game switched off
With the opening sorted, the rest of the day went into a different kind of review: no playthrough, no preview, only reading. Around 8,600 lines of code read in full, along four independent tracks — state consistency, saves, controls, assets and audio.
Twenty-three findings came out of it. None of them blocked the critical path, but the first three had to be closed before packaging again:
- The typefaces were being fetched over the network. The game asked an outside server for its two fonts: on a machine with no connection, or on the day that server doesn’t answer, the interface would have come up in whatever font happened to be around, which is to say with no face of its own. The fonts now travel inside the package.
- The autosave was being rewritten at startup. Starting a new game, restarting or loading a slot wiped the automatic progress accumulated up to that point. Anyone who had trusted the autosave would have lost hours.
- One radio re-transmission was unreachable in every possible playthrough. Text written, registered in the dialogue structure, that no player could ever have heard.
The other twenty were closed one at a time, each with its own numbered version: the ESC key that closed a window and opened the pause menu along with it, music that in a rare case could stay stuck at zero volume, a dialogue channel that closed forever instead of staying reopenable, an object left without its selection sound, the window icon that in the package pointed at a folder that isn’t there. Twenty-three out of twenty-three.
One tester, and a quarter of a game
Then the first report from outside arrived, and on its own it was worth every internal check. Mario Trani, who has a 1280×1024 screen, wrote that the game showed up displaced: he could see a quarter of it, down in the bottom right.
Reproduced in a minute, and the cause is nearly comic. The frame that holds the game centres it inside a cell sized to the game itself rather than to the screen: when the screen is smaller, the cell overflows entirely on one side and the centring centres nothing at all. At 1920×1080 the two measurements coincide and the defect is mathematically invisible. And 1920×1080 is where we always tested.
The fix is two lines. The tester package was rebuilt and the previous one withdrawn, its folder now carrying a plain-language ban on distributing it. This is the third time in this project that something works where we build it and dies elsewhere, and the lesson is the same every time: the developer’s machine is the least representative one there is.
Thank you Mario. Your name is already in the credits register.