Spite: Coldheart

  • Diablo inspired top down adventure

  • 8 weeks halftime

  • Made in Thin Ice (in-house C++/DX11 Engine)

Screenshot_9.png

Introduction

For this project we decided to use a Navigation Mesh as our solution for pathfinding. I worked closely with one of our Technical Artists to develop an easy to use solution for our level designers.

Export and Cleaning

We decide to use Unity3D as our level editor, which gave us the tools needed to generate a NavMesh at the click of a button. All that was up to me was to integrate the export of the NavMesh into our main Level Exporter. Using Unity3D's NavMeshTriangulator, I could triangulate the NavMesh and export it as a .OBJ file. We quickly noticed that the resulting mesh was not usable at all. Vertices were duplicated and some triangles were not connected the way we expected them to be. At this point I sought help from our wonderful Technical Artist to develop a tool that I could use via C# to clean the exported NavMesh. Using Houdini one our Technical Artists developed a Houdini Digital Asset, which could be imported to unity, and used with a C# API. Using this tool, we developed a one click export, that triangulated the NavMesh, exported it to a .OBJ file, and then run through the Houdini Digital Asset to produce a clean mesh, suitable for use.

HDAncInitialization.png

Import and Pathfinding

On start up we parse the OBJ file, creating a graph of how the triangles are connected so we could more easily perform our choice of pathfinding algorithm: "A-Star". We also used the string pulling algorithm to straighten out the resulting path, making sure we not only find a path from point A to B along the graph, but also the shortest path from point A to B along the Navigation Mesh. 

Afterthoughts

This projected really reminded me of how fun it is to solve problems together, especially cross-disciplinary. It's rewarding to get some insight in the kind of tools and workflow other disciplines use, and figuring our how to combine different people's skills to create something more powerful. It tends to result in a great morale boost for the whole group!