Version 0.17.2 #56

Merged
aslan merged 14 commits from imperfect-galaxy-work into main 2026-10-27 13:23:29 +01:00
Owner
No description provided.
Of two classes as large, the picture took the first stack and the formation
the more numerous class, so a fleet's panel and its ships on the map could
show different classes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each class is drawn as one ship more at each formation threshold its own ship
count reaches, at most formation.maxShips (5) in all: past it, the five classes
with the most ships keep one each and the places left go by their ships. A
fleet of a few ships in two classes had shown only one of them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A trade with an AI empire (an offer it accepted, or one of its accepted) and a fleet or station
given to it raise its relations with the other empire by what it got, worth at the resources'
values, against its own colonies' mining an hour at them: ai.json relations.trade and
relations.gift, perOutputHour (5) for each hour of its output, at most max a window (10 a trade,
20 a gift; the window reputation.json engagementHours, as before). They had been a flat +5 and +10,
once a window. A gifted fleet's notice says what it is worth (FLEET_GIFTED cost: its ships' build
cost and its cargo); what it is told of between turns is weighed against the output its last turn
saw (memory's output).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ai.json relations.gift.max 20 → 10, as a trade's.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The ruler's dialog gives the heading from the first end to the second.
- A ship's cargo bay is optional (a probe's isn't); one whose parts burn fuel
  with no hold is designed with a warning, NO_FUEL_HOLD: it never moves.
- On desktop the space menu opens 32 px right of and below the click, left of
  it when it doesn't fit on the right.
- Powering down takes 10 minutes (up still 30); powered down, a quarter of
  the signature shows.
- Game Statistics: economy, science and military points (OGame style: what
  buildings, research and armed ships, stations and defences cost at the
  resources' values, a point per 1,000) for the player, their alliance and
  the galaxy; the alliance's member count beside its name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A fleet that can warp but whose thrusters can't run beside its charging warp
drives (no fuel, or not the power) has its tick run again with its thrusters
off: with the power for its drives alone it keeps its order, stays where it is
until its charge is over, then jumps (warp burns no fuel). A ship needs
thrusters or a warp drive (a probe thrusters); one with a drive alone always
charges in place. The auto designer still gives every ship thrusters: the AIs
and pirates know nothing of warp-only ships. The fleet panel says Charging in
place, and the ETA counts a fleet without sublight speed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- A fleet that warps with no reactor says its fuel range is none needed in
  warp (on its solar panels and batteries), not out of fuel.
- The Statistics note names the unknown vessels as the game does.
- game/points.ts exports only what is used.
- AGENTS.md: the changed tests' descriptions (charging in place, points,
  formations, the designer's thrusters, the design rules, the ruler).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Panning zoomed out on a phone: the view data itself is 1-3 % of the main
thread; the lag is the entities the map holds (a phone never counts as
zoomed far out to the server, and stars and wormholes are kept for good),
then pixels. The plan, its decisions and steps; no code changed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
npm run benchmark:map: the map on a phone stand-in (Chromium in software,
390x844 at 3x, its CPU slowed 4x) panned zoomed out over an explored galaxy,
the real server code on a world in memory. The server takes planets,
asteroids and debris from a screen only while its zoom is at least
view.detailZoom (0.04): a phone's screen at the least zoom is under
maxViewportAu, so every pan swapped hundreds of sub-pixel things in and out.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Excalibur runs every entity of its scene every frame, on the screen or not,
and the map keeps every star and wormhole for good: after panning over an
explored galaxy a phone spent its frames on thousands of things far off.
The scene keeps every actor, but only those near the screen in its world
(game/culling.ts): put in within the screen and a margin, taken out past
twice that, never the selected one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A delta's lists come empty when nothing changed, which is truthy: every view
had gone over every planet's colony marker and fleet label. The server sends
the view's other fields only when changed (the shots with each new tick), a
detected fleet's speeds to six digits, and a planet only when it changed but
for its motion, which the client follows, at least once a minute (the user's
D3). What reads a planet's place outside the map asks the map.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
withSprite hands a loaded picture out at once (a promise's then had waited
past the frame, so every new thing drew its placeholder first).
npm run benchmark:map -- --zoom: a loop from the viewer's home system when
zoomed in. The user: "btw all todays changes should go for 0.17.2": this
work's notes say 0.17.2.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Its texture reaches 128 pixels past each edge of the screen, and while every
sensor circle moved alike (a pan) within that margin it is laid over the map
shifted, not drawn again: a pan no longer binds its framebuffer in the middle
of the map's every frame, which phones' tiled GPUs pay dearly for. Nothing
changes on the screen (the fog e2e test after a pan of 100 pixels).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The user: "btw all todays changes should go for 0.17.2". The changelog's
0.17.2 holds the day's entries (the nine 0.17.1 had gained since the morning
too, and the map on phones); 0.17.1 keeps yesterday's. Every 0.17.1 the
day's work wrote in code, tests and AGENTS.md now says 0.17.2 (by the commit
that wrote it); both package.json at 0.17.2. The Galactopedia's map article:
zoomed far out, what is too small to see shows only around your own things.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
aslan merged commit 314b8c838e into main 2026-10-27 13:23:29 +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!56
No description provided.