A cube. Users' Guide

Applet
Users' Guide
Authors

CSCE 492
USC
Thanks for trying out our 3D Life applet! We have worked hard to make the program straightforward and easy to use, and the best way to learn the various features is to just try them out. We realize, however, that some of the options might be unintuitive, and so this guide was designed to help clarify the usage of these features.

For the purposes of this guide, it is assumed that you are already familiar with the way Conway's Game of Life works. In particular, you should understand the notion of 'live' and 'dead' elements, and how the rule is applied. If you are familiar with the traditional, two dimensional game of life, generalizing it to a three dimensional grid should be obvious. If not, there are a variety of resources online which will help you get started. We recommend hensel.lifepatterns.net.

Introduction
First, you should get familiar with the layout of the applet. The window is split into four subcomponents.
Applet layout.

Grid Component This is where the grid is displayed. By default, only live elements are displayed, so if you dont see anything, the entire grid is dead. This component can also be used to set the state of individual elements using the mouse, using the procedure described under "Mouse Input".
Info Component Any output produced by the applet will be displayed here. Events such as starting/stopping the game, changing the grid size or rule, etc. are logged here.
Control Component Widgets which control various aspects of the state of the game and the grid are held here. Most of these functions should be self-evident. More details can be found under "Saving and Restoring" and "Experiment Mode". Selecting the Visualization tab will display anther panel which allows the the shape and style of the grid to be modified. More details under "Visualizations"
Sub Component The contents of this component vary depending on the state of the game. By default, it will display basic information about the game, but it is also used by specific game functions to display additional information and take input.

Mouse Input
It is possible to set the state of elements just by entering a list of coordinates in the appropriate component, but generally, you will find using the mouse much easier and more enjoyable. Selecting the specific element(s) you want in a three dimensional grid can be a bit tricky, though. It is a two step process. To begin, click anywhere on the Grid Component. You should now see one plane of cubes outlined with gray wireframes, and live cells elsewhere on the grid displayed as red or green wireframes (green ones are in front of the selected plane, red ones behind). One column of cells will be drawn in gray, as a guide to see where on the grid you are. You can now click on any element on the selected plan to toggle its state. Clicking and dragging will set the state of all elements you drag over. To change the selected plane, just move your mouse up and down along the column of gray cubes. To leave selection mode, click anywhere off of the grid. Selection mode
Selection mode.

Saving and Restoring
If you come across an interesting shape you wish to recall later, just hit the save button. To recall a shape which was earlier stored, hit the restore button. This will bring up a sub panel, with a combo box containing all of the saved shapes (disabled if nothing has been saved), and two buttons which can be used to remove saves shapes. The items in the combo box are named according to the order they were saved in. To restore a shape, just select the item it corresponds to from the combo box. Unfortunately the names are not particularly descriptive, but unless you have a large number of shapes stored, cycling through the items will not be too difficult. To delete a shape, select it, then hit "Delete".
Restoring.

Experiment Mode
Experiment mode can be used to search for new interesting shapes in the game of life. To enter experiment mode, check the appropriate box in the control component. While in experiment mode, the sub component will display a panel which allows the parameters of the experiment to be changed. Several buttons in the control component will be disabled, indicating they are unessential and nonfunctional while in experiment mode. The program will search for gliders and oscillators, depending on which boxes are checked in the sub component. The Iteration combo box is used to set the number of generations a shape is tested, and the dimension checkbox is used to set the size of the shape being tested. The random tab sets the density of the shape, and the rules tab sets the rule of the game. Lower and upper textfields set bounds on the number of live elements. Once the parameters have been appropriately set, pressing start will cause random shapes to be generated and tested indefinitely, until stopped.

When an interesting shape is discovered, the program determines its signature and displays it in the info component. The signature is a pair of arrays which contains the number of elements on the grid with a particular number of live neighbors. A given shape will always have a unique signature, regardless of orientation, and distinct shapes will usually (although not necessarily) have different signatures. Comparing signatures is a convenient and reasonably accurate method of determining whether two shapes are identical. Thus after the program discovers an interesting shape and determines its signature, it compares the signatures to shapes which have already been identified, and ignores the new shape if a matching signature is found. If the shape is new, it will be stored, and can later be retrieved using the procedure for restoring a saved shape.

Experiment mode.
Experiment mode.

Visualizations
Hitting the visualizations tab will replace the control component with a different set of widgets. These are mostly meant as "eye candy", to let you adjust the nature of the display however you are most comfortable with it, and have no effect on the state of the game itself. Thus it is safe to ignore them altogether, and if you do choose to try them out, they should be mostly self evident. The 'Grid Visible' checkbox will display a wireframe around all of the elements, live or dead, on the grid. The reset button restores a the default view of the grid. The zoom slider will make the grid appear larger or smaller, and cube size slider will (surprise!) change the size of the cubes. You should be aware that these transformations occur in discrete steps, so it is normal for the grid to appear a little "jerky" when it is being manipulated.
Hitting the "Skew" button will display a sub panel which lets the shape of the cubes be altered. Moving the sliders in this panel will make the three dimensional appearance of the cubes more or less pronounced. The 3D Mode check box will change the grid display into a way cool, actually three dimensional one.

3D Mode
Although this program models a three dimensional game of life, the default view is actually a pseudo 3D grid. This is much more efficient to draw and manipulate, but unfortunately can make manipulating the elements somewhat frustrating, as they tend to be lost behind one another, and z-ordering is not obvious. 3D Mode displays the elements as truly three dimensional entities, and allows different perspectives and new transformations. Unfortunately, 3d Mode is computationally expensive, and only enabled for grids smaller than 15x15x15.
In 3d Mode, the grid and be rotated to get a better understanding of the layout of the elements. To do this, just click and drag anywhere on the grid component except over a live element. Left click/dragging will rotate the grid about the X and Y axes, while right dragging rotates it about the Z axis. To enter selection mode, click any live element. To enter selection mode while no elements are alive, right click anywhere on the grid component.
While in 3d Mode, several new visualization options will be available. The isometric checkbox will make the grid isometric (ie, not converge in the distance- imagine looking at it through a telephoto lens). The Field of View slider will control how quickly the view converges.
3D Mode.
3D Mode.
The "Light" button will display a subpanel which allows the lighting and coloring of the elements to be adjusted. By default, each face is drawn with a set color regardless of orientation. Checking the "Flatshading" button will cause the faces to be colored as though they were illuminated by a lightsource (sans shadows). There are three light sources which can be adjusted in the sub panel. The radio buttons select which light source is being adjusted. The sliders control the position of the lightsource relative to the grid. The color button brings up a ColorChooserUI, which allows the color of the light to be chosen. Finally, the "Light off" checkbox will make the light black.

Rotations
The Rotation buttons will effectively rotate the current grid about one of the three axes. This creates a better visual picture of the various elements and allows the user to fully comprehend the patterns and thier relational symmetry.
A Sample Rotation about the Y Axis.
Color Buttons

Sample Color Wheel.


The color buttons are an asthetic functions that allow the user to determine the face colors. As the user toggles between 2D and 3D mode, the Right, Back and Rear buttons are invisible and visible, respectively. The colors are unique to thier respective modes. To choose a color, the user must simply click on the desired button, and consequentially choose the desired color from the color wheel.

Possible Color Combinations.
Symmetry functions within Experiment Mode

Dropdown Box Containing Symmetry.
By clicking the random button, the user can reach the Experiment mode, with the following choices of symmetry: a line, a diagonal, a line of cubes, two lines, two lines of cubes and a line & a line of cubes. The scroll bar, located below the dropdown box that contains the Symmetry choices, will dynamically change the grid to the desired symmetry and cell population. The other functions of experiment mode are still intact, with the enhancement of random, user-defined symmetry.
Conclusion
Hopefully you should have a better idea of the way the program works. If not, you should at least have a better idea of why we're computer scientists and not English students. Once again, thanks for trying out our applet, and have fun!