Foundry VTT uses walls to create various virtual boundaries in-game. Together with fog of war and lighting, a Gamemaster can create immersive scenes and allow their players to explore an environment through their characters' eyes, seeing only what their tokens can see.
This article uses "walls" to refer to any boundary that prevents vision or movement through it. Walls themselves are typically not visible to players, but impose restrictions on a token's movement, line-of-sight, and sound depending on how each wall is configured. With the Wall Controls toolbar, you can view the Walls layer while viewing a scene.
Walls can be easily created on any Scene. First choose your selected wall type on the Wall Controls toolbar. Then, left click and drag from a point where you want the wall to start to begin laying a wall. Left click again at a second point to create a wall segment between the two points. Connected wall segments can easily be created by holding Ctrl (command, if you are using MacOS) while placing a wall, which creates a new wall from your cursor to the last-placed wall segment. You can cancel the placement of a wall segment by right-clicking before you place the second point of the wall.
A wall can be selected by left-clicking on one of its points. Holding the Alt key when selecting a wall point will select all walls directly or indirectly connected to that point. This allows you to delete or modify entire structures at once.
Double-clicking a wall point will allow you to configure various properties of the wall, described later in the article.
The wall tool will attempt to snap to an invisible subgrid on the canvas in order to assist users in linking wall segments together without a gap wherever possible. The precision of this grid is partially adaptive, changing on the size of the grid in use. Maps that have a grid of 50px will have 1/4 precision (and 5 snap points), while grids set to 100px will have 1/8 precision (9 snap points); grids set to 200px would have 1/16 precision (17 snap points).
In addition, enabling the "Force Grid Snapping" toggle will force the wall segment to snap to the nearest outside point of a grid square.
The Wall Controls toolbar, when enabled, allows the viewing, modification, and creation of walls. Activating this toolbar also provides quick buttons for a number of common wall types.
The default wall type restricts vision, movement, and sound. These walls are colored yellow on the Walls layer.
These walls prevent token movement, but allow limited vision; a token with vision can see past one terrain wall segment, but not two. These walls are ideal for roofed buildings or terrain features that that can be seen, but obscure objects behind them. Terrain walls are colored green.
These walls block token movement, but neither vision nor sound. Walls of this type are ideal for windows, or any transparent, but solid obstacle. They are colored cyan on the Walls layer.
These walls function opposite to Invisible walls; they block vision and sounds, but tokens can move freely through them. These walls may be useful for dark veils, curtains, or fake walls. They are colored light magenta on the Walls layer.
Doors are wall segments that can be interacted with to open or close. Doors made with the "Draw Doors" button on the Wall Controls toolbar restrict movement, vision, and sound until opened. A Gamemaster can additionally lock doors by right-clicking them, which will play a "locked" sound when a user attempts to open it. A locked door can be unlocked by a Gamemaster right-clicking the door's icon again. User roles can be configured to allow the opening or closing of unlocked doors via the Permission Configuration window. Doors are colored purple on the walls layer, but if opened will change to a light green. If locked, the door color will change to red on the wall layer.
These function similarly to doors, but the door icon is not visible to most users. A Gamemaster can open secret doors for players. These doors are colored dark magenta on the Walls layer. If locked, the door color will change to red on the wall layer.
This tool allows you to lay down a wall of the same type as you just placed or configured in a scene. For example: After placing and configuring a wall to be one-way secret door that doesn't block movement but blocks perception, you can use Clone Walls to quickly place more walls with the same configuration on the map.
Wall segments can be further configured after they have been placed. Simply double-click on one of the points of a wall to edit the connected wall segment. Both points of the wall will enlarge to indicate which wall segment will be selected. You can double click multiple selected wall segments to edit all of them at once.
- None: Tokens can move freely through the wall segment.
- Normal: Tokens cannot move past the wall segment.
Walls can have multiple perception restrictions set which affect how sight and sound are blocked. Sight and sound restriction have identical settings which are:
- None: Tokens can see or hear through the wall segment.
- Normal: Tokens cannot see or hear sounds past the wall segment.
- Limited: Tokens can see or hear sounds past one wall segment, but not past any "Limited" or "Normal" wall segments after it.
- Both: Movement and Perception restrictions apply when the wall is viewed from either side.
- Left or Right: Restrictions apply only when the wall is viewed from the selected side.
- None: The wall segment is not a door and cannot be opened/closed.
- Door: The segment is a door and, if unlocked, can be opened/closed by any user with the Open and Close Doors permission.
- Secret: The segment is a door with no icon visible to Players and or Trusted Players, instead appearing as a normal wall until opened by a Gamemaster.
- Closed: Any Movement or Perception restrictions apply, and the door can be opened by clicking on its icon.
- Open: Tokens can move and look freely through the wall, and the door can be closed by clicking on its icon.
- Locked: Any Movement or Perception restrictions apply, and the door cannot be opened until it's unlocked.
To interact with Walls programmatically, consider using the following API concepts: