cz.cuni.amis.pogamut.ut2004.agent.navigation.loquenavigator
Class LoqueRunner

java.lang.Object
  extended by cz.cuni.amis.pogamut.ut2004.agent.navigation.loquenavigator.LoqueRunner
All Implemented Interfaces:
IUT2004PathRunner

public class LoqueRunner
extends java.lang.Object
implements IUT2004PathRunner

Responsible for direct running to location.

This class commands the agent directly to the given location. Silently tries to resolve incidental collisions, troubling pits, obstacles, etc. In other words, give me a destination and you'll be there in no time.

Precise jumper

Most of the incident running problems and troubles can be solved by precise single-jumping or double-jumping. This class calculates the best spots for initiating such jumps and then follows jump sequences in order to nicely jump and then land exactly as it was desired.

Pogamut troubles

This class was supposed to use autotrace rays to scan the space and ground in from of the agent. However, results of depending on these traces were much worst than jumping whenever possible. Therefore, no autotrace is being used and the agent simply jumps a lot. Some human players do that as well. See runToLocation(cz.cuni.amis.pogamut.base3d.worldview.object.Location, cz.cuni.amis.pogamut.base3d.worldview.object.Location, cz.cuni.amis.pogamut.base3d.worldview.object.Location, cz.cuni.amis.pogamut.base3d.worldview.object.ILocated, cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.NavPointNeighbourLink, boolean) for details.

Speed

The agent does not ever try to run faster than with speed of 1.0 as it is used by most of body.runTo*() methods. Anyway, speeding is not available to common players (AFAIK), so why should this agent cheat?

Focus

This class works with destination location as well as agent focal point. Since the agent can look at something else rather than the destination, this running API is also suitable for engaging in combat or escaping from battles.


Field Summary
protected  AdvancedLocomotion body
          Agent's body.
protected  UT2004Bot bot
          Agent's bot.
protected  java.util.logging.Logger log
          Agent's log.
protected  AgentInfo memory
          Loque memory.
protected  Senses senses
          Base agent's senses.
 
Constructor Summary
LoqueRunner(UT2004Bot bot, AgentInfo agentInfo, AdvancedLocomotion locomotion, java.util.logging.Logger log)
          Constructor.
 
Method Summary
 void reset()
          Initializes direct running to the given destination.
 boolean runToLocation(Location fromLocation, Location firstLocation, Location secondLocation, ILocated focus, NavPointNeighbourLink navPointsLink, boolean reachable)
          Handles running directly to the specified location.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

bot

protected UT2004Bot bot
Agent's bot.


memory

protected AgentInfo memory
Loque memory.


body

protected AdvancedLocomotion body
Agent's body.


log

protected java.util.logging.Logger log
Agent's log.


senses

protected Senses senses
Base agent's senses.

Constructor Detail

LoqueRunner

public LoqueRunner(UT2004Bot bot,
                   AgentInfo agentInfo,
                   AdvancedLocomotion locomotion,
                   java.util.logging.Logger log)
Constructor.

Parameters:
bot - Agent's bot.
memory - Loque memory.
Method Detail

reset

public void reset()
Initializes direct running to the given destination.

Specified by:
reset in interface IUT2004PathRunner

runToLocation

public boolean runToLocation(Location fromLocation,
                             Location firstLocation,
                             Location secondLocation,
                             ILocated focus,
                             NavPointNeighbourLink navPointsLink,
                             boolean reachable)
Handles running directly to the specified location.

Pogamut troubles

Reachchecks are buggy (they ignore most of the pits). Autotrace rays are buggy (they can not be used to scan the ground). Now, how's the agent supposed to travel along a map full of traps, when he is all blind, his guide-dogs are stupid and blind as well and his white walking stick is twisted?

There is only one thing certain here (besides death and taxes): No navpoint is ever placed above a pit or inside map geometry. But, navpoint positions are usually the only places where we know the ground is safe. So, due to all this, the agent tries to jump whenever possible and still suitable for landing each jump on a navpoint. This still helps overcome most of the map troubles. Though it is counter-productive at times.

Specified by:
runToLocation in interface IUT2004PathRunner
Parameters:
fromLocation - location we're running from, may be null
firstLocation - Location to which to run.
secondLocation - Location where to continue (may be null).
focus - Location to which to look.
reachable - Whether the location is reachable.
navPointsLink - if we are traveling between two NavPoints connected by a link, we will receive the link with movement information here
Returns:
True, if no problem occured.