Each row of characters represent the maze cells in increasing (initially forwards) Z direction.
The text characters within each row represent the maze cells in the X (initially right) direction.

X is an active cell
An empty space is a walled cell
Y is an active cell initially with a Yeti
L is an active cell with a light
a is an active cell with wall art (bug)
b is an active cell with wall art (smiley)
c is an active cell with wall art (tree)
d is an active cell with wall art (coffee)

Default Yeti speed is 1 cell/s
Default robot speed is 1.5 cell/s
Default manual (left/right) rotation is 1.5 radians/s (~86 deg/s)
Default automatic 90 deg rotation (0.5 s)

The 'Max frequency' is the maximum frequency of message exchange with the server (exchange/s).

The optional 'Player name' identifies a specific user, which can be useful when users are sharing the same IP address or there are multiple players in a game. In this case the first web argument sent from Small Basic should match this name. (e.g. https://litdev.uk/apps/maze3D/maze3D.php?name=Steve&action=get")

There is also a special player called 'Observer' that can fly out of the maze for an overview and takes no part in any game.

The optional 'Game name' identifies a maze world in which only robot players using the same game will be shown.

Player and game names are case sensitive and the maze should be reloaded after applying changes.

Images for walls, floor and ceiling can also be set.



Control commands are sent directly to the webservice at https://litdev.uk/apps/maze3D/maze3D.php?. This may be from Small Basic using LitDev extension (1.29.150.0+) with command LDNetwork.SendWebRequest. Commands can also be entered directly into a browser for test purposes, or from any other WebRequest service.

Multiple arguments are separated by '&'. The first argument is optionally a user name e.g. 'name=Steve' and the next (or first argument) is an action.

'action=get' returns various user details (position, neighbour cells etc).
'action=getAll' returns basic position data for all users in the current game.
'action=set' sends commands to the current user, options are:

Continuous movement: 'move=1' move forwards, 'left=1' rotate anti-clockwise, 'right=1' rotate clockwise.
'move=0', 'left=0', 'right=0' stop movements.

Animate to adjacent available cell: 'animate=0', 'animate=90', 'animate=180', 'animate=270'.

Move a controlled amount: 'rotate=A', 'forward=B' where A is a clockwise angle and B is a distance (cells are 1x1).

Support, discussion and examples at Small Basic forum.



Optionally select a game objective. This will not affect anything other than reporting of the game objective progress.

Visit all cells: Timer starts when you exit the first cell and stops when you enter the final cell in the maze.

Tag: If you are 'IT' then you have to tag another player by entering their cell for them to become 'IT'.

Hunt Yetis: Track down and enter a Yeti cell to kill it.