LIFE3 version 1.2 copywrite 1987 by Bob Benedict LIFE3 is a 3D version of the classic cellular-automaton game. A good reference is A K Dewdney's COMPUTER RECREATIONS column in Scientific American. New Features Now uses whole CRT ( 344x218 screen ) note: LIFE3 recenters screen. If you choose ToBack the old center is restored for your other applications. After returning to LIFE3 select the menu and LIFE3 will recenter. Faster graphics and generation routines Can now select ToBack during runs, runs in backround WITHOUT drawing (faster) to see latest universe after returning select VIEW or ORIGIN New commands: MERGE, ->SEED, SEED-> More efficient storage- arrays increased to 4000 General fix of glitches in last version Commercial 1 This is a shareware program. If you find it useful please send $20 to: Bob Benedict 155 Barnes Dr Tallmadge, Ohio 44278 and I'll sent you a disk with the latest version, source and examples. If you're not interested in the source, send what you think is appropriate. Commercial 2 3D life has explored heavily by Carter Bays who will send you a 40 page document on it for $3 to cover costs. His address is Carter Bays Dept. of Computer Science University of South Carolina Columbia, S.C. 29028 Commercial 3 A 3D Life program is available from Carter Bays for the MAC for $19 ( $29 for a MAC+ version ). His program is NOT shareware and we are not in any way connected. LIFE3 3D life is played on a 3D grid of cubic cells. Cells in this version have two states: alive or dead. Each suceeding generation is created by using a count of the live neighbors of a cell and a set of rules. If a cell is live and it has less than EL neighbors or more than EU neighbors it dies. Otherwise it continues to live. If a cell is dead and it has less than FL neighbors or greater than FU neighbors it continues to stay dead. Otherwise it comes to life. FL, FU, EL ,and EU are parameters that control the laws of the universe the cells live in. These may be adjusted by taking the "LAWS" pick from the "RUN" menu. Remember to hit RETURN after entering a value in a string gadget. Cells in this AMIGA version live in a finite 32x32x32 universe. The surface of this cube ( any coordinate 0 or 31) is sterile. The universe can be initially populated three ways: a file can be LOADed, the EDIT option can be used or the a region filled with the RANDOM option. When a file is loaded the universe is first cleared. When a file is MERGEd it is merged with the existing universe. The EDIT menu pick opens a 32x32 (x,y) window on a slice (z=constant) of the universe. The slider is used to pick the slice to edit. A mouse click will toggle a cell on or off. The edited universe is stored in the "seed" universe and used to compute new generations. The RANDOM menu pick clears the "seed" universe and then fills a rectangular region centered around the ORIGIN with the density of live cells that you choose. The actual number of cells set on is usually less than the density times the volume since a location may be chosen more than once. The random number generator uses the algorithm from Wichman and Hill's MARCH 87 BYTE article. The generators are seeded by the system clock each time RANDOM is chosen. The LOAD menu pick loads the seed universe from a file. The file also contains the law setting for that universe. The files used are straight ASCII text files that may be generated with a text editor or another program ( in case you don't trust my random number generators). The STORE menu pick stores the current seed universe ( usually NOT the universe displayed!!). The ->SEED menu pick stores the current universe in the "seed" universe. This lets you STORE that universe in a file. Its complement SEED-> reseeds the universe to replay the last seed. The ORIGIN menu pick sets the origin that is the center of the present view. The VIEW menu pick sets the location of your eye. You'r so interested in the origin that you always look directly at it. The view, origin and cells are all relative to a global right hand coordinate system ( y up, z out). To run the next generation just click with the select button in the window. To run many steps use the RUN menu pick. A mouse click will stop a multi- step run. The number of steps is bounded at 10000 to prevent strange behavior if you forget to hit return after entering a value in the string gadget. You can now select ToBack during runs. LIFE3 will run in the backround WITHOUT drawing cubes ( much faster ). To see latest universe after returning select VIEW or ORIGIN. Algorithm A sparse matrix technique is used to create new generations. A universe has two representations: a 32x32 array of integers as a bit map and an array of structures that hold coordinates of live cells and some info used in rendering. Only cells adjacent to live cells are checked in generating a new universe. A spare bit map is used to keep track of cells checked so that no cell is checked twice. This cuts the amount of checking down by several orders of magnitude. A live cell has its bit set in the bitmap and is stored in the cell array. Its distance along the line from the eye to the origin is computed and the cells sorted in decreasing order. The cell list is clipped to remove cells behind the eye and the cells rendered with the most distant cells first. This approach works well for a large universe that is sparsely populated. One drawback is that the number of cells living can not exceed the size of the cells array. The present version uses arrays that hold up to 4000 cells. This program was written in MANX C (3.4). It has no assembly language routines. I'd like to thank Henry Shilling for his help with the C language and the cantankerous C compiler. Also thanks to Charlie Heath for the slick file requester. Next Steps Adding copy, cut and insert to the editor to ease seed generation, as well as commands to rotate the pattern in the clip. Adding wraparound instead of death at the universe surfaces. What would you like to see? Growing Seeds Hints extracted from Carter Bays paper: Some laws lead to explosive growth. This can be used to fill a seed universe from a single cell or a sparse random pattern. Using the notation ( EL EU FL FU ) (1 26 1 26) leads from a single cell to a cube (1 9 1 9) leads from a single cell to a hollow cube with some internal structure (4 5 1 2) leads from a random pattern to some interesting seeds