forked from mirror/DotRecast
87 lines
5.2 KiB
Markdown
87 lines
5.2 KiB
Markdown
[![License: Zlib](https://img.shields.io/badge/License-Zlib-lightgrey.svg)](https://opensource.org/licenses/Zlib)
|
|
[![.NET](https://github.com/ikpil/DotRecast/actions/workflows/dotnet.yml/badge.svg)](https://github.com/ikpil/DotRecast/actions/workflows/dotnet.yml)
|
|
[![CodeQL](https://github.com/ikpil/DotRecast/actions/workflows/codeql.yml/badge.svg?branch=main)](https://github.com/ikpil/DotRecast/actions/workflows/codeql.yml)
|
|
[![NuGet Version and Downloads count](https://buildstats.info/nuget/DotRecast.Core)](https://www.nuget.org/packages/DotRecast.Core)
|
|
![Github Repo Size](https://img.shields.io/github/repo-size/ikpil/DotRecast)
|
|
![Languages](https://img.shields.io/github/languages/top/ikpil/DotRecast)
|
|
[![Visitors](https://api.visitorbadge.io/api/daily?path=https%3A%2F%2Fgithub.com%2Fikpil%2FDotRecast&countColor=%23263759&style=flat-square)](https://visitorbadge.io/status?path=https%3A%2F%2Fgithub.com%2Fikpil%2FDotRecast)
|
|
[![GitHub Sponsors](https://img.shields.io/github/sponsors/ikpil?style=flat-square&logo=GitHub-Sponsors&link=https%3A%2F%2Fgithub.com%2Fsponsors%2Fikpil)](https://github.com/sponsors/ikpil)
|
|
|
|
# DotRecast : C# Recast & Detour
|
|
|
|
DotRecast is a port of C++'s [recastnavigation](https://github.com/recastnavigation/recastnavigation) and Java's [recast4j](https://github.com/ppiastucki/recast4j) to the C# language.
|
|
|
|
## 📹 Youtube
|
|
<a href="https://youtu.be/zIFIgziKLhQ"><img src="https://user-images.githubusercontent.com/313821/266750582-8cf67832-1206-4b58-8c1f-7205210cbf22.gif" width="100" height="50"/></a>
|
|
<a href="https://youtu.be/CPvc19gNUEk"><img src="https://img.youtube.com/vi/CPvc19gNUEk/0.jpg" width="100" height="50"/></a>
|
|
<a href="https://youtu.be/pe5jpGUNPRg"><img src="https://img.youtube.com/vi/pe5jpGUNPRg/0.jpg" width="100" height="50"/></a>
|
|
|
|
## 🚀 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](https://arongranberg.com/astar/)
|
|
- `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](https://dotnet.microsoft.com/) 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
|
|
|
|
- need to install [microsoft visual c++ redistributable package](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist)
|
|
|
|
#### 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
|
|
|
|
- discussions:
|
|
- https://github.com/recastnavigation/recastnavigation/discussions
|
|
- issues:
|
|
- https://github.com/ikpil/DotRecast/issues or
|
|
- https://github.com/recastnavigation/recastnavigation/issues
|
|
|
|
## License
|
|
|
|
DotRecast is licensed under ZLib license, see [LICENSE.txt](LICENSE.txt) for more information.
|