project / prototype

A generational starship mechanic game

A worn generation ship became the setting for an automation game built around machine networks, repair detours, and a small playable Godot workshop.

The idea came from a particular kind of satisfaction in expert modded Minecraft: I would try to automate one machine and discover a chain of smaller jobs that had to happen first. I wanted that feeling in a game where keeping an aging generation ship functional was the larger reason to solve each local problem. Cables, channels, and power networks would matter because I could walk up to a broken system and trace what it needed.

The first build increment was deliberately smaller than the ship. I reported a Godot workshop with movement and collision working, then moved toward visible feeder and cable connections. That step was a test of whether a player could understand the relation between a physical link and a machine state. The generational setting gives the work its stakes; this particular record ends while the workshop and its first network interactions are still taking shape.

One district before a whole ship

The assistant developed a first scenario around restoring a district’s pump system. A functioning backup would keep the district alive while the player experimented. A salvage detour would provide materials useful to the repair rather than act as an unrelated side quest.

The proposed layout was 32×24 tiles, with four network layers: power, items, fluids, and control. The workshop supply and standby pump supply were separate, so experimentation in production would not immediately switch off the district.

The central power puzzle was deliberately small. An 80-unit feeder served machines requesting 110 units together. One solution was to sequence production; another was to restore a second feeder through the salvage route. The assistant reported checking the layout’s capacities, access, and starter-material budgets. Those were design checks on the proposed scenario, separate from a running game.

This gave the player two understandable approaches to the same problem. Careful scheduling could use the equipment already available, while another repair project could make the workshop less constrained.

Physical connections and control channels

The interaction design distinguished the thing carrying a resource from the channel telling a machine what to do. Cables and pipes carried services and materials. Control channels addressed connected machines and coordinated requests.

Connections were to join only at explicit junctions. A crossing on the screen would not silently connect two networks. Fault inspection would trace a blocked machine toward the cause, and moving or rerouting equipment would preserve materials and work already in progress.

Two small rules made the intended behavior more precise. Expanding a buffer would not automatically raise the production target. Losing a control connection would report stock as unknown, rather than treating it as empty and requesting more. Those distinctions matter in a game where the player is meant to understand and debug the network.

Building the first workshop

I was open to native Godot despite a preference for C or C++, and wanted to direct development while leaving much of the code to AI. The chosen starting point was Godot 4.6.2, typed GDScript, Linux, the Compatibility renderer, and a top-down workshop with placeholder graphics.

The first increment was intentionally smaller than the scenario. It contained a floor, walls, a movable mechanic, a Reclaimer, a Fabricator, machine selection, and an inspector. Both machines initially displayed “No power connection.” Production, cables, fluids, inventory, and saving were deferred.

The completion report I pasted back described normalized WASD/arrow-key movement, wall and machine collisions, cyan selection outlines, clearing selection with Escape or empty-space clicks, and a Godot-native inspection panel. Machine data lived in separate MachineState resources, and the inspector subscribed to the selected resource instead of maintaining a second copy of the status text.

That report distinguished headless parsing and runtime checks, automated state and collision checks, and inspection of a rendered frame. It also said the automated selection tests called selection logic directly, leaving actual mouse interaction for a manual check. My reply was that it worked as expected. This is historical development evidence, not a new run of the project for this page.

The next increment was the cable itself

The next task specification added one fixed 80-unit feeder with visible ports. Clicking its output and then a machine input would create a direct cable; Escape or right-click would cancel. Duplicate or invalid connections would be rejected, and the inspector would allow disconnection.

Connection state was to belong to the simulation, with cable drawing reflecting that state. UI clicks should not pass through to machines, and a port click should not also trigger ordinary selection. At that stage, “connected” would only mean connected: active consumption and demand allocation were still to come.

The reported workshop movement and collision gave me a place to stand. The more revealing test was whether a visible cable could change a machine’s state in a way I understood. Only then would the larger ship’s network and power problems have something concrete to build on.

Related rabbit holes

PublishedOct 3, 2026
note / design study

Arranging quilt tiles

A concrete three-part quilt layout, with aligned edges, consistent sashing, and a rotation to test.

Documented activity: August 22, 2026
PublishedOct 3, 2026
project / experiment

Designing a modded skyblock base

A skyblock base grew from an unbuilt floor plan into automation, a cramped service layer, a room retrofit, and recurring power constraints.

Documented activity: July 28, 2026 – September 14, 2026