BZWorkbench Candidate User Interfaces

I. User Interface Dialogs

A. Global User Interfaces
These dialogs are related mostly to general level configuration

The World Options Dialog

This is the first dialog the user sees when creating a new world. Here, the user can name the world, set the flag height, determine the water level (or whether or not to have one), and pass options to the world.
The Open Saved World Dialog

This may also be the first dialog the user sees, if the user wishes to open and modify a previously-created level. The user can navigate the file system and select .bzw files to open.
The Global Menu

This is seen whenever the user right-clicks. Here, the user can add common objects, such as pyramids and boxes, add rarer objects such as arcs, spheres, cones, other meshes created in a 3D editor, and even saved selections to the world. Also, the user can do the normal editing operations, like cutting, copying, pasting, and duplicating (cloning) a selection from this menu. If the user wishes to re-use a selection later on, even between levels, the user can select "Save Selection As..." and it will be accessable by the "Add other object..." option. The user can additionally create groups from this menu, configure the world, add a world weapon, and configure the current selection (opens up a second menu).

If more than one teleporter is selected, and if only teleporters are selected, another option, "Link," becomes available.
If the user had wanted to add an object not listed in the Global Menu, (s)he would click on "Add other object..." and would be greeted by this dialog.

Notice the "Configure..." button. By clicking this, the user will be presented with a dialog to modify the object's "template" and have it affect all future importations of that object. In implementation, these custom objects are defined in an external .bzw file, and can be imported into the current file.
If the user wanted to configure the object by right-clicking it, the user only needs to move the mouse over "Configure Object..." on the Global Menu, and this will appear. It allows for movement of an object and scaling it along an axis, as well as the ability to open the Master Configuration Dialog by clicking "Tweak..."
The Master Configuration Dialog

From this dialog, the user can modify the numeric values common to almost all objects. Fields that do not apply to an object, such as angular orientation on teleporters, will be grayed out, and (in the case of the teleporter) replaced by a different, relevant field (i.e. rotation). For more advanced users, a button will exist on this dialog to open a text field to directly edit the relevant section of the current .bzw file. Clicking "Advanced..." brings up the Advanced Options dialog.

B. Advanced Object Configuration
These options are accessable from the Master Configuration Dialog by clicking "Advanced..."

The Advanced Options Dialog

From this dialog, the user can select defined materials, physics drivers, dynamic colors, and texture matrices to be applied to the selected object, or can opt to create them or import them. In implementation, these objects can be stored in an external .bzw file to be re-used in later projects.
The Material Dialog

This dialog allows the user to create and configure materials in the level. Here, the user can add a texture (or access one of BZFlag's built-in textures) to the material, define its ambient, diffuse, and specular colors using a color picker, set the material's "shininess," and configure the three boolean options associated with materials. The material will be previewed before creation, and will change interactively with the options listed here.
The Texture Matrix Dialog

This dialog allows the user to assign a material (or create a new one and assign it) to the texture matrix, to configure the material's center, rotational velocity, dynamic and fixed scale ratios, maximum transparency, and shift velocity, and to configure boolean options specific to texture matrices. To test the numerical values on the matrix before assigning it, the matrix's effects on the material can be previewed. If time permits, less technically-inclined users can left-click and drag the material through the previewer to set the shift velocity graphically, and can right-click and move the mouse in a circle in the previewer to set the spin graphically.
This dialog box is used to create a new dynamic color. The user selects a color, and can define its limits and sequence. Clicking "Open Visualizer" give the user a more advanced dialog box to manipulate and visualize clamps and sinusoids.
The Dynamic Color Visualizer

Here, the user can define the minimum and maximum color values for the color they are dealing with (which is chosen in the aforementioned dialog), can define, edit, and remove multiple sinusoids and clamps, can simulate the behavior of their dynamic color, and can visualize the sinusoid curve and applied clamps across a color gradient. In this example, a normal sine function is initially defined, but an upper clamp is defined near the first crest and a lower clamp is defined near the first trough. The small dot traces the curve repeatedly to give a visual representation of how the sinusoid is behaving in the previewer (i.e. the dot is currently on the color in the previewer). If time permits, the user may be able to distort the sinusoid curve with the mouse to graphically configure the color dynamics.
The Physics Driver Dialog

In this dialog, the user can set the linear and angular velocities and linear acceleration of a physics driver, as well as the death message (if one should exist). To visualize the effects on a tank, a small model is provided in the previewer. Clicking "Start" causes the tank to behave as it would in the level under the influence of the driver (movement will be to scale). Clicking "Stop" freezes the tank, and clicking "Reset" moves the tank back to the center of the previewer as it is shown now. If time permits, less technically inclined users can drag the tank with the mouse in any direction at any speed to set the linear velicity graphically. The rotational velocity can be set graphically by dragging with the right mouse button, and moving the mouse cursor in a circle around the tank.

C. Object-Specific Dialogs
These dialogs relate to object-specific settings. They are accessable by clicking "More..." on the Master Configuration Dialog.

The Group Options Dialog

In this dialog, the user can configure options specific to groups, such as the team, tint, physics driver, material to use, as well as boolean objects specific to groups.
The Tetrahedron Options Dialog

This dialog allows the user to manually tweak the vertices that define a tetrahedron object.
The Arc Options Dialog

This dialog allows the user to configure an arc object's options, such as its sweep, the number of subdivisions, its radii, and boolean options specific to arcs.
The Cone Options Dialog

This dialog allows the user to configure a cone object's options, such as its sweep angle, subdivisions, rotation speed, etc.
The Sphere Options Dialog

This dialog allows the user to configure a sphere object's options, such as its subdivisions, rotation speed, radius, etc.
The Teleporter Options Dialog

This dialog allows the user to set the border with of a teleporter. Links between teleporters are handled graphically in the 3D view.

D. Miscellaneous Object Dialogs


The Weapon Options Dialog

This dialog allows for manually tweaking weapon options. Graphically-renderable options, such as rotation and tilt, can be configured from the 3D view. Sensible default values for obscure options (at least, obscure to newbies) such as Event Team, Delay, and Type, will be defined for the weapon upon creation (but may be changed later).
The Zone Options Dialog

This dialog allows for manually tweaking zone options. Some options, such as position, size, and rotation are graphically configurable in the 3D view. Sensible default values will be provided for the other options, and can be changed later by more advanced users.

II. 3D User Interfaces

A. Data Visualization
The 3D view will have two components: a 3D view where the meshes are viewed, and a small, translucent bird's eye view in the lower right corner. In the bird's eye view, pyramids are blue dots, boxes are brick red squares, groups are purple and surrounded by a ring, selections are bright green, weapons are grey dots, and zones are yellow outlines.

When the user creates a new world, it will have nothing in it at first. This is what the view may look like.
The user can create new objects by right-clicking anywere, and using the "Add (insert object here)" set of options from the Global Menu. Here, a simple pyramid has been added.
The user can select an object simply by clicking it. This will turn it green.
The user can right-click an object to bring up the Global Menu (which contains editing options), and click "Clone" to create a copy of the selected object adjacent to the original. Here's a freshly-cloned pyramid.
The user can select multiple objects by holding down shift and left-clicking them. The user can group them by right-clicking to bring up the Global Menu, and selecting "(Un)Group." Here we see a group of three pyramids. The purple circle that surrounds them indicates that they are a group.
Groups behave like objects, and are subject to the same options present in the Object Options menu. Here, they can be selected as if they were a single object.
Groups, like objects, can be cloned. In fact, any selection can be cloned, even if its not a group. Here's a freshly-created clone of the aforementioned pyramid group.
Here's a box. It was created to a similar fashion to the pyramid.
Let's say the user added a physics driver to the box. This is how it will be rendered.
Here's what a world weapon will look like. It's position, tilt, and rotation can be interactively configured. The shaft points in the direction where the weapon will shoot.
Here's how zones will be rendered. They can be arbitrarily placed in the world, and moved, rotated, and resized interactively. They are rendered as translucent golden walls partitioning the world.