Loading...
 

PogamutUT2004


Restricted Navigation

I doubt this exists, but I figured I'd ask:

The path planners with Pogamut find the shortest path based on the nav graph given to the bot by the game. Sometimes the only way to reach a certain location is by jumping, double-jumping, or using a mover like an elevator. However, sometimes there are multiple routes to a destination, some of which can be traversed by simply walking/running on solid ground, and other which involve jumping, elevators etc.

Is there a way to restrict the path planner to only plan along routes that don't involve jumping? Or that don't involve movers? Or both?

This is sort of related to my other post asking how to edit the nav graph. Basically, there is at least one example I'm annoyed by where the bot always jumps to cut a corner while walking on a cat-walk. There is an alternate path that involves keeping your feet planted on the cat-walk, and that is only slightly longer, but I would prefer the bot follow the slightly longer path because jumping to cut the corner sometimes screws up.

I know that the links store information about how they need to be traversed ... but can the path planner discriminate based on this info?
Hi!

Thanks for questions. Firstly, we cannot change the way native UT2004 path planner is working. Floyd-warshall algorithm cannot be bend every time you run it (obviously N^3).
What you're seeking is A* with customized "map view".

I've never found time yet to fully integrated my side-project amis-path-finding with UT2004.
You may checkout it from: http://artemis.ms.mff.cuni.cz/websvn/listing.php?repname=Pogamut&path=%2Ftrunk%2Fproject%2FUtils%2FAmisPathFinding%2F&#ae4a11e01bdf8672eef02129f56486530

It is a small library containing robust implementation of A* and Floyd-Warshal. Check "test" sources for usage. To quickly point you to few classes:

1) first you have to implement IPFMap, that will adapt NavPoint & NavPointNeighboutLink for A* hidden in the library,
this implementation should be honest and do not remove any arc/node from the graph

2) second you need to implement various "view" on the map via IPFMapView interface that may restrict/extend existing IPFMap
This view on the map means to be "agent-centric", here you should specify things like "jump links costs much more", etc.

3) just assemble it all together using new AStar(IPFMap<NODE> map, IPFMapView<NODE&gtl view)
and public synchronized AStarResult<NODE> findPath(IPFGoal<NODE> goal, long iterationsMax)

Note that path-computing are not-that-costly (few ms up to 10 ms I believe) so you might go for this strategy:
1) use conventional FloydWarshalMap
2) use one or two of your customized A*-path-planners
3) compare multiple paths and pick the most suitable one

Cheers!
Jakub

P.S.: please, if you create a few implementations of IPFMap and IPFMapView, would you consider donating that code
into our repo?
 

News

News RSS RSS feed for News link



Pogamut

Quarterly RSS RSS feed for quarterly reports

Acknowledgement

This work is supported by GA UK 1053/2007/A-INF/MFF (2007-8), GA UK 351/2006/A-INF/MFF (2006-8), the Ministry of Education of the Czech Republic (grant MSM0021620838) (2008-9), by the Program "Information Society" under project 1ET100300517 (2006-9), and the project Integration of IT Tools into Education of Humanities (2006-8) and by the project CZ.2.17/3.1.00/31162, which are financed by the European Social Fund, the state budget of the Czech Republic, and by the budget of Municipal House Prague.