Design document
Preamble
Contents
Abstract entities
Controllers
Controllers reflect the global status of objects on the level. There are eight independent controllers on each level (and one more virtual controller).
All active objects (currently beams and doors) can be linked to one or more controllers. Although it is not obligatory to link an object to at least one controller, doing so is mostly useless, since the object will be always off.
The controller 0 is a virtual controller - it is always on, allowing level designers to use it to program the initial state of the objects on the level.
The status of an active object is "on" if an odd number of linked controllers is on, and "off" otherwise.
Base tiles
Blocks
Gems
Gems come in three flavors: 1-point gems, 3-point gems and 5-point gems.
3-point gems, when irradiated by any beam, reflect the beam ninety degrees left.
5-point gems, when irradiated by any beam, reflect the beam ninety degrees right.
Glass wall
This tile is passable only by beams. To all other objects, it is impassable.
Thin wall
This tile blocks passage in one direction (the one where the wall is).
When inserting thin walls in a level, they must appear in the two tiles that are being separated.
This makes it easier to draw an aesthetically good level, as thin walls are drawn perfectly symmetric as a result of the following guideline.
Buttons
Doors
Robots
Followers
Turners
Turners move once a turn, and try to keep moving on the same direction. If that is not possible, they turn left or right, depending on the turner handedness. If that is not possible, they turn right or left. If that is not possible, they turn back.
Chasers
Chasers move once a turn, and always try to reduce the horizontal or vertical distance to the player, whichever is bigger (in case of a tie, horizontal moves are favoured).