Maul Nav

Game navigation in C: navmeshes baked from your geometry, paths, crowds and fliers, the same bits on every machine.

CI License: MIT Release OpenSSF Scorecard

Agents in a game need to know where they can walk, how to get somewhere, and how to get there without walking into each other. Maul Nav answers those questions for games, engines and simulations, and leaves the world to the host: it takes the geometry the host extracts and returns paths, corners and velocities the host applies.

Results are bit-identical on every platform, compiler and worker count, so a server and its clients agree on every path. The library starts no threads, keeps no clock and takes no dependencies beyond the C library.

Quick start

It builds with CMake 3.25 or newer and GCC 14 or newer, Clang 19 or newer, or Apple Clang. Ubuntu 24.04's default compiler is GCC 13, which the build refuses, so there install GCC 14, with Git and CMake, and tell CMake to use it:

sudo apt install git cmake gcc-14
export CC=gcc-14

Then, on Linux and macOS:

git clone https://github.com/Rawframe-Project/maul-nav.git
cd maul-nav
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
ctest --test-dir build
./build/sample_walk

A build/ that GCC 13 already configured keeps that compiler and fails again ("GCC 14 or newer is required"). Remove it and configure again, with CC exported as above, then carry on with the rest of the block from cmake --build build:

rm -rf build && cmake -B build -DCMAKE_BUILD_TYPE=Release

On Windows the library builds with clang-cl, and on the web with Emscripten; Getting started lists what each needs.

Install it with cmake --install build --prefix <prefix> and use it from CMake:

find_package(maul-nav REQUIRED CONFIG)
target_link_libraries(app PRIVATE maul-nav::maul-nav)

or through pkg-config as maul-nav. Getting started covers the build options, the samples and the model the API follows.

Platforms

Linux on x86-64 and arm64 with GCC 14 or Clang 19 and newer, macOS with Apple Clang, Windows with clang-cl, and WebAssembly with Emscripten; CI builds and tests each. The public headers are C17 and C++17, so any C or C++ program can include them.

Documentation

Maul Nav belongs to the Maul family of standalone C libraries, which share one set of conventions.

Contributing

Issues are welcome. Pull requests are accepted for issues a maintainer has approved; see CONTRIBUTING.md. The project is developed with AI coding agents, directed and reviewed by its maintainers; outside contributions follow the AI policy.

License

MIT; see LICENSE.