Files
modular-vr-definitions/engine.toml
2022-10-27 19:03:00 +02:00

84 lines
2.5 KiB
TOML

[room]
id = 1
spaces = [] # a room must have at least one space
[space]
id = 2
size = [2, 4]
passages = [] # a space may contain passages to other spaces
modules = [] # a space may have modules
[passage]
id = 3
exit = "Door Module A" # the exit of this passage
entry = "Door Module B" # the entry of this passage
type = "portal" # elevator, moving platform, etc.
[module]
name = "Module A"
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 = "door"
[[types]]
description = "puzzle/dexterity"
[[types]]
description = "puzzle/precision"
[[types]]
description = "puzzle/combination"
[[types]]
description = "puzzle/iteration"
[[requirements]]
name = "area"
size = [1, 1]
[[requirements]]
name = "space size"
size = [4, 2]
[[requirements]]
name = "space around" # space that is not directly occupied by the module but must be available
size = [2, 2]
[[requirements]]
name = "existence" # in the same room as another module
module = "Module B"
where = "current" # current: in this space, anywhere: in this space or any previously visited space
[[requirements]]
name = "facing" # must be facing another module
module = "Module B"
type = "exact" # exact: exactly opposite of, raycast: must be visible from
[[requirements]]
name = "object" # an object is required to be posessed
provided = false # whether this module provides this object itself
[[relations]] # a collection relation with an arbitrary number of modules
name = "paintings"
modules = []
[[relations]] # a group relation with named modules
name = "Puzzle A"
crank = "Crank Module A"
balloon = "Balloon Module B"
hint = "Hidden Module C"
[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)