Deterministic navigation and character control for lockstep simulations and games.
Trailblazer gives lockstep games and simulations one explicit navigation model for grounded, flying, and swimming agents. Build immutable navigation maps over GridForge worlds, query them with deterministic A* or flow fields, and turn the result into movement or host-owned actions such as ladders, jumps, and teleporters.
- Every peer follows the same world. Fixed-point costs, canonical ordering, finite work budgets, and immutable published graphs keep queries reproducible.
- One model covers several kinds of travel. Solid, Gas, and Liquid movement share maps, queries, policies, dependencies, guides, and caches.
- World changes are explicit. Publish map revisions and addressed overlays at deterministic fixed-step boundaries.
- Actions stay semantic. A guide can hold a transition instruction while your host owns animation, physics, and gameplay execution.
- Controllers are optional. Use pathing by itself or compose Navigator, steering, turning, locomotion, occupancy, and deterministic heightmaps.
- The engine stays outside. Trailblazer has no Unity, Godot, Unreal, or renderer dependency.
dotnet add package TrailblazerTrailblazer targets netstandard2.1 and net8.0. The standard package includes
JSON and MemoryPack serialization support.
After publishing the referenced GridForge-backed map and area policy, describe
the entire request with one immutable PathQuery:
PathQuery query = new(
new NavigationEndpoint(startFoot, "overworld"),
new NavigationEndpoint(destinationFoot, "overworld"),
profile,
areaPolicyKey,
new TraversalIntent(
TraversalMedium.Solid,
TraversalMedia.Solid | TraversalMedia.Liquid),
PathAlgorithm.AStar,
budget,
allowTransitions: true);
NavigationGuideStatus status = context.Guides.RequestGuide(
query,
out NavigationGuideLease? acquired);
if (status == NavigationGuideStatus.Success)
{
using NavigationGuideLease guide = acquired!.Value;
// Consume ordinary steps and complete held actions over fixed frames.
}Use PathAlgorithm.FlowField with RequestFlowField(...) when many agents
share a destination. Both algorithms consume the same graph, costs,
dependencies, and action-completion contract.
| Package | Use it when |
|---|---|
Trailblazer |
Your LSF dependency graph uses the standard packages and you want JSON plus MemoryPack serialization. |
Trailblazer.Lean |
Your complete LSF dependency graph uses Lean packages and you do not need the MemoryPack transport. |
Do not mix standard and Lean LSF packages in one dependency graph.
- FixedMathSharp supplies deterministic fixed-point math.
- SwiftCollections supplies low-allocation collections and storage.
- GridForge supplies world topology, geometry, and physical cell identity.
- Chronicler supplies explicit state transfer and serialization.
- Get started with a complete route
- Understand Trailblazer's ownership model
- Author and publish navigation maps
- Consume A* and flow-field guides
- Browse the API reference
- Migrate from v1 to v2
dotnet restore Trailblazer.slnx --property:Configuration=Release
dotnet build Trailblazer.slnx --configuration Release --no-restore
dotnet test Trailblazer.slnx --configuration Release --no-buildRepeat with ReleaseLean before changing package, serialization, or public API
behavior. See the
contributor guide
for the full workflow.
Open an issue for bugs and feature requests, or join the LSF Discord community.
Trailblazer is available under the MIT License. See the notice for the repository's branding and redistribution terms.