new ship lab #5

Closed
opened 2026-08-10 20:14:47 +00:00 by metaheavens · 2 comments
Owner

ship lab let the player research upgrade for each vessel type and unlock new vessel types. add a new vessel which is a shield vessel. it has a shield which blocks shots and rocks on hit, though the shield is disabled temporarily after a shot.

ship lab let the player research upgrade for each vessel type and unlock new vessel types. add a new vessel which is a shield vessel. it has a shield which blocks shots and rocks on hit, though the shield is disabled temporarily after a shot.
Author
Owner

Not started yet - taken after #3 and #4 deliberately.

This one collides with #4 (the skill tree) in GameState, BuildController, Fleet and Main.tscn: both add building types, both gate what the player can build, and both change how many/which vessels a fleet can hold. Running them in parallel would have meant two agents rewriting the same four files, so it was held back rather than merged badly.

Now that #4 has landed there is a natural shape for it: the Ship Lab becomes another node in the research tree (unlocking the building), and vessel-type research hangs off the lab itself rather than off the mothership. The shield vessel is then a new entry in the fleet's vessel types, with the shield as a per-ship state that blocks a projectile or rock on contact and goes down for a cooldown afterwards.

Also still open here: #2 was the API connectivity test issue and can be closed.

Not started yet - taken after #3 and #4 deliberately. This one collides with #4 (the skill tree) in `GameState`, `BuildController`, `Fleet` and `Main.tscn`: both add building types, both gate what the player can build, and both change how many/which vessels a fleet can hold. Running them in parallel would have meant two agents rewriting the same four files, so it was held back rather than merged badly. Now that #4 has landed there is a natural shape for it: the Ship Lab becomes another node in the research tree (unlocking the building), and vessel-type research hangs off the lab itself rather than off the mothership. The shield vessel is then a new entry in the fleet's vessel types, with the shield as a per-ship state that blocks a projectile or rock on contact and goes down for a cooldown afterwards. Also still open here: #2 was the API connectivity test issue and can be closed.
Author
Owner

Done in 1cbae8f.

The Ship Lab is a new building gated behind a new Vessel Science research node, with its own art (a test frame holding a vessel, with instrument booms sweeping round it - a workshop, not another factory), its own build-menu glyph, map marker and info popup.

Vessel research lives at the lab, not in the mothership tree. That tree gates what may be built at all and is a strategic spine; these are repeatable tuning on vessels already owned, and mixing them would crowd the tree while making the lab a gate rather than a place you go. Levels cost base * (level + 1), so the third point in something is not the price of the first.

Upgrades are read live rather than baked in at build time, so researching one improves the ships already flying rather than only the next one built. Covered per category:

vessel upgrades
Interceptor Heavy Slugs (damage), Autoloader (fire rate), Targeting Array (range), Thrusters (speed + acceleration)
Shield Vessel Layered Emitters (+1 hit absorbed), Fast Cycling (recharge), Thrusters
Transporter Expanded Hold (carry capacity), Freight Engines (speed)

Two of those made existing systems mean more: the transporter had an unlimited hold until now (take = min(want, rocks)), so a capacity upgrade needed a real limit to raise; and its speed was a constant.

The shield vessel is unlocked at the lab and then built at the ship crafter. The shield is personal, not a bubble. Ships have no health in this game - contact with an enemy or asteroid is instantly fatal - so "absorbs a hit" means surviving the collision that would otherwise have killed it, after which the shield is DOWN until it cycles back up. The ring is a NeonPiece child toggled with visible per #10, not a redraw of the hull.

vessels_owed now carries the vessel TYPE rather than a bare count, so a shield vessel finishing while the player is on a planet's surface comes back as a shield vessel.

Tests

tests/test_ship_lab.gd and tests/test_shield_vessel.gd. The shield test opens with a control case - an ordinary interceptor is destroyed by the same rock - because "the shield vessel survived" means nothing unless the thing it survived is lethal. It then checks the shield is genuinely down afterwards by killing the vessel with a second rock while it cycles: without that, "absorbs a hit" is indistinguishable from permanent invulnerability.

Not in this ticket

Enemies still have no weapon - Projectile.gd is player-only - so "blocks shots" has nothing to block yet. Filed separately rather than widening this into a combat-model change, because it raises a real design question first: with no hit points, an enemy shot would be instantly fatal too.

Full suite: 52/52.

Done in 1cbae8f. **The Ship Lab** is a new building gated behind a new **Vessel Science** research node, with its own art (a test frame holding a vessel, with instrument booms sweeping round it - a workshop, not another factory), its own build-menu glyph, map marker and info popup. **Vessel research lives at the lab, not in the mothership tree.** That tree gates what may be built at all and is a strategic spine; these are repeatable tuning on vessels already owned, and mixing them would crowd the tree while making the lab a gate rather than a place you go. Levels cost `base * (level + 1)`, so the third point in something is not the price of the first. Upgrades are **read live rather than baked in at build time**, so researching one improves the ships already flying rather than only the next one built. Covered per category: | vessel | upgrades | |---|---| | Interceptor | Heavy Slugs (damage), Autoloader (fire rate), Targeting Array (range), Thrusters (speed + acceleration) | | Shield Vessel | Layered Emitters (+1 hit absorbed), Fast Cycling (recharge), Thrusters | | Transporter | Expanded Hold (carry capacity), Freight Engines (speed) | Two of those made existing systems mean more: the transporter had an *unlimited* hold until now (`take = min(want, rocks)`), so a capacity upgrade needed a real limit to raise; and its speed was a constant. **The shield vessel** is unlocked at the lab and then built at the ship crafter. The shield is personal, not a bubble. Ships have no health in this game - contact with an enemy or asteroid is instantly fatal - so "absorbs a hit" means surviving the collision that would otherwise have killed it, after which the shield is DOWN until it cycles back up. The ring is a `NeonPiece` child toggled with `visible` per #10, not a redraw of the hull. `vessels_owed` now carries the vessel TYPE rather than a bare count, so a shield vessel finishing while the player is on a planet's surface comes back as a shield vessel. ## Tests `tests/test_ship_lab.gd` and `tests/test_shield_vessel.gd`. The shield test opens with a control case - an ordinary interceptor is destroyed by the same rock - because "the shield vessel survived" means nothing unless the thing it survived is lethal. It then checks the shield is genuinely down afterwards by killing the vessel with a second rock while it cycles: without that, "absorbs a hit" is indistinguishable from permanent invulnerability. ## Not in this ticket Enemies still have no weapon - `Projectile.gd` is player-only - so "blocks shots" has nothing to block yet. Filed separately rather than widening this into a combat-model change, because it raises a real design question first: with no hit points, an enemy shot would be instantly fatal too. Full suite: **52/52**.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
metaheavens/spaceship#5
No description provided.