Commit graph

2,595 commits

Author SHA1 Message Date
Meta Vens
35ea0da431 Map: sim speed r2, the census of Unity-owned sim facts and their owners, body facts T11-T14, drawing ahead
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 14:30:31 +02:00
Meta Vens
6d427b7aa9 Map: sim speed, one fixed-step SimClock owning the scale, body facts T1-T10, for sim-speed r1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 14:03:31 +02:00
Meta Vens
eafc4352a1 Map: retiring the LonginusX and parking the aether drive, body facts R1-R6, for retire-longinusx r1 and evasion-term r6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 13:57:05 +02:00
Meta Vens
516af3e5c1 Map: authored per-weapon tracking table, top speed on the hull (M32 corrected), plight provenance, for evasion-term r5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 13:33:08 +02:00
Meta Vens
1c73f8e419 Map: evasion's mount term (angular velocity against tracking rate), the footprint ladder, body facts M30-M33, for evasion-term r4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 13:07:46 +02:00
Meta Vens
c4357eeee6 Map: tracking per gun, with body facts M27-M29, for evasion-term r3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 12:35:42 +02:00
Meta Vens
cf0979481f Merge station-services: sell and repair at a docked station, priced by one engine-free owner
Soul gate closed at verdict cut-station-services.s4 (head daa9a839). Merged under operator ruling aetheria-release:ruling:completed-cuts-merge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 12:24:38 +02:00
Meta Vens
daa9a83940 StationServicesTests: pin partial-cell armour wear and a repair fraction above the sell fraction
Armour repair is priced at fractional wear (a fraction of a cell on every cell, and a thousandth of one cell), and
gear repair is priced exactly when RepairFraction exceeds SellFraction.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 04:05:50 +02:00
Meta Vens
467a50431a StationServicesTests: armour repair is priced at odd and even hull prices
An armour price one credit low survived: ceil absorbs it at the fixture's even hull price. The armour test now runs
the same wear patterns at five hull prices.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 03:01:19 +02:00
Meta Vens
2ac420edec StationServicesTests: pin the repair-sell seam and the armour and gear repair prices
A price and durability sweep (1..3000 by 20, three fraction pairs) and the 360 at 7 of 20 case assert repairing then
selling never nets a credit. Armour tests wear several cells, partial and full strip, different cell values, and
check every cell is restored and the cost is the worn share of the hull price. A gear test pins the repair share at
odd and even prices.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 02:08:39 +02:00
Meta Vens
73dd96be00 StationServices: a repair share is never below the sell value it adds, rounded in the sell price's own function
Selling floors price * fraction * condition in doubles while repair ceilinged a separate expression, so the two
disagreed by one credit for some prices (GetPrice 360 at durability 7 of 20). SellValue is now the one sell
rounding, and RepairShare charges at least SellValue(whole) - SellValue(worn), so repair-never-profits holds exactly.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 02:08:37 +02:00
Meta Vens
68d80968e8 TradeMenu: the Price column shows and sorts by StationServices, and buys go through TryBuy
The column's sort key was the raw design price; it is now the shown price, the sell price while selling. Buy affordability and the credit charge move to StationServices.TryBuy, so a purchase costing exactly the credits held succeeds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 00:47:08 +02:00
Meta Vens
0857dbe15c StationServices: repair mends armour, never costs less than the sell value it restores, and owns the buy commit
RepairCost adds the worn share of hull armour priced as that share of the hull's price, and TryRepair restores it. The per-unit-of-wear charge is the larger of RepairFraction and SellFraction. TryBuy checks credits with the same boundary as TryRepair and charges after delivery. A 100-unit ore sale pins the commodity sell scale.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 00:47:07 +02:00
Meta Vens
e75083fec8 Map: evasion as unpredictability, with prior art, body facts M23-M26 and the revised design
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 23:56:56 +02:00
Meta Vens
787715ad4a TradeMenu prices every buy through StationServices.BuyPrice; the list column, the quantity cap, the check and the charge agree
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 22:56:06 +02:00
Meta Vens
1a42ac7758 StationServices.BuyPrice: the one number the station charges, which the buy path shows, checks and charges
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 22:56:05 +02:00
Meta Vens
864bb0c6a4 StationServices tests: hulls five cells square, so a second bay has an interior cell to sit in
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 22:53:10 +02:00
Meta Vens
1baa89645d StationServices tests: a full first station bay does not refuse a sale; worn docking bays are mended
Kills the two survivors Stryker left in StationServices.cs: Any() to All() over the station's bays, and Concat() to Except() over the docking bays.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 22:50:58 +02:00
Meta Vens
c82b28851a StationServices tests: a full first station bay does not refuse a sale; worn docking bays are mended
Kills the two survivors Stryker left in StationServices.cs: Any() to All() over the station's bays, and Concat() to Except() over the docking bays.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 22:49:57 +02:00
Meta Vens
646057f2c6 Map: the evasion term and missile odds, with body fact M20 and the revised missile design
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 22:35:57 +02:00
Meta Vens
7f51d46d71 Map: missiles with fuel and seekers, with prior art, body facts M15-M19 and the revised design
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 22:01:41 +02:00
Meta Vens
b4946613fd Target: reframe "legacy first" as "ship the game"
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 21:59:06 +02:00
Meta Vens
c7432f39a8 Map: missiles and point defense, with prior art, body facts M1-M14 and the authority map
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 21:25:10 +02:00
Meta Vens
26f21e3206 Map: firing on solutions, with prior art, body facts and the revised authority map for the controls cuts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 20:18:48 +02:00
Meta Vens
b817541647 StationServices.cs.meta: the Unity import record for the new script
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 19:55:01 +02:00
Meta Vens
9308f71b78 StationServices tests: a single unit of seven-credit ore sells for three, rounded down
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 19:43:44 +02:00
Meta Vens
e1296f1fac Map: Controls section, with prior art, body facts and the authority map for the facing-separate-from-aim rebuild
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 19:41:16 +02:00
Meta Vens
c204397cb0 TradeMenu sells and repairs through StationServices; credits seed from the stage or the save
The hardcoded credits initializer and its stale scene serialization go. Buy charges the hull price it checked. Sell is a
mode of the trade list over the selected bay; Repair is a foldout option for the docked ship.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 19:30:34 +02:00
Meta Vens
9651f62ad4 The run's credits are saved and seeded: SavedGame key 13, ScenarioStage.Credits, Staged.Credits
RunSave.Capture takes the credits; a scenario may set the starting amount, defaulting to the gameplay settings'.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 19:30:32 +02:00
Meta Vens
39b6d28f3a StationServices: one engine-free owner for sell price, repair cost and the sale and repair commits
Settings gain SellFraction, RepairFraction and StartingCredits. A sale pays the price scaled by condition and moves the
item into a station bay or refuses with everything unchanged; a repair restores every durability and charges the wear,
or refuses when short.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 19:30:31 +02:00
Meta Vens
228f241e53 Merge eureka/aetheria-release-target: the release target and map land on master, rewritten for the demo
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 19:12:03 +02:00
Meta Vens
6a1bb47758 Target and map: the first release is the demo
Rewrites the release target for the demo cut (one gate, one region, one boss, a fixed cast of Pirates, Zhestokost, Lucent and AU, called a demo). Adds the map's Demo scope section with body facts D1-D6 and the scope table, and sweeps four stale docs the design review listed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 19:11:46 +02:00
Meta Vens
2a6323cc72 Docs: mark the mining cut maps superseded in part and F1 fixed after the mining merge
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 18:29:32 +02:00
Meta Vens
985e65696c Map: mining index as built on master df7c44f2
Records the targeting index and Entity's press queries as built: their owners, inputs, outputs, forbidden writers, verification layer, and live seams. Marks L3 and L5 as historical.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 18:29:25 +02:00
Meta Vens
df7c44f2e1 Merge eureka/aetheria-release-mining: the targeting index, best-first target queries, and the end of the belt freeze
Mining Cuts 1-3, the general targeting index (ships and belts), and next/previous/reticle as index queries on Entity, with master merged in and the catalog's field kinds rebuilt. Soul held mining-index-pins, mining-target-queries (two passes) and mining-merge; the Unity compile and both ships smokes pass. Mining yield (Cuts 4, 5, 7) is not in this merge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 18:24:29 +02:00
Meta Vens
a83aa54e09 Catalog: author the Asteroid field kind (AetherDb field-kinds apply on master's catalog)
GameData/Aetheria.cc 70a7b0a9 -> 78fe2afe (12703072 bytes): one FieldKindData
record, Asteroid, cross-section 5, weight 1. Run on Yggdrasil from the merge
commit's tree, output pulled back byte-identical. Fixes
TheShippedCatalogHasAPickableFieldKind and makes master's strict Exact weapon
assertion hold on the rewritten catalog.

Builds: both commits build; the previous commit fails one test by design, this one passes 837/837.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 15:41:49 +02:00
Meta Vens
d9f85dc639 Merge origin/master into mining: resolve five conflicts by owner, delete the belt-task machine
Mining owns belts, chunks and target picking; scenarios owns admission and run
staging; master owns ships and fire control (rule scenarios-cut.md S4).

- AetheriaStores.CatalogTypes: nine-type union, master's list plus FieldKindData, no Scenario.
- tools/AetherDb/Program.cs: both cases (ship-authoring, field-kinds), one usage string.
- Zone.cs: master's MineAsteroid dropped (mining deleted its inputs); scenarios' SettleBelts and its three calls deleted.
- RunStartTests: the two belt-task tests deleted (they read belt.Transforms and MineAsteroid).
- FireControlCut124Tests: master's strict Exact assertions; mining's CompatibleDrift allowance and its comment dropped.
- GameData/Aetheria.cc: master's pointer 70a7b0a9. This commit lacks the Asteroid field kind in the catalog, so
  TheShippedCatalogHasAPickableFieldKind fails here by design; the next commit rebuilds it.

Builds: this commit builds (verified at the end with commit 2); the catalog pin test fails at this commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 15:29:29 +02:00
Meta Vens
561a21f3b2 Mining target queries tests: the blind ship needs no tick; it has no equipment to bring online
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 01:20:37 +02:00
Meta Vens
9e10166c76 Mining target queries tests: press pruning pinned by per-press examined ceilings near the measured costs
A second density-equal belt size and reach, held-target presses and the reticle at three headings,
each ceiling within about 10% of the measured count; the shared ceiling drops from 1500 to 700.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 01:19:23 +02:00
Meta Vens
c57466a398 Mining target queries tests: tie-break across belts by field key, and nearest-first pruning from no target
Pins two Stryker survivors: Entity.Order's field comparison and DistanceKey.Bound's forward bound.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 00:06:30 +02:00
Meta Vens
7a01e608ba Mining target queries tests: a launcher-only ship may see a ship but picks no rock; name the press ceiling
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:49:55 +02:00
Meta Vens
793fdc8789 Mining target queries tests: pick the sensor that sees a share of the rocks in reach; report every press cost together
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:44:38 +02:00
Meta Vens
60383cf00e Mining target queries tests: brute-force order, farthest, smallest angle, cost, reach, enemies
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:38:21 +02:00
Meta Vens
ec2042b390 Mining target queries: reticle, next, previous and nearest are Entity's best-first index queries
The four handlers in ActionGameManager call Entity.TargetUnderReticle, TargetNext,
TargetPrevious and TargetNearestEnemy. TargetCandidates, which built, sorted and
searched every visible ship and rock per press, is gone. Previous with no target
takes the farthest.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 23:38:20 +02:00
Meta Vens
a24ffd77db Merge eureka/aetheria-release-scenarios-menu: every new run comes from a scenario, launched from the New Game submenu
Tutorial Galaxy and Main Galaxy are scenarios; six test arenas show in editor and
development builds. RunStart owns new-run staging; Zone.Admit stays the one admission.
Galaxy zone linking moves to a double-precision Delaunay (the vendored float hull
dropped zones; ~2% of galaxies threw). A fixed seed fixes every fit; a failed start
keeps the saved run and says why. Soul s1 and s2 held (cut-scenarios-menu.h1, h2).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 01:35:22 +02:00
Meta Vens
8cd68f4e65 Pin that a failed start's own writes are removed: the failed starts write a record the saved run does not hold, and the open store must not keep it
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-03 22:36:04 +02:00
Meta Vens
d44df96fb0 SeedRules scrambles the item random between the arena and staging, so the staging step's own seed is pinned
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 22:04:17 +02:00
Meta Vens
8a1e205cf0 A new run replaces the saved run only once it has staged; a failed start says why and leaves the saved run
Launch cleared the run store before generating, and a generation or staging failure only reached the log: the
Generating Galaxy dialog stayed up, StartGame threw, and the saved run was already gone.

RunSave.Replace runs a start with the saved run still stored: when it returns a staged run the saved run's records go,
and when it returns null or throws, only the records it wrote (the arena's orbits and bodies) go. StartGame's
new-run branch is StartScenario, chosen by PendingScenario rather than by the absence of a SavedGame; it mints into an
empty ledger, and a failed start clears CurrentGalaxy (so quitting saves nothing) and refuses on the main menu with
every failure. Launch no longer clears; a galaxy that throws is refused on the title menu. The menu offers Continue
whenever no run is live, which replaces MainMenu.InGame (cut, with its prefab value and scene override), so a
failed start can resume the saved run in place.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 22:03:50 +02:00
Meta Vens
02e7fd4b7e A fixed seed fixes every fit: RunStart seeds the run's item draws from the galaxy's seed
ScenarioStage.Generated picked from ItemManager.Random, which is clock-seeded per process and advances in play, so a
relaunch of Djinni Shakedown or Long Haul in one session gave the player a different fit; every branded lot's
workmanship and role fills came from the same clock stream, so arena gear and explicit fits varied in quality too.
Galaxy now keeps the seed it was generated at, and RunStart.GenerateArena and Stage each reseed the item manager's
random from it, one stream per step, so what runs between them cannot shift either.

SeedRules relaunches every fixed-seed scenario around a clock-free Main Galaxy launch and a scrambled item random,
and compares the galaxy (links, factions, homes, exit too), the arena down to each item's maker and workmanship, and
the staged fits.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 22:01:17 +02:00
Meta Vens
4d1334e044 Arcs runs at seed 103 again, as the spec sets it: its prelude galaxy generates now that every zone is linked
Reverts 0854d91d.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 21:59:18 +02:00