Commit graph Aetheria/Assets/Scripts
Author SHA1 Message Date
Meta Vens
72e2383ea4 DrawAhead.BeltDraw keeps the belt's meshes by the belt's key; empty candidates and a zero kept count are named refusals; ZoneRenderer draws through DrawBelts and one DrawInstanced seam
The unseeded Random.Range prune leaves ZoneRenderer: the kept set is a function of the candidates, the kept count and the belt key.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 00:23:47 +02:00
Meta Vens
c5ad4676f7 DrawAhead.BeltDraw owns the whole per-rock draw list; ZoneRenderer iterates it with no mesh choice, sort or index arithmetic
Replaces RockMeshing/AssignRockMeshes and the renderer's slot bucketing (findings scale-lookup-unpinned,
renderer-index-wiring-unpinned). The build gate message names the mesh and the field, not the radii.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 23:12:33 +02:00
Meta Vens
2d61afa40f RockMeshRadiusBuildGate: a player build fails when an AsteroidMeshes radius is unfilled or stale (finding verify-not-gated)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 21:44:46 +02:00
Meta Vens
8412aa0dc3 DrawAhead.RockMeshing owns the mesh ranking and each rock's scale; a mesh with no radius is refused by name (finding renderer-wiring-unpinned)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 21:44:43 +02:00
Meta Vens
d592ca3223 Rocks take meshes by size and are scaled by gameplay radius over mesh radius (ruling rock-meshes-by-size)
DrawAhead.AssignRockMeshes ranks rocks by unworn size onto meshes in ascending radius; RockScale divides the
gameplay radius by the mesh's measured radius; ChunkAt is the one rock position for the renderer and the reticle
(ChunkHeight folded into it). InstancedMesh.Radius is filled and verified by RockMeshRadius. Tests pin the
assignment, the scale and that the renderer and reticle call DrawAhead (finding owner-not-pinned).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 20:44:13 +02:00
Meta Vens
8074d724a5 ChunkHeight comment names what the renderer does with pose.w
Comment only. Builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 18:38:58 +02:00
Meta Vens
72ed5cc15f ChunkHeight puts a rock's top on the floater layer: its centre is a drawn radius below (ruling asteroid-tops-at-layer)
DrawAhead.ChunkHeight subtracts pose.w, the radius the renderer scales the rock by; reticle and renderer both read it. DrawnPoseTests pins top == layer at radii 2..9. Builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 18:34:20 +02:00
Meta Vens
da2a7cc56a Merge origin/master into asteroid-floater-layer 2026-10-17 18:25:01 +02:00
Meta Vens
7d1106a907 Stat-field resolution cache is concurrent: parallel catalog opens corrupted the shared Dictionary
Two test classes opening the catalog at once threw 'concurrent update' from
ValidateStatModifiers; the cache is static.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 16:25:49 +02:00
Meta Vens
7dddcc4727 Merge eureka/aetheria-gravity-floater-fixtures-wells (floater-fixtures-wells, head d6380ca8)
Origin branch lagged at c631e09f; merged the closed head d6380ca8 from the shared object store (branch hands/ag4-floater-fix, unpushed).

Spec aetheria-gravity:cut_spec:cut-floater-fixtures-wells.r1; report h1; Soul s1 holds.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-17 15:03:43 +02:00
Meta Vens
1349953500 Shape.SetLine writes through the indexer so it invalidates the caches; footprint tests pin refusal Position and a wide shape
Builds: yes (Shared-only; verified on Yggdrasil in the report).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 14:33:41 +02:00
Meta Vens
d6380ca8e0 DrawnPoseWiringVerify: the planet passes within about 8 u of both floaters; the guard names the heights it saw
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 14:28:27 +02:00
Meta Vens
417ac9c76a DrawnPoseWiringVerify: the planet passes within about 20 u of the pickup and mine, with a wider softening, so the field moves over a lead
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 14:23:17 +02:00
Meta Vens
cc243e7f7c DrawnPoseWiringVerify: bind the prefabs to the wells zone directly, no ZoneRenderer
A renderer loading a zone with a sun and a planet needs the planet prefab, the map and a GPU; the check pins the presenters' Place, so the prefabs are bound as LoadFloatingItem and LoadMine bind them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 14:14:05 +02:00
Meta Vens
b3eb6b0c37 Floater fixtures: planets placed where the field changes under the floaters; probe removed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 13:56:32 +02:00
Meta Vens
be198593cc Floater fixtures: orbits and planets live in the run store, so the fixtures open one
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 13:53:09 +02:00
Meta Vens
f37949f139 Studio: HardpointFootprintDrawer paints a hardpoint's footprint over its hull's cells; the hull drawer tint reads HullFootprint.Cells
Editor code; not yet compiled (Unity batch compile at the end).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 13:50:50 +02:00
Meta Vens
d76b27673a HullFootprint: the one footprint cell reading and edit rule (grow, trim, refuse last cell), with tests
Not yet built or run (verify job at the end).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 13:49:45 +02:00
Meta Vens
7a44e0c00c Shape: one dirty flag invalidates Coordinates, AllCoordinates and CenterOfMass; Resize marks dirty
Resize keeps its fill (new cells on): the hull drawer's width grow relies on it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 13:48:35 +02:00
Meta Vens
71fa9411c6 Belt rocks and their reticle are drawn on the floater layer over the field by DrawAhead
DrawAhead.Chunk/ChunkHeight (ruling asteroids-on-floater-layer); ZoneRenderer and the
chunk reticle both read it; ChunkWorldPosition and the renderer's global are gone.
Fixes the reticle sitting off the rock by |field|. Test: AChunkIsDrawnOnTheFloaterLayerOverTheField.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 13:48:34 +02:00
Meta Vens
2055e18d3e Delete AsteroidVerticalOffset: setting, asset line, shader global, and the asteroid shader's field read
Rock height leaves the shader; DrawAhead owns it (next commit). Does not build alone:
ZoneRenderer and ActionGameManager still reference the deleted names.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 13:48:29 +02:00
Meta Vens
c631e09fe8 Floater fixtures: the grab-point test and the wiring verify run over a moving well
PickupTests builds the zone over a sun and a planet on a rail, asserts the field differs between the ship's point and the item's and between start and end of the run, and checks each grab event at the zone time it was published. DrawnPoseWiringVerify gets a sun and a planet near the pickup and mine, requires the field under each to move with the drawn time, and checks the pickup's y as well as the mine's. Not compiled or run yet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 13:47:52 +02:00
Meta Vens
6fe7f7cecb Merge eureka/aetheria-gravity-children-within-reach (children-within-reach, head cf242106)
Merged into master f937662d. No textual conflicts (auto-merged: ActionGameManager.cs,
Belt.cs, LockOn.cs, RunStartTests.cs, ScenarioTests.cs, AetherDb/Program.cs).
GameData/Aetheria.cc untouched by the merge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 11:52:44 +02:00
Meta Vens
b13aa67efd Place: a belt fills its slot between its neighbours' spacing, the Roche margin and the window
Replaces the symmetric half-width about the chain position (which collapsed a belt at the end of its
slot to a line, finding belts-collapse-to-a-line) with the slot interval: the belt sits at the slot's
midpoint and its half width is min(authored width, slot) / 2 (ruling belt-fills-its-slot). The chain
still places belts as massless points, so no fold count moves. Builds; tests follow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 09:00:04 +02:00
Meta Vens
ac5cbcc51b EW 3 fix: a contact is hostile on the observer's own permission, with tests for trespass through Zone.Update
Entity.IsHostileTo read other.PresencePermitted in its claimed-owner term where the spec and map S2
say the observer's own, so a trespasser never held the owner's patrol hostile. Tests: the trespasser
(player or not) holds the patrol hostile and its guns are not safed, a permitted neutral does not,
a ship tracked in open space turns hostile on entering the Critical area through ticks (pins the
per-tick stance refresh), and a third party does not treat a trespasser as hostile (pins the owner gate).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 08:10:29 +02:00
Meta Vens
49423b61fe EW 3: allegiance is the observer's belief; telemetry with the track, grudges from acts, one stance writer
Cuts WatchForGrudge, PerceivedStanceOf, the recursive IsHostileTo and the inline compare-and-write; adds _telemetry (ReceiveTelemetry at track entry), Provoke (Track paint, committed shot), RefreshStance, BelievesTrespassing. Not yet verified: unbuilt, tests unrun.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 06:45:51 +02:00
Meta Vens
c727141a2f Scenarios: Belt and Lock On take the seeds that hold their conditions under the new placement
Belt: seed 86 (484 rocks, scanned over seeds 1-90). Lock On: seed 1 (the staged hostile settles below the detection threshold).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 05:40:34 +02:00
Meta Vens
2111174adf Stations: a candidate rail clears each massive sibling's extent by the largest station or turret reach
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 05:27:47 +02:00
Meta Vens
513d0c4393 Place: ring merge decided on the heavy member's final mass; a bodyless node keeps a cusp as the one body it would become; tests follow
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 05:25:26 +02:00
Meta Vens
ed9f9930dd Place: a sole root's ring also folds when it cannot keep its heavy member outside the Roche margin; the entrance station falls back to the heaviest root of childless roots; tests follow
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 05:21:11 +02:00
Meta Vens
e83f9a2ed1 Merge eureka/aetheria-release-minimap-asteroids-setting (cut-cut-minimap-asteroids-setting r1, h1) into master
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 04:58:22 +02:00
Meta Vens
84337de569 ZoneGenerator.Place owns every generated distance, fold and belt width
PlanetSafetyRadius, ChildDistanceMinimum/Maximum, ExpandSolar's distance series
and the window filters are deleted. Place (ported from replace.py, root window
from rootReach per root-window-floor) lays children inside-out, folds the
lightest family while the outermost overflows, stretches to the window, merges
rings that cannot keep their heavy member outside its Roche margin and sets
belt half widths. Stations pick well-bearing, sibling-clear off-ring bodies;
the tutorial entrance falls back to an orbit round a root node; turrets stop a
side when within the base body's extent. GenerateZone/GenerateArena take
PlanetSettings. Not yet built.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 04:55:57 +02:00
Meta Vens
781607763e WellTree: SubzoneReach is one public static; the strengthless-orbit mean rule is deleted
The nearest-anchor rule (Reach x distance to the nearest other root) moves to
WellTree.SubzoneReach(anchors, root) so the generator spells it once; the
instance method returns max(it, floor). PullAround no longer gives a
strengthless orbit on a ring a period of its own (binaries-orbited-from-afar);
its test goes with it.

Builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 04:55:48 +02:00
Meta Vens
d7f30ed165 Merge eureka/aetheria-release-faction-play-1 (cut-faction-play-1 r3, h6) into master
Catalog GameData/Aetheria.cc regenerated by replaying doctrine-catalog apply on the merged catalog, not taken from either branch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 04:50:24 +02:00
Meta Vens
6179846249 Merge eureka/aetheria-release-product-lines-weapons (cut-product-lines-weapons r5, h4) into master
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 04:48:14 +02:00
Meta Vens
b70372963a Delete the minimap asteroids setting; minimap belts always draw
Ruling minimap-asteroids-setting-deleted. PlayerGraphicsSettings key 1 stays
retired so old saves load; OldPlayerSettingsLoad now writes the old 3-element
array by hand. MapPresenterSmoke asserts a belt draws with the map screen
closed. Not built or tested yet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 04:36:13 +02:00
Meta Vens
09a7f18985 Merge eureka/aetheria-gravity-well-law (cut well-law; Soul verdicts s1-s4)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-17 03:49:59 +02:00
Meta Vens
843acb5341 faction-play-1: pin the vent in FollowState, pins to 10%, drop the dead LockAlarm
Combat.cs loses its unused LockAlarm constant. ConsumableAiTests gains a following agent that vents. FlightTests adds
follow-velocity, pull and compliance-entry cases a tenth either side of their thresholds and a hail member that is
nearest only with z halved.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 03:49:37 +02:00
Meta Vens
82362da9d5 LockOnSituation: the warning is measured against the hostile's live bearing at the first lock, limit 0.5 deg
The staged line stopped being the hostile's line once consumable-ai r3 gave it a flanking approach. The message records the drift from the staged line. LockOn.cs's 5-degree staged-match claim is removed. Builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 02:47:53 +02:00
Meta Vens
8f20cd3664 Merge map-presenter (aetheria-release cut map-presenter r1; closing verdicts s1 and s2) 2026-10-17 01:17:41 +02:00
Meta Vens
39c7508e38 Merge boss-gate (aetheria-release cut boss-gate r2; closing verdict s3) 2026-10-17 01:17:38 +02:00
Meta Vens
4920b2c9c0 MapPresenterSmoke pins icon axes and heading; capture proves deep-well pixels; belt benchmarks at 1000/2250/4000
Smoke asserts each icon's x and z against the sim position (non-symmetric, ships ride at y 50 and -90) and the
yaw from the forward heading with a near-vertical rolled hull whose eulerAngles.y differs. MapPresenterCapture renders the
scene's Map Overlays and Map Tint cameras to pixels. MapBeltPerf measures base (MapBeltPerfBase, verbatim
AsteroidBeltUI) and head as median/IQR of 21 runs. All build.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-17 01:02:39 +02:00
Meta Vens
6f31375def Flight: a member's friendly override keeps it from following a flightmate's track; consumable-ai fixture orbit built on the zone
The union picture stays the flight's; the per-member override is read where the member chooses its bearing. A first
version dropped the track from the whole picture and silenced a hostile unaffiliated flightmate (SmokeRoundsStepped
AiFusedDiscipline).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 00:40:59 +02:00
Meta Vens
2bb08a91ee Flight: a track any member made friendly is out of the picture; pins for the s4 findings
The flight builds the picture, so it is where per-member friendly overrides meet; the track is dropped there. New
pins: a tuned doctrine survives doctrine-catalog apply, the follower's velocity match and pull at scale, compliance on
a diagonal, the hail speaker and engaged pick off-axis. Not built or run yet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 00:21:43 +02:00
Meta Vens
0e40a66592 Vent on a Track paint in every agent state: Agent.Update owns the vent, CombatState keeps the overdrive
Ruling vent-in-any-state. The vent decision (own Track paint above .5, one of a kind through TryActivateConsumable)
moves out of CombatState into Agent.Update, which every state runs; CombatState's overdrive asks Agent.TrackAlarm so a
venting tick still does not overdrive. ConsumableAiTests: AVentDoesNotNeedAnyEnemyInSight is master's premise again
(empty VisibleEnemies), a patrolling agent has its own test, and the fixture zone has one orbit so an unengaged pilot
patrols it. Not built or run yet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 00:21:40 +02:00
Meta Vens
4694366d98 Map presenter: ShowAsteroidsInMinimap stays (head's belt cost misses 0.1 ms); belt upload via SubUpdates; settings key restored
The setting gates belts on the minimap again, through MapPresenter.BeltsOnMinimap; the map screen always draws them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 23:54:45 +02:00
Meta Vens
07f0037148 MapBeltPerf: belt cost per frame in CPU ms and managed bytes; script metas
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 23:41:39 +02:00
Meta Vens
350c40236b MapPresenterSmoke: deep planet, yaw-only tilt, one draw per kind, one belt draw, fade; capability smoke binds an icon
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 23:40:15 +02:00
Meta Vens
35406653b6 GravityField: the band potential's promise is the float32 bound measured, 1.8e-6; the sweep covers the taus above the seam
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 23:30:31 +02:00
Meta Vens
281745394b Map presenter: one owner places every map icon in 2D, belts become one instanced draw (not yet compiled)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 23:26:26 +02:00