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!
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!
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.
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.