MazeEdit Benchmark

Marc Khadpe

January 26, 2000

http://www.semitech.com/marc/benchmark

Introduction

This benchmark is a simple maze editor intended for creating a data file that could be used as input to a 3D maze simulation. The maze editor is basically a simple drawing program. It allows the user to specify the location of walls and obstacles using direct manipulation. The user specifies the object to add to the maze via a tool palette. Several menu commands are available to aid in drawing, such as snap to grid. This benchmark shares similar characteristics with maze editors used for editing game maps as well as drawing programs such as MacDraw. It primarily tests direct manipulation and selection of graphic objects, which may be of small dimensions. Some additional complications such as rubber-banding feedback and snapping are also involved. The clipboard facility of the system is also tested.

3D maze game
a 3D maze game

Decription

Windows

Upon running the benchmark, it should display two windows as well as a menu bar. One window is an untitled document window, while the other is a floating tool palette

tool palette
possible tool palette implementation with selection tool active

This tool palette should use the native environment's standard window appearance and widgets. This window should only appear when the benchmark application is in the foreground. It should contain six bevel buttons which behave as radio buttons. One should be selected initially. The six buttons are:
1. Selection tool (arrow) This allows selection and deselection of objects in the maze, to move or delete them.
2. Wall tool (line) This draws walls in the maze by clicking on the starting point and then the ending point.
3. Starting point (S) This places the maze starting point wherever the user clicks. If a starting point already exists when the user clicks, it must be removed and placed at the location of the click.
4. Finish point (F) This places the maze starting point wherever the user clicks. If a finish point already exists when the user clicks, it must be removed and placed at the location of the click.
5. Object 1 (1) This places a "type 1 object" wherever the user clicks. There may be any number of these in a maze, and the meaning is defined by the game.
6. Object 2 (2) This places a "type 2 object" wherever the user clicks. There may be any number of these in a maze, and the meaning is defined by the game.

The game window should be a typical document window for the native environment. No custom features are needed. The content region of the window should display the maze. For a new window, this area should be blank, except for possibly a grid. The grid option is explained in the menu section. The window should be resizable and contain scroll bars. A zoom or maximize feature is also needed along with any other standard window adornments.

window
a possible blank maze window

The interactions in the window should mimic a drawing program. Clicking when an object or start/finish point is selected should place the object where the user clicked subject to any snapping. Snapping is explained later. For the walls, the first click should establish the starting point of the wall and should snap if applicable. As the user moves the mouse, rubber-band style feedback should be shown accurately reflecting how the wall will be positioned if the user would click. Upon the second click, the wall is fully specified and is drawn. The selection tool allows users to select an object by clicking on it. Square, inverse-video handles should be used to indicate selection of objects. Shift-selection of multiple objects should be provided as well as dragging a box to select multiple objects within the bounds of the box. This is similar to the behavior of any standard drawing program.

Menus

The menu bar should contain standard native environment menus. Keyboard equivalents should be provided for all menu items with the exception of Set Maze Dimensions. Three benchmark-specific menus are the File, Edit, and Options menus, explained individually below.

file menu
1. File menu
New should spawn a new document window. Close should close the active document window. A Quit or Exit option should end the program. Open and Save features would need to be here in a complete maze editor, but are omitted in this benchmark for simplicity.

file menu
2. Edit menu
Undo should undo the last action taken in the maze editor window (adding, deleting, or removing an object). Cut should place the current selection in the system's clipboard and delete it from the document. Copy should place the current selection in the system's clipboard while preserving the selection. Paste should place the current clipboard contents into the maze. Clear should delete any currently selected objects. Select All should select all objects in the active document.

file menu
3. Options menu
The first three options in this menu toggle when selected. Show Grid should toggle the display of gridlines in the document. Gridlines should be placed one maze unit apart. Snap to Grid determines whether maze objects will snap to the intersections of gridlines. When enabled, each object or end of a wall should snap to the nearest grid line intersection. Allow Diagonals will allow the user to create walls at any angle, otherwise walls are constrained to be horizontal or vertical. Set Maze Dimensions should present a modal dialog allowing the maze width and height to be set. The possible values of these dimensions range from 1 to 100. Edit fields should be used to allow typed entry. Invalid characters should be filtered out. Cut, copy, and paste functionality should be provided. OK and Cancel buttons should be used as the means of exiting the dialog.

a finished maze
A finished maze with obstacles, start, and finish. Notice that all walls are non-diagonal and aligned to the visible gridlines. One section of wall has handles around it indicating it is selected.

Expected Implementation Toolkits

The benchmark will be implemented four times in different toolkits. At this time, the expected toolkits are HyperCard, Mac Toolbox, Win32, and Amulet.