measure(perf): per-component ablation of the TunnelNetwork path; exact worms restored
Round (Codex; reviewed by me against PERF-SAMPLED.md). Revert: voxel.WormNoiseMode / voxel.WormLatticeStep, their storage and their switches are REMOVED. VoxelWormField has one path again, exact Perlin with the N1 short circuit. Kept: bEnableWorms (asset), WormsForceOff (measurement only), the exact block skip (default 0). Ablation instrument: 14 development-only, world-changing force-off bits (voxel.TunnelAblate*), applied on the fused, op-stack/classifier, cached SDF/core and modifier/floor paths. They resolve once per process, are hashed into the generation fingerprint, and are compiled to zero in UE_BUILD_SHIPPING (VoxelDensityAblation.cpp). They are a measurement instrument, never a gameplay or multiplayer switch. Defaults exact: canonical export OBJ b3e5f4c3..9b377, worms-region 311CA42C / 75,482 triangles, capability 20,830 / 10,909, and 841/841 keyed tiles identical to NextHeadStaticTrace_20260913. Static worker seconds saved by removing ONE component (two off runs vs the interleaved all-on 33.06 s; baseline noise 0.27%): tunnel SDF 11.4%, cave warp 10.3%, passage carving 10.1%, landing posts 9.9%, passage structural posts 5.6%, worms 2.4%, native floor 2.2%, origin spine 1.6%, room SDF 1.6%, everything else <= 1.1% Moving (2+2 runs each) confirms the top five at 6.0-11.6%. Tunnel SDF off cuts LOD0 generation p95 104 -> 83 ms: it owns the slow tail. The positive savings sum to 58% of the static total; the other 42% is shared. The rows are not additive. Unexplained: tunnel-core OFF made the static total 2.9x SLOWER (95.5 s) while LOD0 generation got faster (p50 64.7 -> 60.6 ms) and triangles fell. The report blames the changed field, which does not fit; more likely a slow fallback path in coarse tiles. That row is not a cost measurement. Ledger: every Unreal process exited 0 and verified the loaded DLL; two PowerShell parser errors happened before any process started. No crashes or retries. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TaFdXhTdYMkW1xrV6ApT6Y
This commit is contained in:
1 parent
c132243b30
commit
6ccf3718ff
12 files changed
+833
-695
No files matched your search
+237
-10
@@ -1226,21 +1226,21 @@ Both runs also reported `canonical_repeat_equal=true`. The disabled asset path t
|
||||
the hand-zeroed control byte-for-byte at the exported geometry hash, while exceeding the required
|
||||
20,830 / 10,909 capability gate.
|
||||
|
||||
### Part 2 — measured cheap field
|
||||
### Historical Part 2 — measured cheap field (reverted 2026-09-14)
|
||||
|
||||
The selected field is `voxel.WormNoiseMode=1`: a deterministic scalar value-noise evaluation
|
||||
using the same worm coordinate mapping, threshold, N1 short-circuit, N2 offset, and strength
|
||||
contract. The code default is mode 1. Mode 0 remains the legacy gradient-Perlin exact control.
|
||||
`voxel.WormNoiseMode` and `voxel.WormLatticeStep` are documented development-only,
|
||||
world-changing experiments; they are not the multiplayer off switch and must be identical on
|
||||
all peers and on every regeneration of a world.
|
||||
The historical build selected `voxel.WormNoiseMode=1`: a deterministic scalar value-noise
|
||||
evaluation using the same worm coordinate mapping, threshold, N1 short-circuit, N2 offset, and
|
||||
strength contract. That selection was reverted after the ablation review. The current source is
|
||||
exact-only Perlin mode 0; `voxel.WormNoiseMode` and `voxel.WormLatticeStep`, their storage, and
|
||||
their switches no longer exist. The run names and measurements below are retained as historical
|
||||
evidence only.
|
||||
|
||||
The coarser lattice was measured rather than assumed. The first lattice implementation was much
|
||||
slower because of cache churn; after the fixed tile-window cache, it returned to roughly the
|
||||
exact cost but did not improve it. Representative static worker seconds were exact 33.10,
|
||||
lattice-2 initial 160.86, lattice-2 cache-fixed 33.78, lattice-4 cache-fixed 33.25, and exact
|
||||
block-skip 33.10. The lattice path is retained as a bounded experiment, but is not the selected
|
||||
production mode. The exact block skip is also retained as a fail-closed exact-mode diagnostic;
|
||||
block-skip 33.10. The lattice path was a bounded historical experiment and is not retained. The
|
||||
exact block skip is retained as a fail-closed exact-mode diagnostic;
|
||||
it is not used as a correctness or performance claim for value noise because its Perlin proof
|
||||
does not cover the changed field.
|
||||
|
||||
@@ -1255,7 +1255,7 @@ The capability and geometry candidates were:
|
||||
| `WormCheapValueLattice2Explore_20260914` | value, lattice 2 | `C47567A2` | 75,132 | 20,857 / 10,917 | pass; no speed gain |
|
||||
| `WormCheapFastHashExplore_20260914` | value, lattice 0 | `6204C7E6` | 75,956 | 20,851 / 10,917 | selected |
|
||||
|
||||
The selected mode changes the field, but the measured full-game gain is small rather than a
|
||||
The historical selected mode changed the field, but the measured full-game gain was small rather than a
|
||||
claim of a dramatic speedup. In two interleaved static pairs, exact averaged 0.087128 / 0.148415
|
||||
s request-to-ready p50/p95, 0.063042 / 0.105080 s generation p50/p95, and 33.213871 worker s;
|
||||
cheap averaged 0.087761 / 0.145897 s, 0.062863 / 0.106258 s, and 33.083774 worker s. In two
|
||||
@@ -1438,3 +1438,230 @@ capability or comparison gate.
|
||||
| `WormFinalForceOffBuildSamplerOfflineRetry_20260914` | PASS; retried with writable `Saved\ZenData`/`Saved\DDC`, 733 modules, 10 loaded, zero identity mismatches, all 7,795 unique PCs mapped. |
|
||||
| `PerfSampledBuild_FinalFingerprint.log` | PASS; final cache-key hardening rebuild, Result: Succeeded. |
|
||||
| `WormFinalFingerprintSmoke_20260914` | PASS; post-hardening clean game smoke, exact staged runtime verified, writable DDC, zero crash folders/reporters. |
|
||||
## Cheap-worm revert and TunnelNetwork ablation round — 2026-09-14
|
||||
|
||||
This section supersedes the historical cheap-worm selection above. The earlier value-noise
|
||||
experiment changed the field without producing a gain: static movement was within noise and the
|
||||
moving worker result was about 2.1% slower. The production/default path therefore keeps exact
|
||||
Perlin.
|
||||
|
||||
### Revert and exactness
|
||||
|
||||
- voxel.WormNoiseMode and voxel.WormLatticeStep, their storage, and their switches are removed.
|
||||
- VoxelWormField now has one evaluation path: exact Perlin, with the existing N1 short circuit.
|
||||
- The exact block skip remains available as voxel.WormBlockSkip, default 0. The asset-owned
|
||||
bEnableWorms and the measurement-only voxel.WormsForceOff remain.
|
||||
- The generation fingerprint still hashes bEnableWorms and WormsForceOff, and now also hashes the
|
||||
resolved TunnelNetwork ablation mask.
|
||||
- The new ablation controls are development-only, resolve once per process, are world-changing,
|
||||
and are never gameplay or multiplayer switches. A nonzero bit means force that stage off; zero
|
||||
means all stages on. Shipping builds resolve the mask to zero.
|
||||
|
||||
The prescribed UBT command from this file was used after synchronizing the staged host copy under
|
||||
the plugin Saved directory. The final build log is
|
||||
E:\Projet Unreal\VoxelM\Plugins\VoxelForge\Saved\PerfSampledBuild_Ablation.log and reports
|
||||
Result: Succeeded. The loaded runtime was
|
||||
E:\Projet Unreal\VoxelM\Plugins\VoxelForge\Saved\BuildHost\HostProject\Plugins\VoxelForge\Binaries\Win64\UnrealEditor-VoxelForge.dll
|
||||
with SHA-256 A70528AC82641D7D610D8BA9497D0322B1EBDE22978B1E826A97FC4C0D038149. The editor module
|
||||
SHA-256 was 8EA2A71BB29F828C5DE7559EC200AC4E86CF61F7DB5C8470406208073E22456D.
|
||||
|
||||
The two default commandlets both used
|
||||
E:\Projet Unreal\VoxelM\Plugins\VoxelForge\Saved\DDC and
|
||||
E:\Projet Unreal\VoxelM\Plugins\VoxelForge\Saved\ZenData:
|
||||
|
||||
- AblationDefaultExact_20260914Out: mask 0; status ok; canonical 128^3 export SHA-256
|
||||
B3E5F4C398DD0547C6C55F415872058246D4A292C2F0D636EE1CD0829DE9B377; geometry CRC 07C14005;
|
||||
82,273 vertices and 153,346 triangles.
|
||||
- AblationDefaultCapability_20260914Out: mask 0; geometry CRC 311CA42C; 75,482 triangles;
|
||||
player_fit_volume_cells 20,830; reachable_player_fit_cells 10,909; walk-only reachable
|
||||
10,909; Connected; deterministic JSON.
|
||||
|
||||
The current game startup trace
|
||||
E:\Projet Unreal\VoxelM\Plugins\VoxelForge\Saved\AblationDefaultStaticTrace_20260914.startup.jsonl
|
||||
was compared by tile key to
|
||||
E:\Projet Unreal\VoxelM\Plugins\VoxelForge\Saved\NextHeadStaticTrace_20260913.startup.jsonl:
|
||||
841 versus 841 tile records, zero missing, zero extra, zero verdict/empty/triangle mismatches,
|
||||
and identical all-tile and LOD0 triangle totals of 669,834 and 325,204. The current trace
|
||||
finished with desired_set_satisfied_and_queue_drained and the loaded runtime hash above.
|
||||
|
||||
### Ablation controls
|
||||
|
||||
| bit | CVar | stage forced off |
|
||||
|---:|---|---|
|
||||
| 0x0001 | voxel.TunnelAblateCaveWarp | the three cave-warp Perlin calls; CaveWarpStrength resolves to zero |
|
||||
| 0x0002 | voxel.TunnelAblateDetailOps | detail noise, roughness, and terrain operations |
|
||||
| 0x0004 | voxel.TunnelAblateRoomSDF | room SDF and room-SDF joins in EvaluateSDFCached |
|
||||
| 0x0008 | voxel.TunnelAblateTunnelSDF | tunnel SDF in EvaluateSDFCached |
|
||||
| 0x0010 | voxel.TunnelAblateTunnelCore | EvaluateTunnelCoreWorld, support/core SDF work, and its GetDensityAt tail |
|
||||
| 0x0020 | voxel.TunnelAblatePassageCarving | EvaluateModifierSDF and passage carving |
|
||||
| 0x0040 | voxel.TunnelAblatePassageStructuralPosts | passage structural posts and legacy structural floor support |
|
||||
| 0x0080 | voxel.TunnelAblateNativeFloor | native floor composition |
|
||||
| 0x0100 | voxel.TunnelAblateDisturbances | ApplyDisturbances |
|
||||
| 0x0200 | voxel.TunnelAblateOriginSpine | origin spine |
|
||||
| 0x0400 | voxel.TunnelAblateBoundarySeal | boundary seal |
|
||||
| 0x0800 | voxel.TunnelAblateLandingPosts | landing posts and landing-floor posts |
|
||||
| 0x1000 | voxel.TunnelAblateXYEdgeSeal | XY edge seal |
|
||||
| 0x2000 | voxel.TunnelAblatePitChimneySDF | pit and chimney SDF work |
|
||||
|
||||
Each override is applied in the fused evaluator, operator-stack source/classifier paths, cached
|
||||
SDF/core paths, and modifier/floor paths where that stage exists. The resolved mask is emitted in
|
||||
the explore JSON and is part of the generation fingerprint. This is an ablation instrument, not a
|
||||
candidate field.
|
||||
|
||||
### Measurement method and noise
|
||||
|
||||
All game runs were sampler-off, NullRHI, operator block on, fused evaluator on, outer classifier
|
||||
off, and used a 15-second clean session. Static runs produced 343 LOD0 samples and 841 applied
|
||||
tiles. Each static row has two off runs; the two all-on static baselines are shared and interleaved
|
||||
across the two passes. The all-on static mean was 33.064458 worker seconds, generation p50
|
||||
0.064657 s, generation p95 0.105786 s. Baseline worker range was 0.27%; baseline generation-p95
|
||||
range was 1.62%.
|
||||
|
||||
The table reports the mean of the two off runs, the saving against that all-on mean, and the
|
||||
off-run worker range as a compact noise indicator. Positive saving means the off run used fewer
|
||||
worker seconds. All rows completed 841 tiles with zero obsolete aborts.
|
||||
|
||||
| component removed | runs | off worker s | saving s (%) | off generation p50 s | off generation p95 s | off worker range |
|
||||
|---|---:|---:|---:|---:|---:|---:|
|
||||
| tunnel SDF | 2 | 29.304 | 3.760 (11.37%) | 0.060813 | 0.084811 | 0.53% |
|
||||
| cave warp | 2 | 29.654 | 3.411 (10.31%) | 0.056881 | 0.098260 | 2.03% |
|
||||
| passage carving | 2 | 29.730 | 3.334 (10.08%) | 0.056336 | 0.096892 | 0.88% |
|
||||
| landing posts | 2 | 29.800 | 3.264 (9.87%) | 0.056776 | 0.097884 | 1.33% |
|
||||
| passage structural posts | 2 | 31.205 | 1.859 (5.62%) | 0.060143 | 0.099723 | 0.50% |
|
||||
| worms | 2 | 32.265 | 0.799 (2.42%) | 0.064232 | 0.099511 | 0.83% |
|
||||
| native floor | 2 | 32.347 | 0.718 (2.17%) | 0.063590 | 0.103897 | 0.45% |
|
||||
| origin spine | 2 | 32.529 | 0.535 (1.62%) | 0.063174 | 0.102446 | 0.61% |
|
||||
| room SDF | 2 | 32.542 | 0.522 (1.58%) | 0.064194 | 0.100999 | 0.90% |
|
||||
| pit/chimney SDF | 2 | 32.689 | 0.375 (1.13%) | 0.064599 | 0.103472 | 0.26% |
|
||||
| boundary seal | 2 | 32.814 | 0.251 (0.76%) | 0.064863 | 0.104105 | 1.21% |
|
||||
| detail ops | 2 | 32.838 | 0.227 (0.69%) | 0.065330 | 0.100864 | 0.69% |
|
||||
| XY edge seal | 2 | 32.901 | 0.164 (0.49%) | 0.065021 | 0.104411 | 1.30% |
|
||||
| disturbances | 2 | 33.208 | -0.144 (-0.43%) | 0.065100 | 0.106342 | 0.53% |
|
||||
| tunnel core | 2 | 95.468 | -62.404 (-188.73%) | 0.060597 | 0.098965 | 0.07% |
|
||||
|
||||
The field was intentionally allowed to change. For example, tunnel-SDF off produced 643,388
|
||||
triangles, cave-warp off 655,726, passage-carving off 654,932, and tunnel-core off 655,654,
|
||||
against the all-on 669,834 static triangles. Some low-cost rows retained the same mesh totals in
|
||||
this window; they are still world-changing overrides and are not correctness candidates.
|
||||
|
||||
The sum of positive standalone static savings is 19.218608 worker seconds, 58.125% of the
|
||||
33.064458-second baseline, leaving 13.845850 seconds (41.875%) as shared/unattributed cost in
|
||||
this ablation accounting. The signed sum over every row is -43.329105 seconds because tunnel-core
|
||||
removal is a large regression caused by the changed field; the rows are not additive and this is
|
||||
why the signed sum is not a speedup prediction.
|
||||
|
||||
Moving confirmation covered the five largest positive static savers. Each row has two fresh
|
||||
all-on baselines interleaved with two off runs. Movement began at 3 seconds and ran at 800 cm/s;
|
||||
each run produced 882 LOD0 samples and 1,680 applied tiles, with zero obsolete aborts.
|
||||
|
||||
| component removed | runs | all-on worker s | off worker s | saving s (%) | all-on gen p50/p95 s | off gen p50/p95 s | baseline/off worker range |
|
||||
|---|---:|---:|---:|---:|---:|---:|---:|
|
||||
| tunnel SDF | 2+2 | 72.218 | 63.847 | 8.371 (11.59%) | 0.063238 / 0.104331 | 0.060117 / 0.082540 | 0.71% / 0.87% |
|
||||
| cave warp | 2+2 | 72.810 | 65.010 | 7.800 (10.71%) | 0.064610 / 0.105986 | 0.055398 / 0.094423 | 0.46% / 1.14% |
|
||||
| landing posts | 2+2 | 72.556 | 64.763 | 7.794 (10.74%) | 0.063820 / 0.105220 | 0.055539 / 0.096228 | 1.13% / 2.36% |
|
||||
| passage carving | 2+2 | 72.043 | 64.552 | 7.492 (10.40%) | 0.063507 / 0.104761 | 0.055276 / 0.096373 | 1.07% / 1.72% |
|
||||
| passage structural posts | 2+2 | 72.417 | 68.093 | 4.324 (5.97%) | 0.063779 / 0.104611 | 0.059068 / 0.101321 | 0.14% / 0.83% |
|
||||
|
||||
The moving standalone saving sum is 35.780708 worker seconds. Because these are five separate
|
||||
ablations with separate baseline pairs, it is not a combined-speedup forecast; against the mean
|
||||
72.409-second baseline per row it is 49.4%, leaving 36.628 seconds of shared/unattributed work.
|
||||
|
||||
### Ranking and plausible cheaper forms
|
||||
|
||||
1. Tunnel SDF — the largest measured real cost in both paths. A plausible exact optimization is
|
||||
sharing one cached swept-tunnel result between EvaluateSDFCached, tunnel-core metadata, and
|
||||
the final density tail, while preserving the existing evaluation order and float values. That
|
||||
would be field-preserving. A lower-resolution or analytic approximation would be field-changing
|
||||
and would need a fresh capability/export gate.
|
||||
2. Cave warp — the three Perlin calls are expensive in the ablation. Exact reuse of the same
|
||||
coordinates/results across the evaluator, cached graph, and op-stack paths is plausible and
|
||||
field-preserving. Reducing frequency or replacing the noise is field-changing.
|
||||
3. Passage carving — exact memoization/reuse of modifier SDF and passage candidate results across
|
||||
EvaluateModifierSDF, ApplyPassageCarvingOnly, and the structural/floor queries is plausible and
|
||||
field-preserving. Simplifying the carving geometry is field-changing.
|
||||
4. Landing posts — exact per-tile reuse of landing/post/floor metadata is plausible and
|
||||
field-preserving. Removing or thinning landing posts is field-changing.
|
||||
5. Passage structural posts — exact reuse of structural-post SDF/metadata is plausible and
|
||||
field-preserving. Removing or merging posts is field-changing.
|
||||
|
||||
Worms is sixth at 2.42% static and is now kept exact because the cheap alternatives had no gain.
|
||||
Native floor and origin spine follow at 2.17% and 1.62%. Room SDF, detail ops, seals,
|
||||
disturbances, and pit/chimney work are not attractive next-round targets on these measurements.
|
||||
Tunnel-core removal is explicitly not a candidate: it increased worker time by about 2.9x.
|
||||
These ablations explain why the old 19.4% line-level worm figure and the proposed tunnel-core
|
||||
line targets were unsafe attribution guides.
|
||||
|
||||
### Complete launch ledger for this round
|
||||
|
||||
All game and commandlet logs below are under
|
||||
E:\Projet Unreal\VoxelM\Plugins\VoxelForge\Saved. Every commandlet used the writable DDC path
|
||||
E:\Projet Unreal\VoxelM\Plugins\VoxelForge\Saved\DDC. No offline symbolizer was needed or
|
||||
launched in this round. Every Unreal process that ran exited 0, verified the loaded runtime
|
||||
SHA-256 A70528AC82641D7D610D8BA9497D0322B1EBDE22978B1E826A97FC4C0D038149, and had no crash or
|
||||
retry; the two parser-only attempts below launched no Unreal process. Peak observed private
|
||||
memory was approximately 1.54–1.60 GiB per process, with no runaway growth.
|
||||
|
||||
| launch | outcome |
|
||||
|---|---|
|
||||
| initial prescribed staged build | UP-TO-DATE report; staged host was stale, so no measurement was taken |
|
||||
| PerfSampledBuild_Ablation | PASS; prescribed UBT build, Result: Succeeded |
|
||||
| AblationDefaultExact_20260914 | PASS; canonical export exact |
|
||||
| AblationDefaultCapability_20260914 | PASS; 311CA42C, 75,482 triangles, 20,830 / 10,909 |
|
||||
| static ablation batch launch 1 | FAILED before process start; PowerShell parser error from a missing DDC-argument quote |
|
||||
| static ablation batch launch 2 | FAILED before process start; same quoting error; no Unreal process |
|
||||
| AblationStaticBaseA_20260914 | PASS |
|
||||
| AblationStaticBaseB_20260914 | PASS |
|
||||
| AblationStaticCaveWarpA_20260914 | PASS |
|
||||
| AblationStaticCaveWarpB_20260914 | PASS |
|
||||
| AblationStaticDetailOpsA_20260914 | PASS |
|
||||
| AblationStaticDetailOpsB_20260914 | PASS |
|
||||
| AblationStaticRoomSDFA_20260914 | PASS |
|
||||
| AblationStaticRoomSDFB_20260914 | PASS |
|
||||
| AblationStaticTunnelSDFA_20260914 | PASS |
|
||||
| AblationStaticTunnelSDFB_20260914 | PASS |
|
||||
| AblationStaticTunnelCoreA_20260914 | PASS; 95.436091 worker seconds |
|
||||
| AblationStaticTunnelCoreB_20260914 | PASS; 95.500636 worker seconds |
|
||||
| AblationStaticPassageCarvingA_20260914 | PASS |
|
||||
| AblationStaticPassageCarvingB_20260914 | PASS |
|
||||
| AblationStaticPassageStructuralPostsA_20260914 | PASS |
|
||||
| AblationStaticPassageStructuralPostsB_20260914 | PASS |
|
||||
| AblationStaticNativeFloorA_20260914 | PASS |
|
||||
| AblationStaticNativeFloorB_20260914 | PASS |
|
||||
| AblationStaticDisturbancesA_20260914 | PASS |
|
||||
| AblationStaticDisturbancesB_20260914 | PASS |
|
||||
| AblationStaticOriginSpineA_20260914 | PASS |
|
||||
| AblationStaticOriginSpineB_20260914 | PASS |
|
||||
| AblationStaticBoundarySealA_20260914 | PASS |
|
||||
| AblationStaticBoundarySealB_20260914 | PASS |
|
||||
| AblationStaticLandingPostsA_20260914 | PASS |
|
||||
| AblationStaticLandingPostsB_20260914 | PASS |
|
||||
| AblationStaticXYEdgeSealA_20260914 | PASS |
|
||||
| AblationStaticXYEdgeSealB_20260914 | PASS |
|
||||
| AblationStaticPitChimneySDFA_20260914 | PASS |
|
||||
| AblationStaticPitChimneySDFB_20260914 | PASS |
|
||||
| AblationStaticWormsOffA_20260914 | PASS |
|
||||
| AblationStaticWormsOffB_20260914 | PASS |
|
||||
| AblationMovingTunnelSDFBaseA_20260914 | PASS |
|
||||
| AblationMovingTunnelSDFA_20260914 | PASS |
|
||||
| AblationMovingTunnelSDFBaseB_20260914 | PASS |
|
||||
| AblationMovingTunnelSDFB_20260914 | PASS |
|
||||
| AblationMovingCaveWarpBaseA_20260914 | PASS |
|
||||
| AblationMovingCaveWarpA_20260914 | PASS |
|
||||
| AblationMovingCaveWarpBaseB_20260914 | PASS |
|
||||
| AblationMovingCaveWarpB_20260914 | PASS |
|
||||
| AblationMovingPassageCarvingBaseA_20260914 | PASS |
|
||||
| AblationMovingPassageCarvingA_20260914 | PASS |
|
||||
| AblationMovingPassageCarvingBaseB_20260914 | PASS |
|
||||
| AblationMovingPassageCarvingB_20260914 | PASS |
|
||||
| AblationMovingLandingPostsBaseA_20260914 | PASS |
|
||||
| AblationMovingLandingPostsA_20260914 | PASS |
|
||||
| AblationMovingLandingPostsBaseB_20260914 | PASS |
|
||||
| AblationMovingLandingPostsB_20260914 | PASS |
|
||||
| AblationMovingPassageStructuralPostsBaseA_20260914 | PASS |
|
||||
| AblationMovingPassageStructuralPostsA_20260914 | PASS |
|
||||
| AblationMovingPassageStructuralPostsBaseB_20260914 | PASS |
|
||||
| AblationMovingPassageStructuralPostsB_20260914 | PASS |
|
||||
| AblationDefaultStaticTrace_20260914 | PASS; current 841-tile trace, exact keyed comparison |
|
||||
|
||||
No .uasset was edited. Engine source and binaries were not modified. No commit, push, or stash was
|
||||
performed.
|
||||
Reference in new issue
Block a user