← Blog

Starting Superengine Games, and choosing how it should feel

design astro three.js webgl godot superengine

I have started a games studio. It is called Superengine Games, and the line I keep coming back to is modern games with an old school soul.

That needs unpacking, because it is not about pixel art.

What “old school soul” actually means

The games that stuck with me were not the biggest ones. They were the ones built under constraints, where the personality came from what the hardware would not let you do. A tight scope, immediate feedback, no wasted motion. You could understand a game from its title screen.

There was a ritual to them too. Picking one off a spinner rack in a newsagent, reading the back of the inlay because the screenshots were the only information you had, then the walk home wondering whether you had chosen well. The loading screen was part of the product. By the time it finished you wanted it to be good.

Modern games are better in almost every measurable way, and I would not go back. But that anticipation has been quietly engineered out, and I think something was lost with it. The studio is an attempt to make things that have the modern qualities and some of that older feeling: games that respect your time and have something specific to say.

Why now

The honest answer is that I have wanted to do this for a long time and kept finding reasons not to. Making games was the thing that got me into computers in the first place, and at some point the gap between building software all day and never building the kind of software that started it all stopped being something I could keep ignoring.

So: a studio, a name, and a public commitment, mostly so that it is harder to quietly drop.

The front door

Before any of the game work, I wanted the studio to have a place to stand and a visual language to stand in. If the sensibility is going to mean anything it has to be visible in the first thing anyone sees.

So the site is a title screen. Not a landing page with a hero image, an actual title screen: a logo turning slowly on a CRT, a boot sequence, and a menu you press to get into.

Letting the technology carry the idea

The interesting part was making the technology serve the feeling rather than decorate it.

The screen is a screen, not a filter. The logo is rendered into a small, low-resolution buffer and reduced to a limited palette, then that image is displayed through a separate pass that behaves like a television: a gentle curve to the glass, scanlines, the faint colour fringing of a beam that never quite converged, and a soft phosphor bloom around anything bright. Two stages rather than one. It matters because the chunky picture and the soft screen are genuinely different things, which is exactly the relationship an old console had with the telly it was plugged into. Apply it as a single filter and you get something that looks like a filter.

The curve adapts to the glass. A television’s curvature is a physical property, so the bend is tuned per shape of screen. A phone held upright is not a small television, and bending it as though it were looks wrong immediately.

Nothing eases. This is my favourite detail. Every piece of motion on the site moves in steps rather than smooth curves: the blinking prompt, the menu cursor, the selection highlight. A smooth transition reads as modern software. The same movement in two or three hard stages reads as hardware. It is a one-word change in the code and it does more for the feeling than the shader does.

You have to press start. Browsers will not play sound without a deliberate action from the visitor, which is normally an obstacle. Here it is the point. Loading, then a prompt, then a click, and the machine comes to life with a sound. The constraint and the theme wanted the same thing.

Nothing is borrowed. No third-party requests at all. The fonts are served from the site, and the reflections on the logo are generated in the browser rather than downloaded. That is partly principle and partly performance, and it keeps the whole thing light enough to be quick on a phone.

The stack

Astro, with static output and no framework, deployed to GitHub Pages on a custom domain. The logo is three.js with hand-written shaders for the palette reduction and the screen simulation. The games themselves are Godot 4 and GDScript.

Boring in the best sense: the interesting decisions are all about feel, and none of them are fighting a framework.

What is next

There is a page tracking progress on the first game, which updates itself as work ships. That is deliberate. A roadmap you maintain by hand is a roadmap you eventually stop maintaining, and then it quietly becomes a lie. One that only moves when something real happens can only ever be honest.

More when there is something to show.