Cole Propach

Computer Science & Engineering | Santa Clara University

Oreblood Peak

Oreblood Peak is a roguelite dungeon crawler game where you play as a dwarf decending into the caverns below Oreblood Peak in search of the elusive Oreblood, a magical material that can be used to forge new upgrades to your character.

I made it from scratch in C++ without an engine using the SDL2 library. I decided to use SDL2 instead of WinAPI (what I used for Snake.exe) because SDL2 can be compiled to most platforms, whereas WinAPI can only be compiled to Windows. It is a work in progress passion project that I hope to complete by early 2026.

Snake.exe

One day I decided I wanted to try to make a game from scratch in C++ without any game engine. I wanted to start with something simple as a proof of concept. I decided to recreate the classic Snake game using WinAPI, which is a C++ library that allows you to interface with the Windows operating system and compile to a Windows .exe file.

Gameplay of Snake.exe

Cole's Cellular Automaton

Showcase of the snowflake pattern I found in my cellular automaton
Click here to try out my cellular automaton!

I was inspired by Conway's Game of Life and wanted to make my own cellular automaton with my own set of rules. For information about what a cellular automaton is, check out the wikipedia page here.

Like Conway's Game of Life, my cells can be in one of 2 states: alive, or dead.
A cell's neighborhood is composed of 4 leaves (labeled with 1, 2, 3, and 4). 0s are ignored cells, and C is the cell whose neighborhood we are looking at.

        0 0 1 0 0
        0 0 1 0 0
        4 4 C 2 2
        0 0 3 0 0
        0 0 3 0 0
        

Leaves can be in 1 of 3 states, depending on the number of live cells it contains:

  • Unpopulated: The leaf has exactly 0 live cells
  • Semi Populated: The leaf has exactly 1 live cell
  • Fully Populated: The leaf has exactly 2 live cells

Rules (inspired by Conway's Game of Life):

  • Live Cells
    • Overpopulation: A live cell with any fully populated leaves dies.
    • Underpopulation: A live cell with 0 semi populated leaves dies.
    • Survival: A live cell with any semi populated leaves stays alive.
  • Dead Cells
    • Reproduction: A dead cell with exactly 2 semi populated leaves becomes alive.

I coded the program in C++ with SDL2 and compiled it to web assembly using emscripten so it could be easily run in the browser.
After I finished the basic program I played around with it a bunch by making random chaotic shapes and seeing how they would evolve over time. I discovered many interesting properties and configurations. I added the 9 most interesting configurations I found as presets that can be loaded in with the number keys. My favorite find was a stable cycle that has 81 unique states before returning back to the original state.

Contact me