07/18/08
- created BDSM::Map with its necessary bits
- added test script
- added BDSM::Transform
- BDSM::Map has a coordinate check() method
- BDSM::Map gets random getpt()
- Sprite object and player-centered skeleton
- BDSM::Vector

7/19/08
- Sprite::Shape, a multi-celled sprite has been created. It works perfectly and the blitting
  is miraculously efficent
- Everything can validly push everything else, with only 2 minor bugs.

7/20/08
- experimental scent diffusion for emergent collaborative pathfinding seems to work
- tiles are now hashes that can store stuff
- diffusion is now in BDSM::Transform, though it doesn't work as well as originally
  conceived

7/21/08
- changed test scripts to support hash tiles, color, and ridded deprecated render routines
- reverted to old border() for speed reasons and fixed minor issues

7/23/08
- fixed Shape moving bug... incorrectly prevented moves where only the invisible part of
  them would collide with something
- BDSM::Map can load maps from files
- Sprite::Platformer for bastardization of a 16-bit era...
- crappily implemented gravity

7/25/08
- crappy GameLoop::Realtime
- BDSM::Map has hooks for all the Sprite::*s to call an autodraw after a move on the map
- crappy gravity, not working yet
- Sprite::Platformer has appropriate movement method names
- basic gravity seems to work, bugless, in a semi-clean (but not "smooth") way...
- jumping, but still no smooth movement
- almost consistent jumping physics
- fixed outofbounds starting bug
- BDSM::Map can rotate()

7/26/08
- BDSM::Map has clone
- arbitrary wheels and connectors are generated, no module yet

7/27/08
- Sprite::Shape can now transform into different shapes
- Toy::Gear
- BDSM::Map can _dump to a string
- rotating Toy::Tooth, which matches Toy::Gear
- all the routines for teeth to attach to a gear, but the resulting structure is buggy...
  pushing it is a nightmare of push-dependencies
- old gear setup is wonky. trying to let Sprite::Shapes attach and form a new aggregate
  sprite that can split up. attach() merges shapes correctly so far.

7/28/08
- Sprite::Shapes can blob together
- BDSM::Agent and BDSM::Agent::Sprite are the analogues of the old Sprite and Sprite::Shape,
  except in a new appropriate location (for their routines depend on BDSM::Map's structure)
  and with greatly cleaned code
- fixed longtermish recursive pushing bug and the insane visual screwiness associated
  therewith
- basic BDSM::Agent::Blob-age is running smoothly... things are getting interesting in the
  dungeon.
- BDSM::Agent::Blob's new blob dimension calculations have been simplified by a simple
  trick... they're not. :P  But the resulting shape is pruned
- Toy::Gear and Toy::Tooth are back in action and more or less work
- Agents can move (basically) inside cage blobs

7/29/08
- Blob at least checks to see if the new shape can fit. If it can't, it croaks loudly. The
  current workaround is to omnomnom agents before placing the blob.
- growing blobs work much better. adding agents to them before warping is still recommended
  heavily, but it fails appropriately and cleanly

7/31/08
- BREAKTHROUGH! The brilliant emergent idea of antiobjects has been correctly implemented!
  The two pacman examples demonstrate this powerful system

8/01/08
- BDSM::Map helper functions split into 2 modules (mutating and metadata-processing)
- The scent tracking system properly integrated internally in a map
- internal function for finding the next step for tracking
- always-accurate but slow tracking

8/04/08
- minor padding fix in loaded maps

8/12/08
- preliminary steps of transforming a map into a compressed blockworld... successful,
  surprisingly O_O

8/13/08
- the rectangle-ifier now does not overlap blocks
- rectangle-finder isnt even needed... scan rows and columns for sparse spaces
- perfect blockmapping... wow... so simple...
- basic implementation of diffusion with the blockmap

8/15/08
- BDSM::Maps have rooms which map virtual spacial logic nicely... going to move
  microsniffing there

8/16/08
- minor fixes in the room<->block<->tile relationship
- agents pathfind again, just need localized blockage assertion

8/17/08
- minor fix in room's flowto()... agents now demonstrate basic tracking behavior using all
  ideas. lots of finetuning needed.

8/19/08
- logic fixes.. pac1 runs stabley, but pac2 screws up in many ways... not sure why yet

8/20/08
- changed second test script to reflect features of first
- if stuck, ignore old scents and track as best as possible

8/22/08
- use euclid to localize moves instead of room-direction. helps.

8/23/08
- last minor preps in BDSM::Room before I hack out a bunch of old fxns
- new system is in place, seems to work. only need to code the critical part - room blockage
  routines.

8/24/08
- minor fixes to new system, slowly it improves

8/25/08
- more fixes, but it looks like scents are a bad idea completely for the macroblock thing

8/30/08
- last revision before slightly retrying. A* instead of scents on the room helps, but
  everything's even slower than the original now. >_<
- zomg... finally. new room-blockage algorithm runs very fast; depends on number of agents
  in room, not room size. needs polish.

8/31/08
- room blockage algorithm updated slightly to factor in hallways

9/04/08
- for the source and target room, manually floodfill to determine the absolutely definite
  list of entrances/exits.
- pac1 simulation perfect and fast, it seems...

9/05/08
- removed annoying seemingly randomness from deep in the hacky mess. I was returning the
  values of a hash, which is randomly sorted, resulting in random behavior since my A* needs
  better heuristics to rank paths. fixed, now pac2 is running as "perfectly" and quickly as
  pac1!!!
