One of these days, we will have to find a path somewhere, and as everyone in the #worldofWarcraft #emulation community knows, there is only #recastnavigation out there.

no longer. We went ahead and made a Rust port: https://github.com/wowemulation-dev/recast-rs

Wait what? Yeah, Rust. And it has a hidden goodie: dynamic navmesh generation.

GitHub - wowemulation-dev/recast-rs: An enhanced Rust port of Recast Navigation with support for dynamic mesh generation, navigation mesh construction, and pathfinding for games.

An enhanced Rust port of Recast Navigation with support for dynamic mesh generation, navigation mesh construction, and pathfinding for games. - wowemulation-dev/recast-rs

GitHub

And with the latest update we are damn close to matching the original #RecastNavigation

https://github.com/wowemulation-dev/recast-rs#test-mesh-results

Mistakes were made, and fixed πŸ˜„

GitHub - wowemulation-dev/recast-rs: An enhanced Rust port of Recast Navigation with support for dynamic mesh generation, navigation mesh construction, and pathfinding for games.

An enhanced Rust port of Recast Navigation with support for dynamic mesh generation, navigation mesh construction, and pathfinding for games. - wowemulation-dev/recast-rs

GitHub

I've been a huge fan of #recastnavigation for years. With my recent adventures for building #worldofwarcraft tools in Rust, I took a detour (pun intended) over porting RecastNavigation to Rust.

https://github.com/wowemulation-dev/recast-rs is available now.

Its ready for general development usage but I would advise to thoroughly test before using this in production.

Technically my Warcraft tooling is the only use case currently, and not much else has been evaluated.

GitHub - wowemulation-dev/recast-rs: An enhanced Rust port of Recast Navigation with support for dynamic mesh generation, navigation mesh construction, and pathfinding for games.

An enhanced Rust port of Recast Navigation with support for dynamic mesh generation, navigation mesh construction, and pathfinding for games. - wowemulation-dev/recast-rs

GitHub

I haven't been able to work on my #RecastNavigation port the last weeks due to a bit of work overload but guess who finally fnished today? Reached feature parity, and I finally decided on some names.

The individual crates will be:

- ferris-shell # Core mesh building
- ferris-scuttle # Pathfinding & navigation
- ferris-tide # Tile streaming/caching
- ferris-colony # Crowd simulation

Too cringe? πŸ‘€

A few more adventures for #RecastNavigation were had. Kinda went back to write some more tests for it, to get a better grasp of some things.

Main lesson... One of the reasons Recast is so fast: it does not validate Input a lot. πŸ˜…

Continued my #RecastNavigation porting, and found two memory leaks in the original Detour and Recast while cross referencing some features.

Turns out I will have to take a step back from Rust and invest some time to submit my fixes to the upstream project. While testing, I also realize how nice and convenient leak detection these days is.

I am still cleaning up my port of #RecastNavigation but I do have some goodies for the original project. Submitting PRs for SDL3 support and CMakePresets now.

Open Source is no competition, it's the living embodiment of the spirit of cooperation. So even though people may prefer a #rustlang version, I still think it's important to give back to the original project for all the mighty fine work they did

Picking up my #rustlang port of #RecastNavigation again for a bit. Refactoring is on the menu. Originally I had made just a big crate containing Recast, Detour, the crowd management and the tile cache. Trying to take it apart into distinct crates now, to retain some resemblance of the flexibility the original CPP version offers.

Going to put my work on the #RecastNavigation port to #rustlang for a few days. I have completed porting all of Detour and Recast but it's been quite exhausting to learn so many new things at once.

I did get to a point where I have identical values for regions, polygons, etc when loading the Recast demo files but I am definitely feeling tired.

Will get back to this. I definitely want to feed #worldofwarcraft maps into this, and see if it can calculate paths and all in the Rust version too.

#RecastNavigation is a tiny beast. The more I port over to #rustlang the more I realize how much cool stuff is hidden inside.

Lots of fun 😁