Commit graph

1,894 commits

Author SHA1 Message Date
Meta Vens
eeffcadb89 Name only CultLib's packages as canonical parity runtimes
The neighboring cultcache-rs, cultcache-py, cultnet-rs and cultnet-ts
repositories are defunct. Wire parity is held against CultLib\packages
(cultcache, cultnet and cultmesh runtimes) with C# as the reference.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 23:29:56 +02:00
Meta Vens
560779a4d3 Reserialize project settings for Unity 6000.3
The 6000.3 serializer adds its default fields (iOS thermal FPS limits,
androidDisplayOptions, metalUseMetalDisplayLink,
switchGraphicsJobsSyncAfterKick, m_UseUCBPForAssetBundles) on first open. No
setting changes value; this finishes the upgrade so every editor open stops
dirtying the files.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 23:22:37 +02:00
Meta Vens
6bd3e17690 Fix station docking bays, save-safe instance keys, and zero-weight draws
One rule now governs interior space: an empty hardpoint cell is usable, in
both UnoccupiedSpace and ItemFits. ItemFits used to refuse hardpoint cells
that UnoccupiedSpace offered, so stations failed to equip a docking bay.

CraftedItemInstance.Ingredients and Product move from keys 3 and 4 to 9 and
10, past every key the derived instances use. At 3 and 4 an older save reads
nil into a non-nullable Guid and fails to load.

WeightedRandomElements returns an empty array when every weight is zero,
instead of an array of nulls. LoadoutGenerator treats a missing Galaxy as
"every product available", the seam a fixture needs to generate loadouts
without a galaxy. ZoneGenerator skips a story station that fails to generate
and logs it, instead of throwing.

Verified: Aetheria.Shared and tools/AetherDb build headless; Unity 6000.3.24f1
batchmode compile succeeds; AetherDb doctor, station-fit and loadout pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 23:22:36 +02:00
Meta Vens
68fbce4a8a Define the CultCache migration target
Aetheria moves onto modern CultCache from CultLib, cache only. States the end
state for Aetheria and CultLib, the wire-parity and foundation invariants, the
probe evidence, and the questions the Imagination pass must answer before any
cut. Points the parked perfect-machine map at it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 23:12:42 +02:00
Meta Vens
2399d7b9ed Parse the settings asset with YamlDotNet
Unity assets are YAML, so parsing them is a solved problem. The hand rolled
indentation parser produced three bugs in sequences alone: bare scalar items
dropped, mapping items parented to the wrong node, then only the first item
of each sequence kept. YamlDotNet does the parsing; what remains is mapping
a parsed node onto a settings class by field name, with unknown keys
reported rather than silently misplaced.

The settings command keeps asserting counts, since that check is what caught
the parser both times.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 02:11:05 +02:00
Meta Vens
a63aa38f00 Read authored settings from the Unity asset
A fixture that invents curve and tier values measures a game nobody plays,
so the tool reads Assets/Resources/Settings.asset, whose GameSettings holds
plain ServerShared classes, and fills them by field name. The settings
command asserts counts rather than non-null: an empty array reads as
populated, and that lie cost two rounds of parsing bugs in sequences.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 02:09:34 +02:00
Meta Vens
285b57713f Clear dangling boss hull links, and stop the tool writing on read
Eight factions pointed at one boss hull GUID that no longer resolves,
shared wreckage from the database loss. PlaceFactionsMain gives a boss zone
to every faction carrying a BossHull, so each dangling link claimed a
chokepoint that could never spawn a boss.

AetherDb.Open no longer registers the name file store. CultCache subscribes
Add to a store EntryAdded, MultiFileBackingStore.PullAll re-emits what it
loads, and Add pushes to that type store, whose Push writes a file: opening
the cache rewrote all twelve name files, 4.4 MB, on every command. They were
byte identical, and it only surfaced as an error because Unity had one of
them memory mapped. Name files now load only on request, and the scope doc
records the underlying smell.

Adds commands: factions, clear-boss-hulls, save, loadout (runs the real
LoadoutGenerator against every hull), hardpoint-fit.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 02:05:33 +02:00
Meta Vens
9f9149bd2f Replace AetherDb scripts with one console project
Running loose script files caches a build per script and does not rebuild
when the referenced project changes, so scripts silently ran against stale
schemas: item-census held a binary predating FactionProductData and failed
with a TypeLoadException surfacing as a NullReferenceException elsewhere,
and station-fit last ran on a pre-role build. One project with commands
(doctor, census, station-fit, migrate-products) rebuilds through the normal
project graph, and shares one Open.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 01:27:18 +02:00
Meta Vens
b8ecfffd08 Mint faction products for existing designs
One product per design that carried a manufacturer, keeping its name,
description and maker. No design has roles yet, so every stat still reads
the item own workmanship and behavior is unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 01:12:13 +02:00
Meta Vens
8d93b937bc Author manufacturer variation as faction products
A design lists role names; a faction product is a manufacturer's branded
build of one, carrying its name, its flavor text, and a pseudo-gaussian
quality distribution per role whose mean is the technology put in and
whose deviation is their quality control. A PerformanceStat may name the
role whose quality it reads, unset reading the item own workmanship as
before, so old saves behave unchanged. Generation selects products rather
than designs, which makes what a faction makes the availability rule.

This is Njordr shape at one dimension: role names, per-role derivation
and per-product distributions carry over when quality widens into
dimensions. No parts exist yet; the product authors the role quality.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 01:12:12 +02:00
Meta Vens
95932da895 Record Njordr as the owner of item property derivation
Aetheria authors roles, per-role stat derivation, continuous part quality
and per-faction role competence: the same shape one dimension wide, so
migration widens quality into dimensions rather than restructuring. No
second owner of item property derivation grows here.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 00:22:08 +02:00
Meta Vens
ea11a418e4 Add item census script
Counts equippable items by kind and manufacturer and lists same-footprint
items duplicated across manufacturers.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 23:37:03 +02:00
Meta Vens
02058a3cdf Build ServerShared without Unity and add AetherDb scripts
Aetheria.Shared.csproj compiles ServerShared with MessagePack, UniRx
core, Ink and Unity.Mathematics from source against .NET Standard 2.1
(Unity's API level) with no Unity defines; a clean build checks that the
simulation stays engine-independent. tools/AetherDb opens AetherDB.msgpack
through the game's own CultCache for file-based C# scripts; station-fit
checks every station hull can take a docking bay.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 23:23:20 +02:00
Meta Vens
25ecb46fcd Generate stations that respect empty hardpoints and required items
UnoccupiedSpace now counts empty hardpoint cells as free, matching
ItemFits: general gear may use a hardpoint until hardpoint gear claims
it. LoadoutGenerator equips hardpoint gear before the docking bay, so the
bay cannot take the reactor's slot. Hulls, docking bays, controllers,
cargo bays and capacitors are required: if no manufacturer present in the
galaxy and known to the faction makes one, any manufacturer is used and
the database gap is logged, so a galaxy without AU still gets stations.
Manufacturer preference is allegiance / (1 + hops to headquarters); the
distance term previously never applied due to operator precedence, and
would have divided by zero in the headquarters zone.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 23:23:19 +02:00
Meta Vens
97a9e7a598 Tolerate unloadable types in ServerShared reflection scans
CultCache discovers DatabaseEntry types by scanning every loaded
assembly. Outside Unity, plugin assemblies that reference UnityEngine
throw ReflectionTypeLoadException and took the whole scan down; keep the
types that do load. Also fix GetAllGenericChildClasses reading and
writing the ChildClasses cache instead of its own.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 23:14:34 +02:00
Meta Vens
007350b327 Move Zenith reactor hardpoint off center
The centered 4x4 reactor left no 4x4 interior block free, so the only
docking bay could never fit and every non-tutorial station threw
InvalidLoadoutException. Edited by the operator in the database tools.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 22:42:28 +02:00
Meta Vens
3dcfaf9783 Delete commented-out code blocks
Git keeps the history. SimpleCommodityData records its retired
MessagePack keys so they are not reused against old data.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 22:14:58 +02:00
Meta Vens
cc7f2c8877 Remove dead code, unused plugins, and multiplayer remnants
Delete Economy.Server/Economy.Shared, LiteNetLib, network message types,
the texture-based Gravity duplicate, unreferenced scripts and agent
states, and unused plugins (MSAGL, NaughtyAttributes, AsyncAwaitUtil,
Allegorithmic, Localization samples, MrtTest, ThinkGear, QuickGraph),
plus vendored sample scenes, root zips/logs, and the stray Obsidian
folder. MainMenu logs faulted galaxy-generation tasks directly instead of
AsyncAwaitUtil's WrapErrors. Stop tracking UserSettings and the Wwise
.backup folder; ignore generated .sln/.csproj by pattern.

Game-system test scenes are kept. Playdead stays: VolumeCloudRenderer
derives from its EffectBase.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 22:14:57 +02:00
Meta Vens
e640aad65a Upgrade to Unity 6000.3.24f1
Editor-driven upgrade from 6000.1.10f1: patch-level package bumps,
importer re-serialization of legacy .meta files, and the regenerated
Input System wrapper. Verified by playing from Main Menu into ARPG.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 22:04:28 +02:00
Meta Vens
f568a7d14f Cut RethinkDB
Remove the vendored RethinkDb driver and its Linq provider, the Rethink
backing store, the already-stubbed RethinkConnection, the Rethink test
window, and the Rethink-only Remotion.Linq and Logging.Abstractions DLLs.
The database editor now works only on GameData/AetherDB.msgpack, with a
Save button replacing the dead Connect UI and broken JSON export.
RethinkTable becomes DatabaseCategory, which only groups editor entries.

Economy.Server still references Rethink; it was already unbuildable and
is handled separately.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 21:48:45 +02:00
Meta Vens
086b966c30 Record Unity-independent simulation as an invariant
Also itemize the coast-path preview as a navigation computer behavior.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 21:04:59 +02:00
Meta Vens
20ebb39ad2 Give fire control hit authority and plan navigation
Replace the aim-error and steering items with a ServerShared fire control
system that owns hit resolution and an MPC navigation planner.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 21:00:24 +02:00
Meta Vens
434c2611ff Adopt Three Gates shipping scope
Record the scoped-down rogue-lite plan on the legacy Unity game and mark
the CultMesh migration map as parked.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 20:40:36 +02:00
Meta Vens
5e6b6d17f3 Refuse agent scratch and sandboxed toolchain caches
The worktree carried 47 untracked entries: scratch logs, sandboxed npm/NuGet/
dotnet caches, and eight throwaway git checkouts totalling about 1.6GB, one of
them 1.2GB on its own. All were verified clean with no unpushed commits before
removal, so nothing was lost.

Scoped to the debris rather than everything ignored: Unity's Library/, Build/,
the generated .csproj files and Economy.Server/bin|obj are also ignored but are
expensive to regenerate, so they stay.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 15:08:26 +02:00
Meta Vens
7006a6b0dd Restore the stable legacy Unity project 2026-08-10 14:57:50 +01:00
Meta Vens
56a156ee87 Complete the Hangar to Terminus runtime path 2026-08-08 09:31:24 +01:00
Meta Vens
152db9e744 Launch Terminus through daemon-owned Hangar 2026-08-08 08:45:14 +01:00
Meta Vens
023a35944c Restore daemon-backed Unity launch 2026-08-07 21:10:44 +01:00
Meta Vens
7c46cd1060 Pin CultMath min-max rectangle release 2026-08-07 20:06:51 +01:00
Meta Vens
e9d1e04897 Establish shared Hangar deployment spine 2026-08-07 15:52:38 +01:00
Meta Vens
54895e28fe Define CultMesh authority runway 2026-08-07 14:46:32 +01:00
Meta Vens
c002d53c66 Define shared Aetheria mode progression 2026-08-07 14:27:49 +01:00
Meta Vens
04c0b77c94 Add entity-owned dynamic fog fields 2026-07-22 02:09:30 +01:00
Meta Vens
004c05d350 Keep entity fields aligned with orbital poses 2026-07-22 01:53:42 +01:00
Meta Vens
ec00373067 Return idle Aetheria sessions to ready 2026-07-22 00:19:29 +01:00
Meta Vens
165ecfc443 Defer Aetheria worlds until client activation 2026-07-22 00:12:13 +01:00
Meta Vens
c02348378c Adopt bounded Ymir persistence rollover 2026-07-22 00:02:55 +01:00
Meta Vens
2d5180534b Separate daemon build from launch 2026-07-21 23:53:37 +01:00
Meta Vens
fe4cd60d60 Decouple daemon from Unity Play lifecycle 2026-07-21 22:52:09 +01:00
Meta Vens
b312bfec3d Make Unity own daemon readiness 2026-07-21 20:10:13 +01:00
Meta Vens
f2f41ce164 Give thin Unity client its own Rider workspace 2026-07-21 19:42:04 +01:00
Meta Vens
c27e2ada7c Keep root Unity Eve packages coherent 2026-07-21 19:20:58 +01:00
Meta Vens
91f0a697da Record released generic cockpit ownership 2026-07-20 05:24:07 +01:00
Meta Vens
ab6face8e2 Let daemon gameplay state close the main menu 2026-07-20 05:22:39 +01:00
Meta Vens
53ecbdf32f Pin visibly themed Eve cockpit release 2026-07-20 05:06:32 +01:00
Meta Vens
155bdd0dea Advance Eve cockpit lifecycle package 2026-07-20 05:00:48 +01:00
Meta Vens
24b62ee627 Pin provider-owned Eve cockpit lowering 2026-07-20 04:54:04 +01:00
Meta Vens
33fe511c32 Document Aetheria Unity transport ownership 2026-07-20 04:33:58 +01:00
Meta Vens
80500fb3b7 Use released transport in Aetheria Unity development 2026-07-20 04:32:33 +01:00
Meta Vens
b068c28253 Refresh Aetheria semantic ownership verification 2026-07-20 04:21:41 +01:00