wip(assembler): M1 round 4 PARTIAL -- stopped at owner's request (GPU coil whine at night)
Unverified mid-round state (cliff plates / horizon slab / routes in progress). Resume from here. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
This commit is contained in:
1 parent
2c20f9eaea
commit
20c6d86f0e
11 files changed
+839
-47
No files matched your search
+26
-10
@@ -79,14 +79,15 @@ Pass `analyticOnly = false` to retain the reference packed-page compiler. Packed
|
||||
parent-cell coordinates and an 8-voxel apron; each covers a 128-voxel cube or one larger coarse
|
||||
tile. This path remains available for parity checks and workloads that need the packed lattice.
|
||||
|
||||
## World assembler manifest v1 (prototype; evaluator v1 and v2)
|
||||
## World assembler manifest v1 (evaluator v1–v4)
|
||||
|
||||
`ResolvedWorldSnapshot::FromJson` accepts an optional `world_assembly` object alongside the owner
|
||||
snapshot. The object is the shipped-plan payload shape: a fixed-scale recipe and finite-strate plan
|
||||
with hashes, no generated mesh or voxel samples. The current evaluator-v2 review payload is
|
||||
[`round2/world_assembly.json`](../Research/WorldAssemblerM1/round2/world_assembly.json); the
|
||||
evaluator-v1 sample remains at [`round1-manifest.json`](../Research/WorldAssemblerM1/round1-manifest.json).
|
||||
Round 4 still needs to connect this payload to the season asset/hash path.
|
||||
with hashes, no generated mesh or voxel samples. The current review payload is written to
|
||||
[`round4/world_assembly.json`](../Research/WorldAssemblerM1/round4/world_assembly.json).
|
||||
Evaluator 1–3 payloads remain readable with their original hashes and field semantics. Evaluator 4
|
||||
adds a minimum two-voxel shelf thickness and a versioned route support contract; it requires at
|
||||
least two route waypoints.
|
||||
|
||||
Every coordinate and scalar uses signed integer units of 1/256 voxel (`units_per_voxel: 256`),
|
||||
independent of the plugin's 25 cm Core voxel and of tile size. The schema version is 1; evaluator
|
||||
@@ -96,8 +97,10 @@ order and hashed as 4- or 8-byte little-endian words with FNV-1a 64. Hashes are
|
||||
lowercase hexadecimal characters; JSON key order and whitespace do not affect them. The root,
|
||||
recipe, plan and each stratum carry a content hash. The recipe stores its seed, warped biome-map
|
||||
settings and one to eight biome profiles; the plan stores finite-strate extents, cap settings,
|
||||
stable-ID features, fixed-season water and route points. Bounds, feature count and route count are
|
||||
validated before a manifest is accepted.
|
||||
stable-ID features, fixed-season water, route points and (for evaluator 4) player-capsule, grade,
|
||||
support and sweep-spacing constraints. Route points are fixed-scale capsule-center locations with
|
||||
stable IDs and a protected automatic-change corridor radius. Bounds, feature count, route count, route
|
||||
IDs, corridor widths and finite-strate capsule extents are validated before a manifest is accepted.
|
||||
|
||||
Evaluator 2 adds climate-based biome assignment, output-space blending of both ground and cap
|
||||
profiles, per-biome relief and height warp, beach width, cliff limits, and optional per-biome cap
|
||||
@@ -120,8 +123,11 @@ neighbor biome IDs, Q16 blend weight and signed density. Evaluator 2 also return
|
||||
surface and water-fill sample values. Negative density is solid. Its contract reads `biome` and
|
||||
writes `height`, `rock`, `water` and `waterSurface`; route and `surfaceTags` remain declared channels
|
||||
for later blocks. The detail envelope reports maximum absolute displacement and minimum feature
|
||||
size. Influence is global in XY and limited to the finite stratum's Z extent, except for the
|
||||
explicitly bounded evaluator-v2 feature boxes.
|
||||
size. Evaluator 4 defines the shelf's minimum solid thickness as two Core voxels (0.5 m) and applies
|
||||
its feather to the horizontal footprint so it cannot thin the roof-to-floor section.
|
||||
`AuditHeightfieldShelfThickness` samples shelf sections against the pre-feature field and includes
|
||||
the previous sub-voxel taper as a negative control. Influence is global in XY and limited to the
|
||||
finite stratum's Z extent, except for the explicitly bounded feature boxes.
|
||||
|
||||
`interval(minXQ, minYQ, minZQ, maxXQ, maxYQ, maxZQ)` returns a conservative density range or
|
||||
`known == false`; callers must keep evaluating when it is unknown. The current heightfield range
|
||||
@@ -131,9 +137,19 @@ negative-coordinate and overhang boxes, and includes a deliberately false one-si
|
||||
negative control. A pass means no sampled point escaped and the negative control was rejected; it
|
||||
is an audit of this block implementation, not a proof for future blocks.
|
||||
|
||||
`AuditHeightfieldRoute` sweeps the recorded route through the final composed field using the
|
||||
versioned player capsule (0.34 m radius, 1.76 m height), checks a 15-degree maximum grade, samples
|
||||
capsule clearance at no more than half-voxel intervals, and probes support below five foot locations
|
||||
at each swept center. Automatic changes must be composed first and pass this audit before the plan is
|
||||
accepted. Player carve/fill edits remain unrestricted. This validates analytic field collision and
|
||||
support; it does not cook an Unreal physics mesh.
|
||||
|
||||
## Queries and tiles
|
||||
|
||||
`densityAt(position)` returns signed density; negative is solid and nonnegative is air.
|
||||
`densityAt(position)` returns signed density; negative is solid and nonnegative is air. Server and
|
||||
authority code can compile/query a `World` and run `AuditHeightfieldRoute` without calling
|
||||
`generateTile`; generated render meshes are not part of this query path. Unreal physics collision
|
||||
cooking remains the adapter's separate readiness step.
|
||||
`isSolidAt` wraps that sign test. `isSolidAlongSegment(start, end, spacing)` samples evenly along
|
||||
the segment with no interval wider than `spacing` voxels; it returns true if any sample is solid.
|
||||
`classifyBox(origin, step, cells)` returns `allSolid`, `allAir` or `mixed` for mesher tile
|
||||
|
||||
Reference in new issue
Block a user