* Final Project Documentation for CAP 4800 / CAP 5805 - Fall 2000
--------------------------------------------------------------------------------------------------------------
* Author: Mark Hannum
.
--------------------------------------------------------------------------------------------------------------
Mark Hannum
golScript10.wrl bkgnd4.wrl
--------------------------------------------------------------------------------------------------------------

Please use Blaxxun Contact to view this VRML world--I have not been able to get it to work with any
other Browser (when I attempt to view it using Cortona, my computer ususally ends up crashing).
This world depicts a three-dimensional version of Conway's "Game of Life", a simple cellular automata. Conway's original was played on a 2 dimensional grid, and followed the following rules:
In this implementation, we are no longer restricted to 2 dimensions. And although initially the rules are set to imitate Conway's classic version, they may be changed as the user desires. For example, before or even during play, you may change the situation such that a cell could be given life if it were surrounded by 5 or 10 living cells, and could maintain life only if it were surrounded by 14 living cells (this would produce a fairly uninhabitable situation, I think). Such versatility can lead to some interesting experiments, at the very least.
The user can toggle the state of a cell at any time simply by clicking on that cell. Having set up the initial situation as desired, a user would press the "start" cone on the left side of the game board. About every second another generation is produced, and the user can interact with the board as he or she chooses.

My personal preference was to stay with Conway's initial set, but I would encourage any user to experiment-- one of the first experiments that I did was to toggle the "0" rule on the left hand (non-living) side. This produces a "spontaneous generation" situation: cells that are surrounded by exactly no living cells are given life. Unless other changes are made, these cells will then die for the next generation, producing a full board blinker. For another interesting game, toggle the left-hand side "1" from non-living to living. This rule, in addition to Conway's original three, produces some fairly aesthetically pleasing designs, I've found.
I found that writing java script can be a little qwirky when the scripts are longer. Originally, I was using Cortona, and could not achieve even partial functionality. At the point my computer was crashing, I had reached new heights of frustration. I was completely shocked that simply switching to Blaxxun solved my problems, and became overjoyed that I had something other than a console window to look at.
I mentioned in my last interim deliverable submission that I had been experimenting a bit, and trying to find notable cell formations. I have a few (some more notable that others). All of these use Conway's original rules (if you've changed the rules, change them back, or just reload).
First is the "Artificial Blinker", and it can be made by putting the cells in this configuration:

It's called "artificial blinker" as opposed to "blinker" because unlike Conway's original blinker, the small size of the board limits expansion--the cells in the middle are artificially held in place by the surrounding cells inability to expand, and their formations to mutate.
The next is notable because it achieves stasis quickly:

The four cell configurations seen as a result of this experiment would act exactly the same in Conway's original--I thought it was an interesting correlation. You could slice the middle plane from this end figure and have a normal, legal, game of life board.
In experimenting, I've found that it's generally easier to keep assymetric formations alive longer than symmetric formations--which is not exactly counter-intuitive, and maybe even a little prophetic. This final pattern I call sidewinder.

It's diametrically symetric--it goes through some time before it finally settles to two colonies.
The most annoying and obvious shortcoming in this game is that it is only a 5 by 5 by 5 board, and not even close to being easily expandable. I'm genuinely curious as to what would happen if the board were 10 by 10 by 10, or even 100 by 100 by 100. Unfortunately, hardcoding even a 10 by 10 by 10 board would be ridiculously tedious. A future version might represent the data a little more convieniently. Most other changes would be relatively minor--I'd like to display the current generation number. Also, I'd like to have a button available that would allow the user to clear the board (rather doing it by hand, or reloading).
Overall, I'm pleased. I've learned much from doing this project. I've even delved into areas that, in the end, I did not pursue, and I value the experience and knowledge that I gained even from that. The most fun part of this project, however, was playing with the 3D Game of Life. I found myself hypmotized by the experience, wondering how long a certain pattern would be able to last before going extinct or building a colony and achieving stasis. I wonder why Conway called it the "Game of Life", actually. I know that he used that metaphor to describe his rules ("starvation" leads to death . . . "overcrowding" leads to death), but I'm curious as to what inspired it. My sister plays a video game called "The Sims", in which she interacts with a virtual family. I find myself playing this with the same attitude. For me, the "Game of Life" metaphore has taken on a life of its own. I'm mezmerized by so many complex permutations that can occur as a result of a simple mathematical system--I wonder if the universe isn't governed by an equally simple system, and I wonder if humanity, and all other unfathomable complexities aren't its result.