wip(assembler): round S1 -- one Core voxel-size source; per-tile feature lists (islands)

AVoxelWorld::CoreVoxelSizeCm (default 25, 32 voxels/tile) flows through plan, field,
mesher, content, water, atmosphere, edits and collision. Staged-owner BuildHost passes at
20 cm (SurfaceWorld + islands, W1/W8/W16, anchors, BP edits, collision) with a fixed-25cm
negative control; default-size hashes match round 4; Core off stays legacy 12.5 cm.
Reusable BuildWorldAssemblyFeatureTileListV1; wired into FloatingIslands only so far.
256-island stress: tile p95 112.5 -> 2.0 ms, 0 mismatches, dropped-feature control fails.
Content placement measured (no populated cells): island ground search 7.25 ms/cell vs
legacy 0.29 ms -- open. Outside-review evaluation in Round5/REPORT.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
This commit is contained in:
Fr0zkaandClaude Opus 5.5 committed 2026-10-18 18:48:38 +02:00
1 parent 111cf3d262
commit d6e69420e8
25 files changed
+2136 -250

No files matched your search

+43
View File
@@ -1283,6 +1283,49 @@ sampled ground/cap heights plus the Z bounds of intersecting type-2/type-4 manif
with overlapping player edits or another strate keep the full mesh range. See round 6 of the M1
report for per-kind streaming results and validation limits.
### 8.22 Core voxel scale, per-tile features and placement measurements — World Assembler M3 Round 5
The opt-in Core world has one physical voxel-size source on AVoxelWorld: CoreVoxelSizeCm, default
25 cm and constrained to the supported 12.5–25 cm range for this integration. GetActiveVoxelSizeCm()
is the runtime conversion point for Core coordinates. CoreTileVoxelCount is 32 voxels; tile length
is derived as voxel size × 32 × 2^LOD. Core-off remains on the legacy 12.5 cm VOXEL_SIZE path.
Owner/Core compatibility conversions use the resolved values and must not assume that a Core voxel
is twice a legacy voxel.
The resolved physical size is rounded to microns and carried with tileVoxelCount in the immutable
Core world configuration. Non-default Core size participates in plan and season identity. The
default 25 cm value is omitted from the added identity suffix so recorded default SurfaceWorld and
M2 recipe/fixture identities keep their prior form. Water remains fixed for the season; player
carve/fill remains unrestricted. Collision support, clipmap keys and LOD stay in Core voxel units
and derive centimetres at the adapter/mesh boundary.
Floating Islands builds a deterministic candidate feature list per tile using conservative
inclusive bounds. Candidate IDs retain canonical feature order. A worker-scoped context lets density
samples evaluate only the tile's candidate islands and connectors. If bounds cannot prove a feature
irrelevant, it stays in the candidate list; future caves, shafts, pits and passages should use the
same common tile-list builder. The Round 5 audit reports exact full-field/candidate equality and
deliberately removes a feature as a negative control. This API does not change feature planning or
field identity. Air-side pruning uses a conservative lower bound for the version-2 scaled root
ellipsoids and their smooth-min reductions; a geometric AABB distance alone can overstate their
positive density and change hashes outside the visible island bounds. BuildHost compared the staged
owner plan's candidate field against the full scan at every queried sample and restored the Round 4
island aggregate hashes.
The current configuration is per-world. A later per-strate size needs a physical-space field-query
contract at boundaries, transition meshes with deterministic LOD ancestry, edit rasterization that
can touch both resolutions without gaps or double application, and a stable, canonically ordered
strate-ID-to-size map in plan/season identity. Border and LOD hashes must cover both sides; mixed-size
edits and replays must match on every worker count. Until those rules exist, one world size is the
supported contract.
Round 5 measured content evaluation per placement-grid cell and stationary manager update on staged
owner settings. SurfaceWorld uses its known heightfield and made no density queries in the Core
measurement. Floating Islands still uses the exact generic density march; a top-anchor shortcut
measured slower and was reverted. The sampled authored entries produced no placements, so these
figures measure anchor-search work and steady update overhead, not spawn/asset-instancing cost.
See Standalone/Research/WorldAssemblerM3/Round5/REPORT.md for the test matrix, owner-plan hash proof,
and content-placement measurements.
## 9. Multiplayer model (listen-server first, dedicated-friendly)
> **Status: transport is DESIGN ONLY — nothing is networked in-tree yet** (no `Replicated`/`HasAuthority`/RPCs; a