Version 0.16.0 #48

Merged
aslan merged 21 commits from imperfect-galaxy-work into main 2026-10-25 13:46:41 +01:00
Owner
No description provided.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A colony's Ships tab opened only with Shipyards, so ships landed at a colony
without them sat docked out of reach (the server's launch and scrap never
asked for Shipyards). The tab now opens while ships are docked there too, on
the Shipyard alone, Production disabled until Shipyards stand.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The game master (services/gameMaster, src/llm/openRouter.ts): once every
gameMaster.intervalHours of game time it reads the game (the human players in
full, the AIs as a summary and those a few cheap rules find stuck, the pirates,
the server's health, its last runs and notes), answers a plan to a strict JSON
schema, and the server carries each action out within its limits:
notifications to human players (GAME_MASTER), the pirates' mission fleets
against human players (FleetMission: raid, hunt or lurk), their orders, fixes
of an AI's memory (one made during a heartbeat kept by it) and capped grants.
Each run is a GameMasterRun. Production asks through OpenRouter's Batch API;
tests, live tests and development run it only with GAME_MASTER=on, asking
directly. Never within afterBootMinutes of a start. npm run gm: a dry run on
a database's world. Tried on the 0.15.1 dump on a scratch server.

The pirates are "☠️ Pirates": renamed at boot, and the pirates_skull migration
renames what their combats and notifications kept.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Aliens: an account of the server's, like the pirates, whose fleets only the
game master spawns (SPAWN_ALIENS) for a human player and despawns
(DESPAWN_ALIENS), or that leave by themselves after their stay. Three kinds
(Wanderer, Sentinel, Living Mist; ships/aliens), very advanced tech, no fuel,
loud, no stealth; their cargo is never shown. They fly past a player's things
without heading straight at them, sometimes wait a few hours near a colony,
fight only when fired on, and sometimes power a fleet down as they pass, until
it comes back by itself (ALIEN_POWER_DOWN). The first time a player sees one,
they are told (ALIEN_SIGHTED). Humans only; the AIs never see them.

The game master's spawns take a label that later actions in the same plan use
as fleetId or targetFleetId. Pirate stations and fleets, missions and aliens
now spawn out of every player's sensors (game/spawnSpot.ts), moving farther
out when they have to.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A fleet's, probe's or station's cargo hold card has Dump cargo: a slider for
each resource, a name for the pod, asked first. What it dumps floats in a
cargo pod behind it (a debris row of the new POD kind, one size, its picture
special/cargo-pod, turning once every 2 game minutes on the client), which any
fleet or station beside it whose player discovered it takes from with the
transfer panel (POST /fleet/:id/pod, within its holds' room); emptied, it is
gone. POST /fleet/:id/dump answers with the pod. The transfer, trade and dump
panels share their slider rows (how much there is, the slider, its number,
All or None as tall as the field; a row kept, its slider off, once the holds
are full) and their notes. The order menu offers no Orbit for the planet the
fleet orbits or flies into the orbit of already.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What a trade asks for is the transfer's slider rows too: no more than the
fleet's holds take once what it gives has left them (a colony's, its
storage), the posting's offers filled in as far as there is room, a row with
no room kept with its slider off; the "could take only" warning is gone.
A slider's number as typed still enables Offer before it lands.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A spawn's fromDirection (a compass point of the players' map, CORE or RIM)
as seen from its target: the game keeps it within half a compass point, out
to four times its distance, while a spot that way is out of every player's
sight, else any direction. The result says where the fleet came from (AU,
compass point, hours away), so a warning naming the way can be true.

A plan's `again` asks for another round: the next round sees its actions'
results, the pirates' missions and the aliens, up to gameMaster.rounds (3)
a run, and a round with no actions ends it. The run's limits, labels and
usage are shared across its rounds. A batch's conversation is kept in its
row (round, messages: migration game_master_rounds), and a later round's
failure leaves the run DONE with its error.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
An alien fleet spawns hours of its flight from its player, which for a fast
kind is hundreds of AU. Its mind looked for that player's things only within
searchAu (150 AU), so a game week's trial on the dump had a Warden 411 AU out
drift for its whole stay, unseen. The player it came for is now found at any
distance; searchAu limits only the other human players' things, once that
player has none.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SPAWN_DEBRIS places a real, salvageable debris field at a point it names,
under its name. It holds the resources it is given (limits.debrisPerResource
of each at most) or else a wreck's usual haul, or it is a STAR field that
tells its salvager of a star system nearby; limits.debris a run. Its state
lists the fields it placed, who found each and who salvaged it (yourDebris),
and its prompt tells it never to promise what none of its actions can make
true. A week's trial on the dump had it promise a derelict it had no way to
place; asked again with the players online, it placed the hulk beside the
rumour's drift and told both players of the find. The Galactopedia's Debris
article and the changelog tell of derelicts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The earlier subtests' gunships stay beside the target and fire at it too.
With 1,000 hull they destroyed it before the powered-up shooter fired,
whenever their random ids put them first in the tick, so "firing again"
failed about one run in four. Its hull is 1,000,000 now: 0 failures in 12
runs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
aslan merged commit 8b1c0844c5 into main 2026-10-25 13:46:41 +01:00
Sign in to join this conversation.
No reviewers
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
aslan/imperfect-galaxy!48
No description provided.