I’ve been iterating on the visuals of The Patchwork Ship. I started with an ASCII blob, then a blocky cigar, to colored bricks, a mess of pixels, to its current coherent form.

A triptych of three procedurally generated ships
Three evolutions of The Patchwork Ship generation

The Patchwork Ship is a game about escaping a dying star. You play a brain-in-a-box probe, manufactured by an abandoned sentient factory that is trying their best to save the trapped souls they have in storage. They keep building ship after ship and send them on their way with the hope that some of them will make it. Therefore, having unique ships is essential to the motif of survival construction, along with an evolving journey that keeps each gameplay loop fresh.

Roguelikes are, at their core, procedural; a set of rules and logic for randomly building something cohesive. These core tenets have helped guide my development.

Map generation is common in modern roguelikes, and players come to expect some form of it. A directed acyclic graph with logic around the origin and terminus? Sounds needlessly technical, but grounded in hitosry: the original 1980 game “Rogue” generated maps consisting of rooms (nodes) connected by corridors, filled with monsters and loot, and a start and end point.

A screenshot of Rogue, showing a number of rooms, corridors, the player and monsters, stats, and the text “The slime scored an excellent hit on you”
A screenshot of Rogue, by Epyx (1985)

Map generation is a part of my game; this was the first prototype I was happy with. There are echoes of this design in the in-game implementation.

A simple directed acyclic graph with coordinates on individual nodes, starting on the left, growing, then shrinking to the terminus on the right.
An early map prototype in The Patchwork Ship

Visual art is not one of my strengths; I instead focus on elements of style and aesthetic with a preference for function over form. The design of the ships was something that I struggled with, but I knew what functionality I wanted.

This included unique yet familiar designs, visual cues that hint towards function, themes of colors and shapes, and an absorption mechanic. This last one was technically complex; defeated opponents provide materials that repair your ship; the opponent’s color appears on your ship, almost as a trophy, a living history.

I started with a 2D graph and generated circles, then ovals, then grew protuberances with lights on them and a “sensor bar” for direction orientation (yes, space has six degrees of movement freedom and the vacuum means no need for aerodynamics, but it looks cool).

A blocky procedurally generated ship full of colors
An early ship prototype in The Patchwork Ship showing absorbed colors

This version is what I ended up using at the Lake George Games Expo to replace the literal squares I was using as placeholders. Afterwards, I tried iterating on it; why not add more pixels?

A pixellated mess of a procedurally generated ship
A pixellated mess of a procedurally generated ship

Performance was terrible, it looks horrible, and it’s not what I wanted. I did some research, and I saw a number of examples of how other people did it. One of the most compelling examples seemed to use off-the-shelf parts, some simple logic around connections, and color palettes for highlights and shadows. Thinking back to how propmasters built spaceships, there was a lot of “kitbashing” - taking bits and pieces from commercial model sets and bits and bobs and gluing them together to make something novel.

I made some part outlines just drawing random angles, then I started making some part outlines from photos of real model kits by cutting out the part, desaturating, and decreasing the contrast until it was all black. I sliced the parts up in Aseprite and exported a sprite sheet. I imported it into Godot, added some placement logic with random materials (each with their own color ramp), then added directional highlights and shadows. I added some decals (alpha textures), lights (textures with blinking/pulsing logic), and pipes (point A to point B with a bendy line).

A procedurally generated pixelart space ship
The first time a generated ship grabbed my attention

I ended up not using this particular ship as a “hero” for two reasons; one, it looks a bit militaristic and like a gun, and two, I evolved the algorithm and my fixed seed didn’t generate that ship anymore. I added some randomly placed rectangles for the absorption mechanic; it applies to the hull, which is under the decals, lights, and pipes.

The Steam Main Capsule for The Patchwork Ship
The Steam Main Capsule for The Patchwork Ship

I’m not going to add a damage mechanic, although it may make it more visually interesting. Adding parts to the ship is more novel and it’s more important to, well, ship than endlessly iterate.

I’ve updated the art and screenshots for The Patchwork Ship on Steam, although it still has the old trailer. I’ll wait until I complete most of the stack of todos I’m churning through before I make a new trailer. Check out the updated art!