predicates:
placement
on top of
underneath
beside
around
inside
center of
corner of
against
negative predicates
spacing: padding around an object when it gets placed
"arm's length"
"body width"
"near"
"far'
some predicates carry notion of spacing like against, on top of while others do not like around.
concepts to know about:
weapon -> sword, axe, club, staff, spear
armor -> curiass, gauntlet, helmet, shield, pauldroon, greaves, boots
clothing -> shirt, pant, skirt, hat, belt, dress, shoes
jewelry -> ring, amulet, locket
books
furniture -> dresser, desk, table, shelf, chair, stool, cabinet
containers -> chest, box, barrel
ingrediants -> edible, chemical, mineral
so we start with an empty room which has walls, a floor, a ceiling, and doors (not stairs for now).
for each object get the [IsA] relationship from concept net
loop through the objects trying to place them from their [IsA] mappings depending on what's already
been placed.
possibly try to place large objects first -> generally dominate room, and most constrained
in general, AI problem of constraint propagation; choose most constrained object to place first
constraint is measured by placement predicates, and possible spacing predicates as well
---------------------------------------------------------------------------------------------------------
xml file:
want to include a negative flag? like
or maybe this is better
other tags like
perhaps positive will be enough?
place from most constrained to least constrained as measured by the number of tuples object is in
try to subject in order of specificity (how far from root of graph)
applying multiple constraints? for now just start with one and make assumptions about them.
data structures/objects and modules:
Room representation that knows where the walls, floors, ceilings, doors are.
The room also keeps track of what's been placed in it and where. The room
should also handle placement of objects. Move those functions here. Determines
whether an object can be placed at the requested location.
GameObject that represents a specific named instance of an object.
AI/Common Sense placement module that keeps all the mappings and tries to place
the objects in the room according to mappings.
Mapping of subjects to list of predicate object pairs
Mapping of predicates to appropriate function(s)
Mapping of object to list of subjects ordered from most to least specific