Create the basic PerceptionObject, which should be able to:
- Collect perceivable objects
- Generate basic (<subject> <predicate>) sentences for the object graph gathered by observation or perception
Stuff to think about for the future:
- Cache of recently-perceived stuff to allow descriptions to be incremental
- Facilities for clearing the cache when character's perception or abilities change.
- Facility for limiting description based on character state (e.g., concentration, active observation, etc.)
- This should be able to query character for criteria for deciding which perceptions to drop. This will include character preferences, pre-dispositions, mood, activities
- Perception should react to position changes of objects in the environment, so it will need to hook into the system that models the game space (collision system or whatever)
- Facilities for filtering output to model recognition (via relationships, covenants), bias,
- Facilities for modelling impairment: blindness, deafness, etc.