Commit graph Aetheria/Assets/Scripts/ServerShared
Author SHA1 Message Date
Meta Vens
3dc00e1225 Fix ServerShared for CultMath
CultMath's hash(float2) returns float, not uint, so ZoneGenerator folds its
bits into the zone seed with BitConverter.SingleToInt32Bits. MathResolver's
int2?[] entry used ArrayFormatter<float2?>; it now uses ArrayFormatter<int2?>.

Aetheria.Shared and AetherDb build headless with 0 errors, and AetherDb's
census, factions and hardpoint-fit output is byte-identical to the captures
taken before the swap.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 17:40:31 +02:00
Meta Vens
6140a06a0a Swap Unity.Mathematics usings for CultMath
Every Unity.Mathematics using, alias and qualified name under Assets\Scripts
and tools now names CultMath. The nine `using static ...noise;` lines are
gone: snoise lives on CultMath's math. UnityExtensions loses float4.ToColor
and Color.ToFloat4, which duplicate the bridge's ToColor and ToCultMath; the
float3 colour pair stays because the bridge has none.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 17:39:12 +02:00
Meta Vens
1bad87fc35 Reference CultMath instead of Unity.Mathematics
Aetheria.Shared.csproj drops the Library\PackageCache math sources and
references CultMath.csproj under the pinned CultLibRoot. The asmdefs drop
Unity.Mathematics; Tests overrides references, so it names CultMath.dll in
precompiledReferences. The manifest drops com.unity.mathematics (Burst and
Collections still resolve it) and adds org.gamecult.cultmath at
cultmath-unity-v0.2.1.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 17:38:54 +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
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
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
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
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
7006a6b0dd Restore the stable legacy Unity project 2026-08-10 14:57:50 +01:00
Meta Vens
7772d9eb36 Model station sensors through hardpoint scale 2026-07-13 16:53:25 +01:00
Meta Vens
5363714cde Persist daemon consumable behavior state 2026-07-13 16:19:35 +01:00
Meta Vens
2e622ead78 Guard daemon playable run generation 2026-07-06 22:06:33 +01:00
Meta Vens
bfcf1e8aa0 Remove legacy body key prefixes 2026-07-06 02:00:46 +01:00
Meta Vens
4d7bb65868 Integrate CultMesh UI and URP cleanup 2026-06-30 19:14:49 +01:00
Meta Vens
3616b6a2df Delete legacy loadout projector 2026-06-28 15:27:16 +01:00
Meta Vens
2381b407ec Split entity blueprint materialization names 2026-06-28 15:23:42 +01:00
Meta Vens
0cf4591b8f Centralize catalog item object lookup 2026-06-28 12:21:38 +01:00
Meta Vens
d37826ea9a Remove observed run projection shim 2026-06-28 11:44:28 +01:00
Meta Vens
63c396be42 Delete runtime projection helper remnants 2026-06-28 07:40:08 +01:00
Meta Vens
2e96660d48 Build typed Aetheria client surfaces 2026-06-25 18:09:33 +01:00
Meta Vens
7440eda8a9 Preserve daemon zone identity in projected galaxy 2026-06-21 19:00:01 +01:00
Meta Vens
73ea4ad5bb Remove Unity zone cache from galaxy model 2026-06-21 18:57:09 +01:00
Meta Vens
8cb1b28ea2 Render wormhole exits from daemon queries 2026-06-21 16:37:31 +01:00
Meta Vens
b353652316 Query asteroid render poses from daemon state 2026-06-21 15:47:39 +01:00
Meta Vens
ff02979056 Render entities from daemon frame identity 2026-06-21 15:38:59 +01:00
Meta Vens
be1207c585 Move runtime API namespace to Verse 2026-06-21 09:54:15 +01:00
Meta Vens
39a0dc8737 Sync daemon authority migration 2026-06-21 09:37:54 +01:00
Meta Vens
bd4a51f923 Cut GUID sidecars from zone runtime 2026-06-16 20:51:26 +01:00
Meta Vens
9c63c0a1af Delete dead PropertiesPanel reflection inspector 2026-06-16 19:38:02 +01:00
Meta Vens
1f12fe0f16 Delete dead inspector metadata specializations 2026-06-16 19:24:01 +01:00
Meta Vens
7ed5b4d7db Delete dead runtime projection reflection caches 2026-06-16 19:19:05 +01:00
Meta Vens
5d7f0ef9b2 Remove redundant runtime item catalog adapter 2026-06-16 19:14:35 +01:00
Meta Vens
4217394cc2 Carry typed orbit keys through zone construction 2026-06-16 16:57:18 +01:00
Meta Vens
397f3aff5a Key zone runtime collections on typed state keys 2026-06-16 16:48:00 +01:00
Meta Vens
43655ca96d Keep zone asteroid helpers on typed keys 2026-06-16 16:32:31 +01:00
Meta Vens
452184ea3a Resolve zone body and orbit keys natively 2026-06-16 16:27:33 +01:00
Meta Vens
d7ad15c35c Drop wrapper orbit guid fields from zone runtime 2026-06-16 16:20:30 +01:00
Meta Vens
be3db3d734 Keep orbit consumer edges on typed keys 2026-06-16 16:13:54 +01:00
Meta Vens
33f289dcac Move orbital runtime seam onto typed orbit keys 2026-06-16 16:07:20 +01:00
Meta Vens
cfc1ddac6d Keep orbit task targets on typed keys 2026-06-16 15:54:18 +01:00
Meta Vens
65456f09cd Keep behavior body targets on typed keys 2026-06-16 15:08:00 +01:00
Meta Vens
0471cb690f Move body and orbit key ownership into zone runtime 2026-06-16 14:22:52 +01:00
Meta Vens
6391176a40 Remove dead ItemManager cache residue 2026-06-16 13:11:38 +01:00
Meta Vens
5c691ea85c Delete faction legacy ID projection 2026-06-16 12:31:48 +01:00
Meta Vens
8ea97a08f8 Use faction keys for shell identity 2026-06-16 11:43:37 +01:00
Meta Vens
392c24a7da Use typed keys for faction shell links 2026-06-16 11:22:18 +01:00
Meta Vens
a29794232d Use typed faction keys for galaxy allegiance 2026-06-16 10:20:36 +01:00
Meta Vens
d496d2d04b Require typed faction keys in runtime state 2026-06-16 10:01:02 +01:00