HeroPath
|
The HeroPath System is responsible for the generation of NavMeshes used by the Physics Servers, to maintain a server-side representation of the "walkable" parts of an area's geometry. The HeroPath NavMesh is then used to respond to pathfinding requests from other parts of HeroEngine, such as script calls.
Background
Typically, most (non-HeroEngine) game engines generate NavMeshes for use by AI and other systems through a lengthy, perhaps even overnight process, that crunches away on game levels to produce the NavMesh(es) used by server and/or client. The regenerated NavMeshes must then be deployed to server and/or client, new executables run, and so on. This process has a number of significant disadvantages both in terms of game design and the iteration cycle for level designers. Also, an overnight process simply does not match our vision or standard for the production of game content in HeroEngine; highly collaborative, real-time, and WYSIWYG: "What you see is what you get".
HeroEngine originally included (prior to v1.21) a pathfinding system in which NavMeshes were generated by the HeroBlade client and submitted to the Area Server process to use for pathfinding requests. While significantly better than an overnight process, it required the editing client to provide the updates to the NavMesh, and did not provide the area server with actual understanding of the geometry.
In HeroEngine release v1.20, the new Physics server was deployed and HeroEngine's servers suddenly had access to knowledge of the geometry of objects and areas. Limitations in the original (pre v1.21) pathfinding solution, led to the implmentation of the new HeroPath system. With the new system, load is distributed off of area servers to scalable processes, and memory usage is economized. Pathfinding requests are now handled by the physics server processes, and a special physics server process, the PathMaker process, builds NavMeshes and performs micro updates in near real-time for existing navmeshes.
What problems does this solve?
- Sophisticated pathfinding solution for AI and other uses
- Automatic generation of NavMesh through any arbitrary world geometry (assets, heightmaps, etc.)
- NavMesh updates in near real-time as you edit
- Pathfinding queries available to HSL on the server
- New Pathing Panel providing control over NavMesh generate, debugging and visualization
What problems does this not solve?
- Not an implementation of AI, it does not make decisions for your "creatures"
Concepts
Components of the HeroPath System
The HeroPath system is comprised of multiple elements including:
- Path Planning panel in HeroBlade
- Physics Server processes, which handle requests for pathfinding information
- PathMaker process, a type of Physics Server process specifically tasked with creating and updating the HeroPath NavMesh in each area
- C++ API exposed to HSL
- $PATHSYSTEM system node wrapping the C++ API
- Path Planning Technical Information
Requests for Information are Asynchronous
The core of the HeroPath system lives in the Physics server, a separate process that may be located on a separate machine in a cluster. Consequently, all requests to the HeroPath system are asynchronous in nature.