Archive for March, 2009

Week 13 Report

Monday, March 30th, 2009

Eng :

Developed or found in the wxpython demo  of the custom controls required for Behavior Shop 1.0
Logging Windows
Custom Panels with drop down boxes and linked help buttons
Better GDI+ drawing and box moving systems
Tree Controls with a triangle graphic rather than the plus/minus graphic

Implemented 3D space filling volumes coding the adaptive part tonight and tomorrow night – I am amazed at how compact a python implementation of ASFV is turning out to be compared to a full C# or C++ implementation.

Gave Keith a hand on some math problems with the level editor

Sci :

Read an interesting paper on 3D motion planning located here

Polished my design of ASFV 3D and starting formulating my introduction for the AIIDE paper and gathering related work.

Thought up another advantage that using ASFV over more traditional triangle/vertex based decomposition metrics.  DEACCON and tools derived from it should be better able to adapt to future 3D simulation and game environments than  vertex based approaches.  This occurs because DEACCON run times are controlled by the sizes of the worlds to be decomposed which is somewhat constant, while Vertex based approaches are run time limited by how complex the geometry present in the world is, which is growing exponentailly more complex as graphics hardware advances.

Week 11 Report and Summary of Prior Weeks

Monday, March 16th, 2009

Science:
Ran 6 external people through the study for the guard scenario.
Begin compiling formal results for that study.
Did design work on Behavior Shop to better incorporate the feedback we received.
Cleaned up my scenario 1 report.

Engineering:

Worked on pyDEACCON – saturday & sunday

  • Negative spaces were able to grow into other negative or positive spaces if they had perfectly colinear edges  – fixed
  • Implemented better perfect quality seeding
  • Converted pyDEACCON to use MVC model, and the DEACCON portion is fully encapsulated into  “model”.
  • Changes the view in pyDEACCON to use FI3RST.
  • Loading and rendering of arbatrary geometry is now supported in FI3RST
  • Continually updating and redrawing of pyDEACCON is now supported in FI3RST
  • pyDEACCON is now threaded off from its rendering component – This allows the system to render faster than pyDEACCON can grow and allows detailed views of the growth procces
  • Implemented a “vertical spreading” of pyDEACCON regions so it possible to clearly see where one region stops and another stops
  • Implemented better growth control algorthim to ensure colinearity.
  • Completely fixed the problem where growing regions would “catch” on a neighboring region and incorrectly stop growing.

Challenges:

Getting panda to redraw the updated decomposition
Some minor thread safety issues caused by threading off the decomposition
Getting people in here to finish up my study participant quota
A panda error message when attempting to draw triangle fans that was exactly wrong (“# vertices supplied >= max_support_vertices”) when in fact I was passing in less than three vertices.

Plans:
Finish writing up Behavior Shop 1.0 and Start Implementation
Develop video for GRF
Summary / Long Term Update :
Science:

The DEACCON work was voted most influencial academic game AI paper of 2008 by AIGameDev.com

Developed and implemented an algorithm to dynamically repair invalidated spatial decompositions to allow for more dynamic game worlds

Developed a series of metrics for the evaluation of spatial decomposition

Developed theory for and have started implementing 3D spatial decomposition technique.  The critical part of a 3D spatial decomposition is that the decomposition be aware of the affordances provided by the environment.  Stairs for example require a decomposition such that the area above each stair is a tall enough column to fit an entire agent into.  A naive approach to 3D decomposition would result in regions seeding from the center of each plane and growing from there.  However, such an approach will result in major problems for our stair example many of the stairs will have small unusable regions on them while a few stairs will have enormous oversize regions that extend out over open space.  The fix for this is to use a gravaty based seeding that drops every new region to contact with the ground which ensures it initially begins growth by following the ground plane.

Engineering

Implemented the alpha version of BehaviorShop.  After initial internal trials it was decided a more natural language approach was needed and we decided to go with a sentance based behavior structure.  Users build behaviors layers by filling in the blanks of a sentance describing the behavior.  This approach was found more natural and enjoyable by our users.  During human trials using this method users were heard subconsciously reading off the sentances that described the behaviors they were constructing, which indicates they were quite comfortable with how behaviors were built. Human testing on behavior shop produced an interesting list of lessions learned (stored in GIG2008/Documents/BehaviorShopFirstHumanTrialInitialResults.doc) to be incorperated into BehaviorShop 1.0.  The demographics and fully compiled results from this study will be stored in GIG2008/Documents/BehaviorShopFirstHumanTrialFinalData.doc.

Implemented several lighting and rendering technology upgrades for use in FI3RST.

 

 

ASFV panda transition

Sunday, March 15th, 2009

Its a big day for the python implementation of ASFV (pyDEACCON) as it just made the jump to rendering and growing in panda3d and as a bonus became multi-threaded. In addition pyDEACCON is now completely modular (MVC) and can easily be hooked up to any rendering system now.  It could even be rigged to run as a script in a level editor built in maya/mod tool.

Right now the “adaptive” part of ASFV is still a little flacky but that should go away tonight now that I can see what is going on in real time (no more flicker or lag in growth).  Panda really shows off how efficient it is by building initial decompositions and still maintaining 30+ fps

pictures coming once study participant runs through.

Behavior Shop 1.0 Design Notes

Monday, March 9th, 2009

The behavior drop down sentence structure needs to be dynamically generated.  I was thinking that the best way would be to store the triggers sentence structure as a tree model.

(insert picture here)

The root node would be the first selection box and as the user picks selection boxes they traverse down the tree.  Each node in a tree represents both an option a user can select (the parent node will actually be a control that exposes it children as options) and a new control which if selected will dynamically present it to the user.  Leaf nodes will represent paths through the tree which terminate at the parent nodes selection box and do not expose further choices.  This will enable the UI to adapt to changes in the listing of available behaviors on the fly and to automatically place additional selection boxes on the screen.  It will also allow for more atomic behaviors

Weekly Report 10

Monday, March 9th, 2009

Science:

Ran 4 internal and 5 external people through the study.

Results were somewhat disappointing though not unexpected.

Read an article on the trunk packing problem and some new approaches to it

http://scitation.aip.org/getabs/servlet/GetabsServlet?prog=normal&id=PLEEE8000079000002021102000001&idtype=cvips&gifs=yes

Worked on compiling an updated Scenario 1 report

Also compiling a report on the feedback from the study

Engineering:

Made a few minor changes to BehaviorShop -

  • Fixed a minor crash bug
  • Expanded the information outputed by the program
  • added the string “click on map to set location” to the following behavior “go to point”, “patrol”, “guard” in response to users not actually clicking anywhere on those behaviors
  • Condensed request / confirm authorization back down into one behavior in the interface
  • Fixed a problem with conditionals not being correctly remembered when the user re-enters a previous behavior

Worked on DEACCON – Python saturday

  • Negative spaces were randomly growing into each other – fixed
  • Spaces near the edge of the area to decompose were not growing correctly – fixed
  • Seeding  intervals were not being applied correctly – fixed
  • Exactly parrallel negative space regions are not performing correct collision detection – tracked down and under repair
  • wx.Python GDI+ implementation can’t handle the # of redrawn calls DEACCON generates – solution 1 implemented double buffering problem grew worse due to overhead of double buffering (reverted) / solution 2 – Integrating DEACCON with a FI3RST engine to use the better framerate the panda3d engine can supply – status – Underway

Challenges:
wx.Python can’t render the DEACCON growth fast enough so I can’t see what is happening during the decomposition which makes debug hard.

Plans:

Fully functional DEACCON 2D with all the trimmings (adaptive repair, convex combining, ect) running in FI3RST by the end of the week

Aquire a total of 12 study participants by end of buisness today and write up observations and feedback by tommorrow morning for use in 1.0 of behave engine/behavior shop

Transfer all study required code to the laptop for remote testing in 3rd floor lab and lobby of building.

Design Behavior Shop 1.0

Week 9 Report

Tuesday, March 3rd, 2009

Engineering:

Worked in BehaviorShop to resolve the issues preventing us from doing human testing:

Resolved the folliwng mantis issues: 673 – 684 : Mainly UI bugs and tweaks and changes to the natural language approach

BehaviorShop looks to now be ready to go now

Cleaned up an issue or two with FI3RST

Science :

Worked on some theory for 3D ASFV.  I was thinking about how the seeds work and wondering if having them always drop straight to the ground makes the most sense.  I was thinking that they could uses a “stickyness” and “bouncyness” paramater that would make them bounce and roll around a user controlable amount and wondering how this would impact the geometry of the decomposition.  I was also thinking about introducing a pregrowth test that looks for other seeds in a given euclidean distance and only allowing one of them to grow while the others lay dormant.  Then after all regions have grown but before another round of seeding the algorithm can look through the seeds flagged as dormant removing those that are inside decomposed areas and let the ones that are still in free space grow.