diff --git a/.voidbot/state/aetheria.cc b/.voidbot/state/aetheria.cc index 29aeb6907..4757dbf5c 100644 Binary files a/.voidbot/state/aetheria.cc and b/.voidbot/state/aetheria.cc differ diff --git a/Assets/Scripts/ServerShared/RuntimeEntityBlueprintProjector.cs b/Assets/Scripts/ServerShared/RuntimeEntityBlueprintProjector.cs index ec4dc2662..50145f717 100644 --- a/Assets/Scripts/ServerShared/RuntimeEntityBlueprintProjector.cs +++ b/Assets/Scripts/ServerShared/RuntimeEntityBlueprintProjector.cs @@ -36,9 +36,6 @@ public static class RuntimeEntityBlueprintProjector blueprint.DockingBayAssignments = entity.DockingBays.Select(x => entity.Children.IndexOf(x.DockedShip)).ToArray(); blueprint.CargoContents = entity.CargoBays.Select(b => b.Cargo.Select(i => (i.Value, i.Key)).ToArray()).ToArray(); blueprint.DockingBayContents = entity.DockingBays.Select(b => b.Cargo.Select(i => (i.Value, i.Key)).ToArray()).ToArray(); - blueprint.Armor = entity.Armor; - blueprint.Temperature = entity.Temperature; - blueprint.Conductivity = entity.HullConductivity; blueprint.Children = entity.Children.Select(CaptureBlueprint).ToArray(); blueprint.WeaponGroups = entity.WeaponGroups.Select(wg => wg.items.Select(item => entity.Equipment.IndexOf(item)).ToArray()).ToArray(); return blueprint; @@ -107,17 +104,6 @@ public static class RuntimeEntityBlueprintProjector foreach (var (position, item) in blueprint.DockingBayContents[bayIndex]) entity.DockingBays[bayIndex].TryStore(instantiate ? itemManager.Instantiate(item) : item, position); - if(!instantiate) - entity.Temperature = blueprint.Temperature; - - if(!instantiate) - entity.Armor = blueprint.Armor; - - var hullShape = itemManager.GetRuntimeShape(entity.Hull); - - foreach(var v in hullShape.Coordinates) - entity.HullConductivity[v.x,v.y] = blueprint.Conductivity[v.x,v.y]; - entity.WeaponGroups = blueprint.WeaponGroups.Select(itemIndices => { var items = itemIndices.Select(i => entity.Equipment[i]); @@ -148,9 +134,6 @@ public abstract class RuntimeEntityBlueprint public (int2 position, EquippableItem item)[] Equipment; public (int2 position, EquippableItem item)[] CargoBays; public (int2 position, EquippableItem item)[] DockingBays; - public float[,] Temperature; - public float[,] Armor; - public bool2[,] Conductivity; public int[] DockingBayAssignments; public (int2 position, ItemInstance item)[][] CargoContents; public (int2 position, ItemInstance item)[][] DockingBayContents; diff --git a/docs/aetheria-perfect-machine-map.md b/docs/aetheria-perfect-machine-map.md index 4997c0e09..8d50e490c 100644 --- a/docs/aetheria-perfect-machine-map.md +++ b/docs/aetheria-perfect-machine-map.md @@ -123,12 +123,14 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted. action-bar bindings, and current faction relationship rows through the runtime commit log during run checkpoints; `RuntimeZoneBlueprint` and `RuntimeEntityBlueprint` remain runtime construction/loadout projections - rather than durable file formats. Runtime blueprint restore now iterates typed - hull shape rows when restoring saved conductivity, and blueprint price - aggregation uses typed runtime item prices through `ItemManager` instead of - hydrating `HullData.Shape` or `ItemData.Price`. Runtime blueprints no longer - capture or restore behavior-private `PersistentBehaviorData` blobs; that dead - save-shape hook and its `IPersistentBehavior` interface are deleted. + rather than durable file formats. Runtime blueprints no longer capture or + restore live temperature, armor, max-armor, or hull-conductivity grids; those + grids are typed checkpoint state, not loadout/construction template state. + Blueprint price aggregation uses typed runtime item prices through + `ItemManager` instead of hydrating `HullData.Shape` or `ItemData.Price`. + Runtime blueprints no longer capture or restore behavior-private + `PersistentBehaviorData` blobs; that dead save-shape hook and its + `IPersistentBehavior` interface are deleted. - Run checkpoint zone snapshots include typed orbit and body rows. Orbit IDs, parent IDs, distance, phase, fixed positions, body kind/name/orbit, resources, gravity/body multipliers, asteroid belt entries, and gas/sun @@ -138,7 +140,8 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted. - Run checkpoint entity snapshots include typed simulation stat grids for temperature, thermal mass, armor, max armor, and hull-conductivity axes. `RuntimeEntityBlueprint` still exists for construction/loadout projection, - but those live hull grids no longer survive only as blueprint fields. + but those live hull grids are no longer blueprint fields and cannot be + restored by the old blueprint projector path. - `Aetheria.State` now defines `AetheriaLoadoutTemplate` as the typed Verse replacement for bespoke `.loadout` files. It stores structured hull, equipment, cargo bay, docking bay, child-entity, assignment, and weapon-group @@ -745,6 +748,9 @@ First Aetheria surfaces to publish: - Done: extend run checkpoint commits and smoke coverage to carry typed entity simulation stat grids into `AetheriaEntitySnapshot`, so temperature/armor/conductivity no longer live only in runtime blueprints. + - Done: cut live simulation grids out of `RuntimeEntityBlueprint`; loadout + and construction templates no longer capture or restore temperature, + armor, max-armor, or hull-conductivity state. - Remaining: add typed documents/mappers for runtime object graphs, typed behavior factory construction, behavior-private simulation state, and any catalog fields not covered by the stable scalar/fingerprint/