Movers/Elevators Posted by jacob.schrum on Tue 03 of May, 2011 03:58 CEST It seems that even the new KefikRunner sometimes has problems with Movers/Elevators. Can I get some tips on various methods that can help deal with elevators and movers?
Posted by jakub.gemrot on Tue 03 of May, 2011 04:07 CEST Hi, we're sorry 1) please report map + from which navpoint to which navpoint you're moving so I could check it out 2) you can check the source code of UT2004BotModuleController and check out how to instantiate pathExecutor with custom runner 3) and then copy-paste LoqueNavigator class && KefikRunner class into your new JacobNavigator / JacobRunner class and try to tweak it out. Prepare for strange code ... hopefully KefikRunner should be fine to read as there are many comments ... but LoqueNavigator is a bit messy ... Cheers! Jimmy
Posted by jakub.gemrot on Tue 03 of May, 2011 04:07 CEST Or you can always use the old LoqueRunner. Cheers! Jimmy
Posted by jacob.schrum on Thu 05 of May, 2011 20:13 CEST I'm pretty sure LoqueRunner has the same problems. I'm mainly having problems with the elevator on DM-Asbestos. I'm already made my own custom runner, but what I was asking was how I make the bot detect movers and deal with them. Even if I customize my path runner to deal with movers, I still need to have the right sensors to deal with them. Can bots sense when a navpoint is near a Mover? Can they tell whether an elevator is in the up or down position so they will know to wait instead of having it come down on their heads?
Posted by michal.bida on Thu 05 of May, 2011 20:26 CEST It works like this: each mover has a navigation point associated with him which moves with the mover. For lifts it is LiftCenter navigation point. So to handle movers correctly it is best just to look on the movement of associated navigation points. I am not sure if you can get this point from Mover object in Pogamut, but navigation points should have a field isLiftCenter or something like that (and perhaps Mover attribute where Id of associated mover is saved). About that sensing - those explicit sense are not present in Pogamut, you have to implement them yourself - e.g. check the position of nav. point and compare it to bot location .z coordinate if the mover arrived down, etc. Best, Michal
Posted by jacob.schrum on Thu 05 of May, 2011 20:28 CEST Ok, I've found a bit of info, but need more help. NavPoints have methods getLiftCenter and getLiftExit, but the javadoc doesn't make the definition clear to me. Is the LiftExit always the top of the elevator? Is the LiftCenter always a point on the elevator? Does the position of the LiftCenter change if the elevator moves? When the elevator is at the top, do the LiftCenter and LiftExit share the same location?
Posted by jacob.schrum on Thu 05 of May, 2011 20:47 CEST Guess we were posting at the same time... Your post answers my question. Thanks.
Posted by michal.bida on Thu 05 of May, 2011 23:24 CEST The z coordinate of lift exit will match approximately the z coordinate of lift center when at top/bottom position - but I would still use some delta ~ 50 ut units for example. I am always thinking that when doing some AI for deathmatch bot one always finds himself doing better path finding... I think the problem is that the path finding component of AI concerned with deathmatch bots is really one of the crucial things. Withouth good path finding the bots will NEVER appear to be human like or intelligent. The path finding in pogamut improved significantly from Pogamut 2.0, but still it is far from being perfect on complex maps. :-/ Our solution to the problem is: to use maps that are simple enough for path finding to work... Or as jimmy suggested before (did he?) to post process the navigation graph and remove non-traversable edges (or to be precise - edges WE are unable to traverse in Pogamut... I was seeing native UT bots doing things I couldn't do. )... Best, Michal