feat(descent): landing ROOMS and a walkable tunnel -- per Jahni's correction
Jahni corrected the design: "the connection between level is a tiny tunnel
connecting both strate, not vertical, it needs to be walkable" and "'the
spine' shouldn't be carved except optionally from the top first strate,
then it's used to have a landing room".
COMPOSER-NOTES §6.8 had said the spine "provides a clean landing space, not
a continuous open shaft" -- and the implementation carved a vertical
cylinder anyway. A vertical cylinder has no walkable floor except at its
bottom, so a carve guaranteeing open AIR guaranteed nothing STANDABLE.
That one omission is behind five of my dead hypotheses this week.
Now:
origin spine a finite rounded ROOM per strate, no vertical bore.
radius 14 -> 8 m wide, 7.5 m tall
descent a walkable tunnel, single-file by design: 3 m mouth,
2.5 m waist, gradient capped at a NAMED 15 deg
exotic styles VerticalShaft / SpiralDescent / CascadingDrops /
CrackCrevice preserved, no longer the default
⚠️ THE GEOMETRY BITES, and it is worth Jahni's eye: at 15 deg a 32 m drop
needs 119.4 m of horizontal run -- about 59.7 m per switchback leg. That is
a long walk between strates. It is the honest consequence of "walkable",
not a tuning artifact, and the alternative is a steeper number.
⭐ AND THE ROOT CAUSE GOT NAMED A THIRD TIME, by Codex mid-run: "the round
tube was hollow air but had no authored support strip, so 'open' still did
not mean 'standable'." Tunnels now carry a floor band, and the root join
terminates in the finite origin room rather than an annular shaft hub.
Measured, commandlet sweep, 8 archetypes x 8 seeds, 64/64 valid:
origin column has player-fit cells 17/64 -> 63/64
origin column reachable 0/64 -> 7/64
arrival landing probes 315/320 fit AND in the arrival component
tunnel audit 5,916/5,916 floor and capsule samples pass; zero gradient,
floor, capsule, geometry or seal failures
narrow-gap events 0 box verdicts 14 checked, 0 violations
⚠️ arrival->departure is 6/64. The landings and tunnels are now provably
walkable; what remains is the INTRA-STRATE vertical connectivity problem
found in 6b91669 -- floors at different levels inside a strate with nothing
joining them. Separate and larger. Not tuned toward.
⚠️ PROCESS: this took 5.7 hours, of which Codex used 4 SECONDS of CPU. The
rest was polling the 73-minute automation suite at ~10% machine load. The
commandlet exists to avoid exactly that. New rule recorded: iterate with the
commandlet, full suite ONCE at the end.
Editor + Shipping builds clean. Automation 32/32, 0 failed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012aheo2crrZmHuYtPpdY2Cb
This commit is contained in:
1 parent
6b916699af
commit
55bf807f60
19 files changed
+1996
-334
No files matched your search
@@ -2863,7 +2863,8 @@ bool VF_MeasurePlayerFitWalkWithSampler(
|
||||
const FVector& AVoxel,
|
||||
const FVector& BVoxel,
|
||||
const FVoxelStrateMeasureSettings& Settings,
|
||||
FVoxelPlayerFitWalkReport& OutReport)
|
||||
FVoxelPlayerFitWalkReport& OutReport,
|
||||
const TArray<FVector>* ComponentProbePoints)
|
||||
{
|
||||
using namespace VoxelStrateMeasurePrivate;
|
||||
|
||||
@@ -3038,6 +3039,28 @@ bool VF_MeasurePlayerFitWalkWithSampler(
|
||||
? Components[Start] : INDEX_NONE;
|
||||
const int32 GoalComponent = Goal >= 0 && Components.IsValidIndex(Goal)
|
||||
? Components[Goal] : INDEX_NONE;
|
||||
|
||||
if (ComponentProbePoints != nullptr)
|
||||
{
|
||||
OutReport.ComponentProbePlayerFit.Init(0u, ComponentProbePoints->Num());
|
||||
OutReport.ComponentProbeInStartComponent.Init(0u, ComponentProbePoints->Num());
|
||||
for (int32 ProbeIndex = 0; ProbeIndex < ComponentProbePoints->Num(); ++ProbeIndex)
|
||||
{
|
||||
int32 ProbeCell = INDEX_NONE;
|
||||
const FVector& ProbePoint = (*ComponentProbePoints)[ProbeIndex];
|
||||
if (!FindCellForPoint(Grid, ProbePoint, ProbeCell)
|
||||
|| !IsEligiblePlayerFitCell(Grid, PlayerFitMask, ProbeCell))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
OutReport.ComponentProbePlayerFit[ProbeIndex] = 1u;
|
||||
if (StartComponent >= 0 && Components.IsValidIndex(ProbeCell)
|
||||
&& Components[ProbeCell] == StartComponent)
|
||||
{
|
||||
OutReport.ComponentProbeInStartComponent[ProbeIndex] = 1u;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (StartComponent >= 0)
|
||||
{
|
||||
float BestOriginDistanceSquared = FLT_MAX;
|
||||
|
||||
Reference in new issue
Block a user