Where it came from
No Man's Sky launched in August 2016 and the reception was brutal. On a Discord call I told my friends I could probably make something with that much depth in GameMaker. That was a joke, and then it wasn't.
The early weeks were easy, which is the trap. Ships moved, asteroids broke apart, things exploded. The moment I started building systems that had to talk to each other, the actual size of game development turned up all at once. What surprised me is that it didn't put me off. Working the sanitation shift at the bakery, I'd spend hours zoned out on some problem I was stuck on, and if something occurred to me I'd type it into my phone before I forgot it. That's the thing I'd point to if someone asked whether I like this work: the job was scraping dough off concrete and I was still thinking about collision code.
A base under construction: solar arrays generating power, conduits feeding power to turrets covering the approach. The bars along the bottom are Warp Drive, Health and Energy.
What it is now
Top-down, infinite, procedurally generated. You fly out, find asteroids worth mining, and haul what you pull out of them back to a base you build yourself. That base is a factory: conduits, processing, power, and turrets to keep it alive when something comes for it. Drones are constructed to help protect the base as well as repair it. Weapons are built rather than bought, and the ship is yours to configure. Factorio and tower defense, in space, in a sidescroller-sized pixel art style.
The parts that were hard
Chunked rendering, three times over
An infinite world means deciding what exists near the player and what doesn't, and doing it without a frame-rate cliff every time you cross a boundary. I wrote a chunk system, then wrote another one, then wrote a third. Coming back after a nine-month break I found all three still in the project, two of them doing nothing, all of them tangled together closely enough that it wasn't obvious where one ended and the next started. Untangling that took longer than writing any of them.
That's where I learned to comment code, and I mean actually learned it, not read it in a style guide. Comments are a message to the person who comes back in nine months, and that person is always me.
Shaders
Fun to play with and finicky to get right. Most of the lighting and effect work in the screenshots came out of a long stretch of not quite understanding what I was doing, then understanding it.
Why it's still going
I take breaks from it, sometimes months at a time, and I always come back. Nine years of that is the honest measure of whether someone wants to do this work: not whether they can sprint at it for a weekend, but whether they're still there after the novelty has completely worn off and the code is a mess of their own making.
It's my main focus at the moment. The plan is to get it to a state I'm happy to put in front of people, and then put it on Steam.