Walls
Introduction
The Wall schema defines a visual surface within a smart home room onto which interactive elements, such as devices and doors, are placed. Each wall is represented by an image asset and serves as a primary canvas for constructing the user-facing interface of the environment.
In the game interface, each room is composed of four walls, which the participant can navigate using left/right
arrow keys.
This wall-based navigation allows users to explore different perspectives of a room and interact with devices positioned on each wall independently.
Walls are central to the spatial organization of the smart home simulation and are responsible for:
-
Hosting device and door placements
-
Displaying background visuals per wall
-
Defining navigation flow within a room
-
Determining the initial view when a room is entered (via the default property)
JSON Schema
JSON Schema Code
Wall Schema
{
"title": "Wall",
"description": "Property of a wall",
"type": "object",
"properties": {
"default": {
"type": "boolean",
"description": "Whether the wall should be displayed as default upon starting the game",
"default": false
},
"image": {
"type": "string",
"description": "Path to the image asset corresponding to the wall"
},
"devices": {
"type": "array",
"description": "Array of devices placed on this wall",
"items": {
"$ref": "device/deviceSchema.json"
}
},
"doors": {
"type": "array",
"description": "Array of doors for navigation between rooms",
"items": {
"$ref": "doorSchema.json"
}
}
},
"required": [
"image"
]
}
Top-Level Properties
Property | Type | Description |
---|---|---|
default | boolean | Indicates whether this wall should be displayed as the default view when entering the room |
image | string | Path to the image asset used as the background graphic for the wall |
devices | array | Array of devices to be placed on this wall. Each device is defined using the Device Schema |
doors | array | Array of doors to be rendered on this wall. |
Wall Images
Each wall in a room configuration requires an image that serves as the background visual context for that wall. These images define the rendered scene in the game environment and provide spatial and semantic cues to participants.
Image Specifications
- Supported formats: .png, .jpg, .webp
- Exact resolution: 1024 × 576 pixels
- Aspect ratio: 16:9 (standard for the game’s visual display)
All wall images must be exactly 1024 × 576 pixels. Using images with incorrect dimensions can result in rendering artifacts, stretching, or misalignment within the game scene. Ensure that images are properly scaled and cropped before inclusion.
{
"image": "assets/images/kitchen/north_wall.jpg",
"default": false
}
In this example, the wall is associated with the north_wall.jpg image and is not the default wall for initial display.
Default Wall Configuration
The default
boolean property determines whether a wall is shown as the initial view when a participant enters a room. It defines the starting perspective of the user in the interactive environment.
Usage Example
[
{
"image": "assets/images/kitchen/first_wall.jpg",
"default": false
},
{
"image": "assets/images/kitchen/second_wall.jpg",
"default": true
},
{
"image": "assets/images/kitchen/third_wall.jpg",
"default": false
},
{
"image": "assets/images/kitchen/fourth_wall.jpg",
"default": false
}
]
In this example, the wall defined with second_wall.jpg is marked as the default and will be the first view rendered when the room is entered.
Behavior and Constraints
- Explicit assignment: The default property is optional. If omitted, it is treated as false.
- Uniqueness per room: Only one wall per room should be marked with default: true.
- Fallback logic: If no wall is explicitly marked as default, the first wall listed in the array will be shown by default.
Choose the default wall to ensure a smooth and intuitive participant experience:
- Prioritize walls containing important devices, task-relevant elements, or key visual cues.
- Align the default view with the logical point of entry into the room or the most frequently used area.
- Ensure the chosen wall provides clear spatial orientation and a coherent introduction to the room context.
Wall Navigation Order
The order in which walls appear in the configuration array defines how users navigate through them using the left and right arrow keys. This navigation simulates a 360° rotation within the room and loops seamlessly across all four walls. Navigation Behavior Given a room defined with four walls:
[
{
"image": "assets/images/kitchen/first_wall.jpg",
"devices": []
},
{
"image": "assets/images/kitchen/second_wall.jpg",
"devices": []
},
{
"image": "assets/images/kitchen/third_wall.jpg",
"devices": []
},
{
"image": "assets/images/kitchen/fourth_wall.jpg",
"devices": []
}
]
- Right Arrow Key Navigates in forward sequence: first_wall → second_wall → third_wall → fourth_wall → first_wall (loops)
- Left Arrow Key Navigates in reverse sequence: first_wall → fourth_wall → third_wall → second_wall → first_wall (loops)
Walls should be ordered in the array according to their physical placement in the room — typically in a clockwise or counter-clockwise sequence.
Correct ordering ensures that the virtual navigation experience aligns with the real-world spatial layout, supporting participant orientation and spatial memory.
Wall Numbering Convention
Each wall within a room is indexed according to its position in the room’s walls array. This indexing is used to specify door destinations and navigation references.
Label | Index | Description |
---|---|---|
wall1 | 0 | First wall in the room’s walls array |
wall2 | 1 | Second wall in the room’s walls array |
wall3 | 2 | Third wall in the room’s walls array |
wall4 | 3 | Fourth wall in the room’s walls array |
This convention enables a structured and predictable reference system across rooms.
Device Configuration on Walls
Walls act as interactive canvases where multiple smart devices can be placed. These devices form the core of user interaction and gameplay within the smart home environment. Each device includes metadata, image references, positional coordinates, and interaction logic—allowing users to view and manipulate their state in real time.
Device Placement Example
Here is an example of a Wall
object containing two distinct devices: a "Deep Fryer" and a "Mixer". Each device has its own image, position on the wall, and a set of interactions.
{
"image": "assets/images/shared_room/wall1.webp",
"default": true,
"devices": [
{
"name": "Deep Fryer",
"id": "deep_fryer",
"image": "assets/images/shared_room/devices/deep_fryer.webp",
"position": {
"x": 657,
"y": 285,
"scale": 1,
"origin": 1
},
"interactions": [
{
"InteractionType": "Boolean_Action",
"name": "Power",
"inputData": {
"valueType": ["PrimitiveType", "Boolean"],
"unitOfMeasure": null,
"type": {
"True": "On",
"False": "off"
}
},
"currentState": {
"visible": null,
"value": false
}
}
],
"visualState": [
{
"default": true,
"image": "assets/images/shared_room/devices/wall1_deepfryer.webp"
}
]
},
{
"name": "Mixer",
"id": "mixer",
"image": "assets/images/shared_room/devices/wall1_mixer.png",
"position": {
"x": 367,
"y": 280,
"scale": 0.25,
"origin": 1
},
"interactions": [
{
"InteractionType": "Boolean_Action",
"name": "Power",
"inputData": {
"valueType": ["PrimitiveType", "Boolean"],
"unitOfMeasure": null,
"type": {
"True": "On",
"False": "Off"
}
},
"currentState": {
"visible": null,
"value": false
}
}
],
"visualState": [
{
"default": true,
"image": "assets/images/shared_room/devices/wall1_mixer.png"
}
]
}
]
}
Door Configuration on Walls
Doors are non-interactive objects whose sole purpose is to enable navigation between different rooms and walls in the smart home environment.
They are defined within the doors
array of a Wall
object.
Basic Door Structure Example
The following example shows a Wall
that contains a single door. Clicking on this door would navigate the player to the first wall (wall1
) of
the room identified as "bob_room"
.
{
"image": "assets/images/shared_room/wall3.webp",
"doors": [
{
"image": "assets/images/shared_room/doors/wall3_door.webp",
"position": {
"x": 425,
"y": 100,
"scale": 0.5
},
"destination": {
"room": "bob_room",
"wall": "wall1"
}
}
]
}
Door Properties
Property | Type | Required | Description |
---|---|---|---|
image | string | Yes | The file path to the visual asset for the door. |
position | object | Yes | An object defining the door's placement and size on the wall. Contains x, y, and scale. |
destination | object | Yes | An object specifying the target location. Contains the destination room ID and wall ID. |
Best Practices
- Ensure that destination room names match those defined in your global room configuration.
- Always use a valid wall label (wall1 to wall4) corresponding to a real wall in the destination room.
- Position doors so they do not visually overlap with interactive devices on the wall.
- Keep door images visually distinct from devices for clarity during gameplay.
When a player clicks or taps on a door, the game automatically navigates to the specified room and wall. This enables room-to-room transitions within a single scene.
When defining door transitions: • Ensure the referenced target room exists in your configuration. • Confirm that the specified wall number corresponds to a valid index in the target room’s walls array. • Design navigation paths that are logical and intuitive for participants.
Examples
This section presents full examples of wall objects, showcasing minimal and complex configurations used in the smart home simulation environment.
Example 1: Simple Static Wall
A minimal wall definition that includes only a background image. This wall contains no interactive devices or doors.
{
"image": "assets/images/shared_room/wall2.webp",
"default": false
}
Example 2: Wall with Door for Room Navigation
This example illustrates how to define a wall that includes a single door used to navigate to another room in the game environment.
{
"image": "assets/images/shared_room/wall4.webp",
"doors": [
{
"image": "assets/images/shared_room/doors/wall4_door.webp",
"position": {
"x": 425,
"y": 100,
"scale": 0.5
},
"destination": {
"room": "alice_room",
"wall": "wall1"
}
}
]
}
Example 3: Wall with Multiple Devices
This configuration includes two smart devices placed on a single wall. Each device is defined with its image, position, and a default visual state.
{
"image": "assets/images/shared_room/wall1.webp",
"default": true,
"devices": [
{
"name": "Deep Fryer",
"id": "deep_fryer",
"image": "assets/images/shared_room/devices/wall1_deepfryer.webp",
"position": {
"x": 657,
"y": 285,
"scale": 1,
"origin": 1
},
"interactions": [],
"visualState": [
{
"default": true,
"image": "assets/images/shared_room/devices/wall1_deepfryer.webp"
}
]
},
{
"name": "Cooker Hood",
"id": "cooker_hood",
"image": "assets/images/shared_room/devices/wall1_cookerhood.webp",
"position": {
"x": 659,
"y": 222,
"scale": 1,
"origin": 1
},
"interactions": [],
"visualState": [
{
"default": true,
"image": "assets/images/shared_room/devices/wall1_cookerhood.webp"
}
]
}
]
}
Example 4: Wall with Devices and Door
A fully configured wall that includes both a smart device and a navigable door.
{
"image": "assets/images/alice_room/wall1.webp",
"default": false,
"devices": [
{
"name": "Lamp",
"id": "lamp",
"image": "assets/images/alice_room/devices/wall1_lamp.webp",
"position": {
"x": 525,
"y": 320,
"scale": 1,
"origin": 1
},
"interactions": [],
"visualState": [
{
"default": true,
"image": "assets/images/alice_room/devices/wall1_lamp.webp"
}
]
}
],
"doors": [
{
"image": "assets/images/alice_room/doors/wall1_door.webp",
"position": {
"x": 0,
"y": 45,
"scale": 0.5
},
"destination": {
"room": "shared_room",
"wall": "wall1"
}
}
]
}