quote:
Original post by Geta
I''m trying to make a case for creating a testbed and comparing the performance of the DTA (as you described in the link you referenced above) verses the A* in a pathing performance test. One thing is, I can''t find a single reference where the DTA has been used in pathfinding. Anywhere.
I''ll see what I can come up with for you.
quote:
Original post by Geta
Other sources (and my own intuition) tell me that it is basically a floodfill (where you cost the nodes from the goal to the start) and then a hillclimber (where the DTA follows the lowest cost node from the start to the goal).
Yes, that is a fair assessment of the basic algorithm. There are variations that take into account obstacle avoidance as well (penalising locations that are close to walls and obstacles), but basically the DTA is a reverse direction breadth first search.
quote:
Original post by Geta
And as such, an A* would probably beat it in performance.
Generally speaking, yes...
TF is on the right track...
A*''s performance generally rests on the ability to compute efficiently a suitable heuristic estimate. In many pathfinding domains straight line distance (SLD) is suitable, since it is easy to compute in Euclidean spaces and is guaranteed to never overestimate the cost in monotonic cost domains.
However, in non-monotonic domains - for example, where an agent can use portals to move between locales - A* fails without explicit remapping of the domain to a monotonic cost space. This is not a trivial exercise.
If the heuristic is easy to compute and we know that the cost function is monotonic on the search domain, then discretising either the action space or state space and using A* is the better way to go, since we know it will expand less nodes than any other search algorithm.
The real benefit I have seen in using the DTA is in 3D pathfinding, where an oct-tree representation of the domain was used for finding paths. This makes performing the fill and hill climb exceptionally efficient, especially if more than one search is to be performed. In some games this representation of the domain could come directly from the graphics engine, so there is no need to ''double up'' in the building of this data structure. I haven''t actually seen this done in a game though... the implementation was for a 3D mobile robot (helicopter) moving in an obstructed domain.
quote:
Original post by Geta
Also, do you have a good argument for why such a comparison might be useful to game developers?
If you can show that there exist a sufficient number of game domains in which A* is not suitable (for the reasons I have given above), or where the use of associate data structures (that are already computed in the game) would make the DTA more efficient (due to less computation), then you would certainly have a case for evaluating just how close these methods were (and preferring one over the other in said domains).
Ultimately, I''ve been pushing the DTA a little more than A* lately because it is exceptionally easy to implement and understand, especially for those people who are just beginning in pathfinding.
Cheers,
Tim