DotRecast - a port of Recast & Detour, Industry-standard navigation mesh toolset for .NET, C#, Unity3D, games, servers
Go to file
ikpil af5b70d7f4 small refactoring 2024-01-13 22:06:06 +09:00
.github Create FUNDING.yml 2024-01-01 19:10:54 +09:00
.vscode support .net 8 in vscode 2023-11-16 23:25:55 +09:00
resources remove lfs 2023-09-09 13:11:27 +09:00
src small refactoring 2024-01-13 22:06:06 +09:00
test rename RcTelemetry to RcContext 2024-01-07 13:00:38 +09:00
.editorconfig [Upstream] Typo fixes (recastnavigation #660) 2023-08-18 14:04:56 +09:00
.gitignore ignore imgui.ini 2023-03-19 04:36:56 +09:00
DotRecast.sln add core test 2023-08-10 08:44:00 +09:00
LICENSE.txt Update LICENSE.txt 2023-03-15 22:54:42 +09:00
README.md update: readme - how to works 2024-01-12 02:54:17 +09:00

README.md

License: Zlib .NET CodeQL NuGet Version and Downloads count Github Repo Size Languages Visitors GitHub Sponsors

DotRecast : C# Recast & Detour

DotRecast is a port of C++'s recastnavigation and Java's recast4j to the C# language.

📹 Youtube

🚀 Features

  • 🤖 Automatic - Recast can generate a navmesh from any level geometry you throw at it
  • 🏎️ Fast - swift turnaround times for level designers
  • 🧘 Flexible - detailed customization options and modular design let you tailor functionality to your specific needs
  • 🚫 Dependency-Free - building Recast & Detour only requires a .NET compiler
  • 💪 Industry Standard - Recast powers AI navigation features in Unity, Unreal, Godot, O3DE and countless AAA and indie games and engines

Recast Navigation is divided into multiple modules, each contained in its own folder:

  • DotRecast.Recast: Navmesh generation
  • DotRecast.Detour: Runtime loading of navmesh data, pathfinding, navmesh queries
  • DotRecast.Detour.TileCache: Navmesh streaming. Useful for large levels and open-world games
  • DotRecast.Detour.Crowd: Agent movement, collision avoidance, and crowd simulation
  • DotRecast.Recast.Dynamic: robust support for dynamic nav meshes combining pre-built voxels with dynamic objects which can be freely added and removed
  • DotRecast.Recast.Extras: simple tool to import navmeshes created with A* Pathfinding Project
  • DotRecast.Recast.Toolset: sdk
  • DotRecast.Recast.Demo: Standalone, comprehensive demo app showcasing all aspects of Recast & Detour's functionality
  • test/DotRecast.*.Test: Unit tests

⚙ How it Works

Recast constructs a navmesh through a multi-step mesh rasterization process.

  1. First Recast rasterizes the input triangle meshes into voxels.
  2. Voxels in areas where agents would not be able to move are filtered and removed.
  3. The walkable areas described by the voxel grid are then divided into sets of polygonal regions.
  4. The navigation polygons are generated by re-triangulating the generated polygonal regions into a navmesh.

You can use Recast to build a single navmesh, or a tiled navmesh. Single meshes are suitable for many simple, static cases and are easy to work with. Tiled navmeshes are more complex to work with but better support larger, more dynamic environments. Tiled meshes enable advance Detour features like re-baking, heirarchical path-planning, and navmesh data-streaming.

Building DotRecast.Recast.Demo

  1. DotRecast.Recast.Demo uses dotnet 8 to build platform specific projects. Download it and make sure it's available on your path, or specify the path to it.
  2. Open a command prompt, point it to a directory and clone DotRecast to it: git clone https://github.com/ikpil/DotRecast.git
  3. Open <DotRecastDir>\DotRecast.sln with Visual Studio 2022 and build DotRecast.Recast.Demo
    • Optionally, you can run using the dotnet run command with DotRecast.Recast.Demo.csproj

Windows

Linux & macOS & Windows

  • Navigate to the DotRecast.Recast.Demo folder and run dotnet run

Running Unit tests

With VS2022

  • In Visual Studio 2022 go to the test menu and press Run All Tests

With CLI

  • in the DotRecast folder open a command prompt and run dotnet test

Discuss

License

DotRecast is licensed under ZLib license, see LICENSE.txt for more information.