[room] id = 1 spaces = [] # a room must have at least one space [space] id = 2 size = [2, 4] doors = [] # a space has at least one entrance and one exit to other spaces either within the same room or from/to another room modules = [] # a space may have modules [passage] id = 3 exit = 4 # the exit door of this passage entry = 5 # the entry door of this passage type = "portal" # elevator, moving platform, etc. [door] id = 4 passage = 3 [module] name = "Module A" size = [1, 1] position = [0, 1] rotation = 90 types = [] # a module must have at least one type difficulty = 3 time-estimation = 342 # estimated amount of seconds to complete this puzzle requirements = [] # a module may have requirements [[types]] description = "dexterity" [[types]] description = "precision" [[types]] description = "combination" [[types]] description = "iteration" [[requirements]] name = "minimum space" [[requirements]] name = "connected module" # in the same room as another module module = "Module B" [[requirements]] name = "object" # an object is required to be posessed provided = false # whether this module provides this object itself [[requirements]] name = "space around" # space that is not directly occupied by the module but must be available [[requirements]] name = "facing" # must be facing another module module = "Module B" type = "exact" # exact: exactly opposite of, raycast: must be visible from [[requirements]] name = "minimum space size" [object] name = "Object A" properties = [] # an object may have properties [[properties]] name = "interactable" # this object can be interacted with [[properties]] name = "connected object" # connected to another object in some way object = "Object B" [[properties]] name = "constrained" # the movement of this object is constrained in some way (e.g. a button that only moves a few centimeters in a single direction) type = "position" # rotation, aim [[properties]] name = "bound to room" # this object is bound to a room and will disappear when leaving it room = 1 [[properties]] name = "tracked" # this object's position is tracked (mutually exclusive with "bound to room" since the physical tracked object cannot disappear)