- improved SDL version with faster text display, mousewheel zoom and keys . , - working again
- matlab integration method comparison finally giving decent results
- adams bashforth and runge kutta integration methods shader, snm function can be displayed in all dimensions
There are different directories with different versions:
main version, C++, OpenGL, GLSL, version plus MSVC Windows executable. It should also work with CodeBlocks and gcc/MinGW. You should just have to replace _int64 with long long. GLEE is used, but not included.
a version of SmoothLife with SDL instead of Windows functions. Should be compilable under Windows, Linux and Mac.
in FreeBasic plus Windows executable. There's the old version, plus a new one that allows for multithreading and has the smooth time stepping, and a new integration method. For a description of the glider constructor, see the corresponding blog entry on sourceforge.
in Matlab/Octave. Compares four different numerical integration methods: Euler, improved Euler, Adams-Bashforth 3rd order and Runge-Kutta 4th order. See result.txt for the outcome.
SmoothLife on a sphere based on an earlier version of SmoothLife without FFT.
delayed time version (see youtube video SmoothLife DT 1).
allows for different parameter sets on up to 3 scales (keys see top of main.cpp file). It has three different modes for how the effect of the three scales are added together, and two different modes for how the kernel is interpreted.
Install SmoothLife by unpacking the .zip to a place where the program can write in its own directory. It writes to the logfile SmoothLifeLog.txt. This will help with debugging if the program won't start for you for some reason. You need OpenGL 3.0 for example and your OpenGL version string will appear in the logfile. It reads the shaders from the shaders directory. Parameter values are read from the first valid line of the SmoothLifeConfig.txt file, the rest is ignored. So if you want to change default settings you have to copy the appropriate line to the top in the config file. Also, there are settings like the relation of inner and outer radius that can not be changed in the program, but only this way.
If you start the program successfully you should see the running simulation and a bunch of numbers. The first one is timing information. My screen refresh rate is 85 Hz, so I like to know how many screens a time step takes. That is the meaning of this number. You could also say it is the time measured in 1/85 seconds. Then there is the information if you are in discrete (0) or smooth (1,2) time step mode. The next numbers are: outer radius, relation outer/inner radius, relation outer radius/kernel step width and time step (ignored for discrete mode).
The second line shows the values for the sigmoid function: Birth and death intervals, step function types and step widths. You can change the birth/death values with keys and observe the effects in real-time. That's the whole point: to find interesting birth/death values. Use the keys q/a, w/s, e/d, r/f to raise or lower respectively the four values. If you have found interesting values, you can save them to the config file by pressing "m". You can start next time with these values by moving the last line to the top. The complete key settings can be found in the comment section at the top of the main.cpp file.
further examples, descriptions and details