# Projects

**Oglre: OpenGL Rendering Engine [WIP]**

This is my current project, a rendering engine utilizing the OpenGL API, written in C++. Current features – Shader System, Camera System, rendering for 2D and 3D primitives, batch rendering.

*Images coming soon!*

**Cutercon: Minecraft Remote Console**

RCON is a TCP/IP-based protocol that allows server administrators to remotely execute Minecraft commands.

I wrote this program to help with my Minecraft server administration. It's very convenient to be able to send commands remotely to my Ubuntu server, and I added a simple GUI using PyQt6!

**Glautomata - Conway's Game of Life**

John Conway's Game of Life displayed using batch rendering in OpenGL.

- The Game of Life is an infinite, two-dimensional orthogonal grid of square cells, each of which is in one of two possible states, alive or dead.
- Every cell interacts with its eight neighbours, which are the cells that are horizontally, vertically, or diagonally adjacent.
- At each step in time, the following transitions occur:
- Any live cell with fewer than two live neighbours dies, as if by underpopulation
- Any live cell with two or three live neighbours lives on to the next generation
- Any live cell with more than three live neighbours dies, as if by overpopulation
- Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction
- This creates complex patterns from very simple rules.

I decided on a whim one day to apply my OpenGL learning to one of my favourite things to code, the game of life! It runs a lot better than my first implementation of it, which just used the Dear ImGUI library to leverage a rendering API *(OpenGL in this case as well)* to draw to the screen. However, batch rendering, i.e. sending all the vertex data simultaneously per draw call proved to be a far more efficient method.

I'm quite proud of the code, despite it being a small project, as its pretty clean in my opinion.

**Demonstration GIF:**

**Cellular Automata Generator**

This is a generator for Elementary Cellular Automata and John Conway's Game of Life. Inspired by Stephen Wolfram's 2002 book: A New Kind of Science.

The cellular automata generator took me quite a while to get right. It was my first time trying to do something a bit complicated in C++, but I learnt quite a lot, and my second time around (*See Glautomata above*) had the code be much cleaner and maintainable.

- Elementary Cellular Automata are the simplest class of one-dimensional cellular atomata.
- Each cell in a grid has two possible values (0 or 1) and rules that depend on their previous three nearest neighbours.
- In this program, different automata can be generated simply by changing an 8-bit binary number that represents the rules for what each cell's state should be given it's neighbours.
- More details at Wolfram Mathworld.