This note is for agents continuing Babylon voxel parity work.
SponsorNova64 has an experimental NOA probe seam at:
runtime/backends/babylon/noa-prototype.jsNova64 also has an opt-in adapter at:
runtime/backends/babylon/noa-adapter.jsThis is intentionally not a full runtime swap. The default Babylon voxel path still lives in:
runtime/backends/babylon/voxel.jsruntime/api-voxel.jsThe shared Nova64 voxel API remains the canonical cart-facing contract.
noa-engine is promising because it is Babylon-native, but it is also a larger engine with its own world, registry, entity, and render ownership model.
Two practical constraints matter right now:
runtime/api-voxel.js.noa-engine@0.33.0, and its npm peer dependency still targets @babylonjs/core ^6.1.0, while Nova64 is on Babylon 7.Because of that, the current integration point is probe-first instead of takeover-first.
The prototype exposes two shared voxel diagnostics:
getVoxelNoaPrototypeStatus()probeVoxelNoaPrototype()These are available through flat globals and nova64.voxel.*.
On Babylon:
?noaVoxel=1 or ?noaVoxel=probe requests a probe on boot.localStorage['nova64:noaVoxel'] = '1' also requests a probe.globalThis.NOVA64_NOA_PROTOTYPE = true can request a probe before runtime boot.The probe attempts to load noa-engine and reports whether the module is available. The adapter APIs are separate and opt-in so the default Babylon renderer remains stable.
The experimental adapter exposes these controls through flat globals and nova64.voxel.*:
enableVoxelNoaAdapter(options)disableVoxelNoaAdapter()getVoxelNoaAdapterStatus()isVoxelNoaActive()Keep these guarded. They should report inactive status gracefully when NOA is unavailable or incompatible.
Typical reason values from getVoxelNoaPrototypeStatus():
disabledunsupported-backendrequested-pendingdependency-missingloaded-awaiting-adapteractive should stay false for probe-only status. Adapter status is reported separately by getVoxelNoaAdapterStatus().
minecraft-demo and voxel-creatures first.if (backend === 'babylon') NOA branches.noa-engine@0.33.0 predates Nova64's current Babylon line.Use these first when touching the prototype seam:
pnpm test:babylon:apipnpm exec playwright test tests/playwright/wad-vox-regression.spec.js --grep "Voxel Regression" --reporter=linepnpm exec playwright test tests/playwright/backend-parity.spec.js --grep "Voxel" --reporter=lineIf the probe seam changes, keep the fallback path graceful: Babylon should continue using Nova64's built-in voxel renderer when NOA is unavailable.