SLTCore
Sentry Logic Track Core: Quest BONELAB pathfinding to AI-selected destinations, live mapping, body clearance, opening probes, breakables, and Fusion route replication. Compiled preview.SLTCore
Sentry Logic Track Core
Runtime navigation and spatial awareness for BONELAB NPC mods, designed for standalone Quest.
Version 0.2.0 — compiled preview. The package contains real compiled DLLs, full C# source, an NPC integration example, automated tests, and publishing text. Headset operation, Quest frame rate, and live Fusion sessions have not been verified in this environment. Publish it as a preview until the in-game checks in docs/VALIDATION.md are completed.
Choose exactly where your AI navigates
SLTCore includes incremental A* pathfinding. Each NPC mod supplies the destination; SLTCore performs no automatic player search or target selection. A destination can be a world coordinate, a particular object or NPC, a patrol marker, a remembered location, or the output of the AI mod's own logic.
| Destination | SDK call |
|---|---|
| Fixed ground position | NavigationTarget.At(new V3(x, y, z)) |
| Specific moving object/NPC | NavigationTargets.TrackTransform(chosenTransform, worldOffset) |
| Custom selection logic | NavigationTarget.Resolve(yourResolver) |
| Stop following a destination | adapter.ClearDestination() |
Pass a target to adapter.SetDestination(target) for live tracking, or to service.RequestPath(...) for a one-time destination sample. The included adapter samples live targets, replans as they move, and stops when a target is unavailable. Target positions should describe a reachable feet/ground position. The AI mod remains in control of patrol order, tactical choices, and which object/NPC to select.
See docs/TARGETING.md and the compiled source examples in SDK/examples.
Updating from the previous package
Remove Mods/MarrowAtlas.dll, Mods/MarrowAtlas.Fusion.dll, and UserLibs/MarrowAtlas.Core.dll before installing SLTCore. The namespaces, DLL names, and settings directory changed. Developers should rebuild integrations using the SLTCore namespaces and new assemblies. Do not run both framework versions together.
Install on your existing Quest setup
- Close BONELAB.
- Open the existing BONELAB code-mod directory where your working BoneLib and LabFusion installations live. Use that installation's folders; LemonLoader folder locations vary between releases.
- Copy
Mods/SLTCore.dllandMods/SLTCore.Fusion.dllinto its Mods folder. - Copy
UserLibs/SLTCore.Core.dllinto its UserLibs folder, creating that folder beside Mods if needed. This is a managed dependency, not a spawnable pallet. - Start BONELAB. The loader log should show SLTCore 0.2.0 preview loaded and SLTCore Fusion transport registered.
- Open a sandbox map. Settings and a version/performance report are generated in the loader's
UserData/SLTCoredirectory.diagnostics.jsonreports the BoneLib, Fusion, and loader versions that actually loaded. - Install or develop an NPC mod that integrates with SLTCore. Registration and an example adapter are documented in
docs/DEVELOPER_GUIDE.md.
Keep your existing working loader, BoneLib, and Fusion installation. This download does not replace them. BoneLib is not required by SLTCore itself. The bundled Fusion bridge targets the Fusion 1.14.3 ModuleMessage API. An older incompatible Fusion build may prevent the bridge loading; check the log and diagnostics before changing dependencies. For single-player without Fusion, remove only SLTCore.Fusion.dll.
Do not put these DLLs into the game's normal mod.io/pallet download folder. Uninstall by removing the three SLTCore DLLs. Settings can be kept or deleted independently.
What is implemented
- Layered surface mapping: multiple floors at the same X/Z, floor normals, slope limits, measured headroom, stairs/steps, roof surfaces, and unsupported ground.
- Full-body route checks: capsule overlaps and sweeps, intermediate support samples across an agent's width, step/drop limits, and stand/crouch transitions.
- Live updates: a configurable ten-second rescan target, bounded work spread over frames, and earlier rescans when tracked props move, disappear, or change bounds. An NPC motor can revalidate its next segment immediately.
- Breakable data: recognition of BONELAB's
ObjectDestructiblecomponent, plus explicit registration for custom windows, doors, crates, barrels, and other obstacles. - Opening measurements: conservative sampled width/height for a supplied opening in a wall, floor, or roof. Bounded local surveys also propose likely openings. Results report resolution and whether the sampled area was too small to bound the opening.
- Developer API: agent registration, asynchronous path requests, map/obstacle events, line-of-sight queries, separation suggestions, interest points, and explicit jump/climb/break traversal links.
- Custom destinations: exact world points, explicitly selected transforms, and live destination resolvers controlled by the AI mod.
- Fusion integration: host-authoritative planning, authenticated host-only route distribution, session/scene checks, bounded packets, replay rejection, late-join catch-up, and client observer callbacks.
- Operational controls: JSON settings, scan/search/network limits, cancellation, stale-map rejection, diagnostics, and safe failure when multiplayer authority cannot be determined.
NPC mods supply their own character models, decision-making, combat, damage, animations, and locomotion. Their motors execute returned waypoints and special actions. Fusion continues to synchronize their physical entities through the NPC mod's existing integration.
Quest defaults
| Setting | Default |
|---|---|
| Grid spacing | 0.5 m |
| Mapping radius per focus | 8 m |
| Vertical coverage | Three adjacent 6 m bands |
| Rescan target | 10 s |
| Observation expiry | 30 s |
| Background work target | 1.2 ms/frame |
| Physics query reservation limit | 128/frame |
| Reserved capacity for movement checks | 48/frame |
| Concurrent path jobs per update | 4 |
| Queued requests | 48 |
| Surface column cap | 7,000 |
| Registered agent cap | 32 |
| Tracked obstacle cap | 512 |
| Replication payload budget | 24 KiB/s |
These are workload limits, not a promised FPS. A Unity/PhysX call cannot be preempted, and an individual call or consumer callback can exceed the time target. Many agents, dense colliders, expensive mesh colliders, or distant interest regions can delay a refresh. The scanner processes nearby regions rather than rebuilding an entire level every ten seconds. Unknown or expired areas do not become walkable by assumption.
Use ValidateNextSegment before moving. A queued route is advisory: a newly spawned object, changed window, or moving prop can invalidate it before the next background scan. Deferred means that frame's work allocation was exhausted; the motor should wait and retry. Do not convert it into a clear segment.
Development and publishing
docs/DEVELOPER_GUIDE.md: integration API and lifecycle.SDK/examples/NpcNavigationAdapter.cs: a compilable follower that calls your own motor.SDK/examples/CustomDestinations.cs: fixed points, chosen objects, patrol markers, and custom selection callbacks.docs/FUSION.md: ownership, synchronization, and compatibility boundaries.docs/BUILD.md: rebuild using your own installed references.docs/VALIDATION.md: automated results and required device checks.docs/PUBLISHING.md: ready-to-use name, description, and release notes.SDK/: full source, project files, tests, and build helpers.
License: MIT. Original code is included; no game assemblies, loader binaries, Fusion binaries, or third-party assets are redistributed. BONELAB/Marrow, Unity, and Fusion belong to their respective owners. This is a community framework.
