Week 1
This week was really slow because I had some school work to complete and assignments to submit. It also took me a while to get my workspace set up with intellij. Maybe it takes time to get the wheels rolling, so the weeks to come will definitely be much more productive with most of my commitments going away.
This week was filled with fruitful discussion with casals and others over the possible ways of taking the main aspects of the project forward, with discussions regarding KD trees, sight algorithms. Some other aspects that I was confused about have been cleared, like how storing just the nodes would not be sufficient and information regarding the edges would also need to be stored.
I implemented a slope facet that determined the slope at different points in the terrain. It used finite differencing to approximate the derivative with respect to x and with respect to z and the vectors were then added. However, I later found out another implementation which calculated the normal at a position in the terrain and then calculated the slope (Thanks to skaldarnar). Which method will suit better can only be ascertained with testing.
Further I read through and understood most of the working of the minion move to and move along path behaviours (linked to pathfinding), and tried implementing the same in Metal Renegades. Currently, only a simple move_to behaviour node is present in the NPCs behaviour tree causing them to only have a primitive , go in a straight line mechanism. This results in the NPCs to be stuck behind walls helplessly trying to make it across. This will be fixed in the coming weeks.
Things blocking me right now.
How to get the slope facet information integrated into pathfinding.
- inject the slopefacet provider into pathfinding and create an A*withSlopeCosts class in pathfinding that uses this information.
- inject and use the slope facet provider within DC and then pass the cost function (with slope and distance information) into Pathfinding API (General pathfinder's computepath() method) which returns a path.
Still need a quicker method of testing paths.
To be done next week.
Complete implementation of A* with slope costs.
Write tests for it