top of page

Conway's Game of Life, IN COLOR

Conway's Game of Life with color evolution: I enhanced the classic Conway's Game of Life by integrating a RGB-based coloring algorithm that dynamically changes the colors of the cells on each state. Implemented in Unity 2D/C#.

GitHub Repo HERE

COMPILATION VIDEO

ALGORITHMS (under construction/pseudocode)

cw

Color War Algorithm

Cell color is determined by whichever is greater: the sum of blue neighbors or the sum of the red neighbors.

Initial RGB input:

For each cell,

R: 0 or 1

G: 0

B: 1 - R

Blending:

For each cell, take the average of the neighboring RGB values.

R: 1 if red neighbors > blue neighbors, 0 otherwise.

G: 0

B: 1-R
 

pureBlend.gif

Pure Blending Algorithm

Cells eventually blends into a single color.

Initial RGB input:

For each cell,

R: randomFloat(0, 1)

G: randomFloat2(0, 1)

B: 0

Blending:

For each cell, take the average of the neighboring RGB values.

R: avgR

G: avgG

B: avgB
 

randomBlend.gif

Random Blending Algorithm

Cells keep blending, but randomness is added to prevent complete blending.

Initial RGB input:

For each cell,

R: randomFloat(0, 1)

G: randomFloat2(0, 1)

B: 1 - R

Blending:

For each cell, take the average of the neighboring RGB values.

R: avgR + randomFloat(-0.2, 0.2)

G: avgG + randomFloat(-0.3, 0.3)

B: avgB
 

explosive

Explosive Algorithm

Initial RGB input:

For each cell,

R: 1

G: randomFloat(0, 1)

B: 0

Blending:

For each cell, take the average of the neighboring RGB values.

R: min(avgR + randomFloat(-0.5, 0.5), 1)

G: min(avgG + randomFloat(-0.5, 0.5), 1)

B: 0
 

Initially, the problem was that the colors did not maintain its vividness and turned into dull brown-ish colors after multiple steps of blending (Shown in Prototype: right image below.)

Solution 1: Convert from RGB to HSV -> HSV lets us work with a more intuitive and visual color scaling. I maintained the brightness of the colors by setting the Value of HSV to be constantly higher than 0.5. (Shown in Prototype: left image below.)

Solution 2: In the Unity implementations, I introduced controlled "randomness" in the RGB values by limiting the variation to just one or two of the three color channels. This approach preserved the consistency and vibrancy of the colors throughout the simulation, resulting in a more visually stable outcome.

PROTOTYPES IN JAVA

FUTURE IMPLEMENTATIONS

I plan to explore and implement alternative grid structures, such as hexagonal, triangular, and 3D/cubic tilings.

GolHexagonTriang_edited_edited.jpg
GolHexagonTriang_edited.jpg
bottom of page