Anthony Ellis
← All projects

GameMaker · GML · In development

Solvane: The Iron Reach

An infinite procedurally generated galaxy you mine, build in, defend and fly through in a ship you designed yourself. I started it in August 2016 and I'm still on it.

Solvane: The Iron Reach title card — the game's name over a starfield, with a blue banded ice planet at lower right.

The title card, from the Steam page I'm putting together.

Role
Sole developer
Engine
GameMaker Studio, GML
Genre
Top-down space sim, factory building, tower defense
Started
August 2016
Status
In development, Steam release planned
Longest break
Nine months, then back to it

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.

The player ship beside an orbital base built from conduits, solar panel arrays and turrets, with asteroids and drifting wrecks nearby.

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 ship mining a rock asteroid, with a readout showing hit points, scrap yield, crystal yield and experience.
MiningTargeting a rock asteroid. Each one reports what it's worth before you spend time on it.
A banded gas giant with orbital paths drawn across the starfield, a moon below, and the player ship between them.
OrbitsPlanets and moons on drawn orbital paths, with a minimap tracking what's around you.

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.

Combat: the player ship firing on a red enemy, projectiles trailing across the starfield, minimap showing contacts.
CombatWeapons are built from parts rather than picked off a list, so the loadout is a decision rather than a menu.

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.