Skip to content

Repository files navigation

Trailblazer

Trailblazer Icon

Build Branch Coverage NuGet NuGet Lean License API Discord

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.

Why Trailblazer?

  • 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.

Install

dotnet add package Trailblazer

Trailblazer targets netstandard2.1 and net8.0. The standard package includes JSON and MemoryPack serialization support.

Request a route

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.

Choose a package

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.

Built on the LSF stack

  • 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.

Learn more

Development

dotnet restore Trailblazer.slnx --property:Configuration=Release
dotnet build Trailblazer.slnx --configuration Release --no-restore
dotnet test Trailblazer.slnx --configuration Release --no-build

Repeat with ReleaseLean before changing package, serialization, or public API behavior. See the contributor guide for the full workflow.

Community and license

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.

About

A deterministic, framework-agnostic pathfinding and navigation library for lockstep simulations and games

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Contributors

Languages