Hey! I’m planning on releasing a pathfinding package, and I wanted to get some input from you guys. What sort of features do you want out of a pathfinding system?
First, let me give a brief background on myself. My name is Alex Kring, and I’ve been working in the games industry for about 4 years, working mostly on AI. I’ve shipped 4 games under The Sims franchise, and one game for the Sony Move. More recently I’ve been working on Resistance for the NGP. This past year I gave a talk on pathfinding at the GDC, I presented a pathfinding research paper at the AIIDE at Stanford, and I have several publications on pathfinding with AiGameDev [1] [2].
The focus of this package will be to do one thing really well: pathfinding. It will not handle path-smoothing, steering, or terrain representation (though it will come with an example project that uses a grid representation and simple steering). I find that all of theses features heavily depend on the project you are working on. The package will be setup so that you can easily integrate your existing steering system and terrain representation.
Here are the features I plan on supporting:
- A* pathfinding
- User-defined terrain representation (ex: waypoint, nav mesh, grid)
- User-defined A* heuristic (ex: euclidean distance, manhattan distance)
- User-defined target (ex: position, game object)
- Load-balancing (the user defines the number of A* cycles to solve per frame, and per planner)
- Re-plan rate (set a float value that determines the number of seconds before a path will be re-planned, since some game worlds are very dynamic).
- Custom unity editor that displays debug visuals, performance, and maybe some sort of testing?
- Example project that uses a grid terrain representation, and a simple steering system. The project will navigate a bunch of cylinders around the world.
Here are some of the more technical details
- A* priority queue will use a binary heap
- There will be no run-time allocations. All allocations come from a memory pool.
- Variable number of planners (user defines the number of planners within the system)
- User defines the maximum number of nodes per planner, and thus the search depth and amount of memory used.
When I say “user-defined”, I mean that the package will provide an existing solution, but it will allow you to define your own solution through an interface. For example, the package will come with a grid terrain representation. But, if you want to use a nav mesh, you will need to create your own NavMeshTerrain class, that inherits from the IPathTerrain C# interface.
Finally, the software will not be free, I will be selling it on the Unity Asset Store. I haven’t yet decided on a price point, but you should expect it to be priced the same as other similar packages.
Let me know if this is something that sounds useful to you guys, and let me know what features you are looking for!