Archive
Archive for December, 2008
Points to make
- Influence points far more efficient than influence maps
- Lookups are not much more expensive with some simple preprocessing: alpha_i * f(Distance to local influence point + Distance from local point to primary influence point) where alpha_i is a weight for influence type i, and f is decay function.
- Updates with preprocessed distance are worst case O(|R|) (number of regions)
- Updates w/out preprocessed distance are worst case O(|G|+|R|log|R|) (R: regions, G: gateways), using Dijkstra if no cached data
- Compare these values with region decomps on example worlds + grid discretization on example world
Outline:
- Introduction: strategic information, advantages of navigation meshes, how to integrate influence maps and meshes
- Background: strategic information– waypoint based SBEs, influence maps, other? Navigation mesh background, decompositions
- Method: general overview, detailed description of influence point structure. Lookup costs for calculating influence value. Insertion and update calculations.
- Evaluation: Evaluate costs of influence maps, influence points on four maps
- Conclusion
Scientific:
Accomplishments:
Challenges:
- Need to fully flesh out influence points for the FDG paper
Engineering:
Accomplishments:
- Reworked the percepts so that affordances, percepts, transients, etc. are all consistent. Percept objects are now always dictionaries with a particular set of keys.
- Built the dynamic object registry, which keeps track of all current agent locations as well as object locations
- Added percept types: object (objects and agents), comm (communication strings between agents)
- Rewrote SSPS. I feel like there’s no need for SSPS to be a separate service running in its own thread. There are some optimizations to be made though
- Added capability to add and remove objects from the world to BEHAVE; this relies on having a copy of the World object
- Helped Hunter draw DEACCON regions in the world for debugging
- Added flag drawing on region gateways to the world
- Wrote up baseline bomber and bomb squad xml behaviors
- new triggers: find object, time
- new behaviors: explore, add object, remove object, guard area
- behavior respiffs: goto, patrol, wander (to use SSPS)
- action model now holds onto copy of SSPS object so it can navigate the world– behaviors only need to give a goal point, action model finds the way there.
- changes to trigger so that they all have an “active” instance variable and a deactivate method; not all triggers have been changed over to this way
- my D* implementation works now
- Probably more. I’ll update if i remember things I forgot later.
Problems:
- SSPS could use some optimizations, probably hinting for find region calls– give the last known region, and ssps can first check neighboring regions of that region, and then do exhaustive
- SSPS has a somewhat dodgy A* implementation which will need to be adjusted, but this can wait until influence points and behavior parameters are in. once we have a more dynamic world, it makes sense to switch this to a D* variant, but it’s not necessary now
- Behavior parameters are sort of half in, but I haven’t decided the most principled way to apply them still
- DOR stores objects and agents separately, which is fine, but stores each type in simple lists. this is okay for now, but ultimately needs to use the region decomps
- animations are dicey– needs a rework in FI3RST. possibly ignore further commands while special animations are running
- the consistent dictionaries for percepts are an improvement, and give me some flexibility right now that i need, but percepts should be objects. i think combining all the information types into a unified percept type is the right thing though
- the camera in FI3RST badly needs an overhaul. no idea where to set the culling plane. camera should also start out unattached in the world so that agentcore requests all the NPC agents that are created. i have no control over the model of the first agent because of this
- we’ve got to be a bit more organized about our world scale and creation. if deaccon can’t handle the current size, it should really be switched over to being based on doubles rather than floats, or it should scale the world up, operate, then scale everything back down. this was a real mess
- the BEHAVEngine is a bit of a mess right now– data doesn’t move through it in a clean way, which sometimes makes adding features difficult. of course, most of the time i don’t expect to be adding major new features, so some brainstrain is to be expected when making modifications on the scale of all the above
- I need to know more about the pipeline; it was hard to know who I needed to do what at times this past weekend
Papers
- FDG paper. Title uncertain at this moment, but will figure something out soon. Clearly on influence points.
- Doctoral consortium submission.. I can’t say I’ve even started thinking about this, though I did get briefly excited after either hallucinating or reading a typo the post by Dr. Y’s door that said the 29th was the DC deadline