Develop the preconditions for creation of tool(s) for visualisation and testing of various aspects of the data (graph nodes, terrain data etc) and approaches (pathfinding path visualisation etc)
- An initial version of TerrainData class was created
- A simple small (100m x 100m) Unity terrain was created as a base.
- A script was created to create a TerrainData object from a Unity terrain and height sampling interval space.
- A debug method was created to visualise the TerrainData (distinct from the terrain object it was taken from) in order to confirm the accuracy of the Unity terrain to TerrainData method.
The Unity terrain is a small terrain however provides some nice undulations and cover with a central higher area for the enemy location.
The validity of the TerrainData object drawn the relevant data from the Unity terrain was confirmed through a basic visualisation method; 1m cubes were spawned at each sampled data point.
Initially this was done with 1m samples which effectively recreated the terrain (albeit in a blocky form)
This was also tested successfully with 5m sample intervals
Overall the TerrainData object works well and the system of creating a TerrainData object from an existing Unity terrain works well.
The visualisation system needs to be properly implemented as creating a high number of game objects (the cubes) will cripple performance. The goal of these tools is to assist in the testing as opposed to create additional hurdles so this is an important issue.
2 hours (18 hours running total)
- Develop a separate node visualisation script (one that is not system crippling like instantiating (tens… hundreds… of) thousands of unity cubes) for use with pathfinding graph, viewshed calculation points and possibly solution candidates (effectively something that will show a point in space with some relevant information; possibly making use of common interface?)
- Develop a script to create a Unity terrain from a TerrainData object (This will be required for visualising terrains from external data sources).
- Implement pathfinding graph creation and visualisation.
Previous ongoing – No change:
- Confirm specific differences between evolutionary approaches and simulated annealing and iterated hill climbing approaches and investigate pro/cons of each method.
- Review viewshed calculation options and look into optimisation
- How to make data course enough to prevent exponential time requirement
- Possible ‘horizon’ distance (edge of visibility for dismounts) in order to make viewshed calculation have an upper limit?
- General background ( http://mapaspects.org/colca/research/viewshed/what_is.html )
- A Fast Algorithm for Approximate Viewshed Computation ( https://pdfs.semanticscholar.org/63c1/857866341dbf79158fdbfa4c9f4046a11e3d.pdf )
- Matlab implementation ( http://au.mathworks.com/help/map/ref/viewshed.html )
- X Draw implementation
Efficient viewshed computation on terrain in external memory
- On IO-efficient viewshed algorithms and their accuracy ( http://www.bowdoin.edu/~ltoma/papers/2013-acmgis-vis.pdf )
- Review dynamic flow field implementations
- Hybrid Vector Field Pathfinding ( http://www2.cs.uregina.ca/~anima/408/Notes/Crowds/HybridVectorFieldPathfinding.pdf )
- Review non grid based pathfinding solutions (eg. Mesh based).
- Develop quantified comparisons of pathfinding options available.
- Continue implementing basics of data classes (Terrain data etc) and tie in to Unity terrain.
- Test simplistic candidate pathfinding implementations in order to develop comfort with the algorithms. Set conditions for benchmarking tests.
- Review “A Comprehensive Study on Pathfinding Techniques for Robotics and Video Games” (https://www.hindawi.com/journals/ijcgt/2015/736138/) again.
- Graph representation.
- Pathfinding solutions.
- Review https://harablog.wordpress.com/ for further pathfinding discussion.
- Review “Optimizations of data structures, heuristics and algorithms for path-finding on maps” by Tristan Cazenave.
- Review “AN OPTIMIZED HYBRID APPROACH FOR PATH FINDING” (https://arxiv.org/ftp/arxiv/papers/1504/1504.02281.pdf).
- Review Parallel Ripple Search – Scalable and Efficient Pathfinding for Multi-core Architectures (https://graphics.tudelft.nl/Publications-new/2011/BB11a/BB11a.pdf).
- Review Crowd Pathfinding and Steering Using Flow Field Tiles (http://www.gameaipro.com/GameAIPro/GameAIPro_Chapter23_Crowd_Pathfinding_and_Steering_Using_Flow_Field_Tiles.pdf).
- Develop competency with multithreading in order to allow interaction with program while computationally expensive actions (eg. pathing) is occurring.
Payoff. The time investment in developing a suite of visualisation tools will be well spent; it is a small distraction from the research (and nice to get a bit of more practical work) however it will greatly assist in the testing of various approaches (eg. viewsheds, pathing, optimisation algorithms etc).
Plus it was a bit of fun.