From 603723f62fcfeb1dd4acf265c8d0d0e6d564573c Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sun, 14 Jun 2026 13:21:10 +0100 Subject: [PATCH] Remove live grids from runtime blueprints --- .voidbot/state/aetheria.cc | Bin 85788 -> 86336 bytes .../RuntimeEntityBlueprintProjector.cs | 17 --------------- docs/aetheria-perfect-machine-map.md | 20 ++++++++++++------ 3 files changed, 13 insertions(+), 24 deletions(-) diff --git a/.voidbot/state/aetheria.cc b/.voidbot/state/aetheria.cc index 29aeb69073f7fd67b6ae458663cb3943afe849b3..4757dbf5c7a93f052685b6f96bb7a105de771fc5 100644 GIT binary patch delta 945 zcmb7DO=uHA80AZvwiYT{OlxbUQ$(TAEcr7bNfVQ_UbKZ;?ZJ4E?d~MIWU~`yW)stb zQi@)B5Lt9Qh=TPG4_Yr4PwH94lZO<+n|BcePr92nRSzOw=J4jt_q{jY_io+xy}IjL zf8gl}C6bY#6bnZR*T651O+u&r#&fy54clM512*w4wt10|%d@*XMm#z1%2>z7SO+wt z_}rOB6|0C^CQ>x4l&eHHIYXpwB5ZP8O+lNsW;QpHr}7RBR8rWHcR5pmuVQ?(SX z*WBJk9UCfhu1(cme?BTM?uU_Kt`UZjq1W)1An75;CUf*{LYGLSVA999ZWv-I1px`+ z8a7c~a}Gxns#2n0#!#KgRi`_mxJszwmsyI7i$^Iq;d9#|@ihfwkP-(c;F1XW!C%<1 zyDiIAOEKewVx$pLW~k^OEnR={rdfs&_`@LMGRG;gHUZPU(qq|FG(zWak=?KZ^E0B6 zhP3Vfd=^gHS6>W?1H;hQt(%Hrsh9~V0sR|K(_nbux){#FN0=7hvvA~aOMcmOM>ykn zl1q42R>~+Mg`_Bw)tb%-ZP>ZYh`5u5JvO=G6Q^?!_cXI&H3x$ds_R@s|0*D@tWjKS z&f1~Xf$c(>F8h3@-~RM%)YHt{PcnmZ&JX`jvGIA+o%({z6|F+l-!?4Zu3kW~xOkTX zv^Ty*G)M{I3p&TDSWdw{u{#e__R^2uzHl;pG#Ly^!C>J*2jfVAPn7W3H@EN?^cXe(eFr;fwxU2QBDFZ=`y CQ$Xeb delta 624 zcmYk4J!n%=6vsLFvMmY)D>Z}kOiE~)rX;bg`M{*H6>$<3%pxx@H+k2*-W%S%uQe`3 zDmu8RPdpCd;8#}{3Aj`TXX&625yaK4yNEBZi8!7g=bZole0+EjefB*1_DyIaojH?U zNM#q7YY*X=_bGILM3!;^k>Oka$WlPYA~T`VkL^UHmxw?=yC5#P0!@pV?T+L^BNLkI zE-GPklqI!7AvdwZ9L1GJn{P1sQ-tY=?sk}W;&PniSs0&4y*6!wuYZGgz1A|6U`uIk z+sJPEMGBkJK~oB)9oN)cig{Za4e4s^IPwMyP!j8YtSzZnAcB_b*S8$r7#KiXiWYNF zxz2{~0Hv_IXeg}PF6%f0*GVKwE9#-gH9+LDk4;Nsb(gjFBm}&*s zI+Vmsi`$IO7vbVOa^D*>8Yr9SFkgX-)_=W+!!uzrw4`i5nT09ZDZ-uJ*AlQ0Jf=b! zzQZYsSKy>qF3r$x874h>H%d<{un6yIuLAKzYWt4VG5aE#VgL5^@HcoF)t3b#in8)Wv}HTXC_V!6|`zt2R^S^xk5 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/