BONELAB
Install with App

Details

Latest version
0.2.0
Last Updated
First Uploaded
Downloads
159
Likes
1
Size
134KB
Dependants

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

  1. Close BONELAB.
  2. 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.
  3. Copy Mods/SLTCore.dll and Mods/SLTCore.Fusion.dll into its Mods folder.
  4. Copy UserLibs/SLTCore.Core.dll into its UserLibs folder, creating that folder beside Mods if needed. This is a managed dependency, not a spawnable pallet.
  5. Start BONELAB. The loader log should show SLTCore 0.2.0 preview loaded and SLTCore Fusion transport registered.
  6. Open a sandbox map. Settings and a version/performance report are generated in the loader's UserData/SLTCore directory. diagnostics.json reports the BoneLib, Fusion, and loader versions that actually loaded.
  7. 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 ObjectDestructible component, 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.

Thunderstore development is made possible with ads. Please consider making an exception to your adblock.