Thomas Jackson's Website

OpenGL Engine

This is a project I worked on in my second year at AIE during the course's computer graphics module.
This is a barebones OpenGL C++ rendering engine, focusing on learning the fundamentals of 3D rendering techniques and engine architecture.
What I ended up with was a rendering engine that supported: renderining primitives, rendering meshes from file, basic shaders, basic direct lighting using phong shading, normal mapping, direct PBR lighting using oren-nayar and cook-torrance shading models, basic key frame animation in an object hierarchy (not skinned meshes), virtual cameras using render targets, particle systems (broken billboarding), development UI using ImGUI to interact with the scene.

A screenshot showcasing my OpenGL engine.

Third Party Libraries/Packages used: GLFW, glad, glm, stb_image.h, assimp, imgui

BCNet

This is a C++ library I worked on for the complex game systems module at my second year of AIE, focused on writing a modular library for games.
With this project I wrote a generalized high-level networking library utilizing Valve's GameNetworkingSockets to handle the low level networking.
As a small demo to demonstrate the library, I worked on a clone of Pong allowing for a two player game over a network.

A screenshot showcasing the connection screen of my client utilizing BCNet. A screenshot showcasing a small pong game built with my BCNet library.

Third Party Libraries/Packages used: Raylib, GameNetworkingSockets

Physics Engine

This is a basic physics engine I worked on using C++ for AIE's physics module during my second year.
This project focused on learning the basic systems and theory behind a 2D physics engines implementing the concepts and mathematics behind Newtonian physics, including the laws of motions, linear forces, and momentum. As it is a physics engine it also contains systems and logic for handling collision detection between different collider primitives.
As a small demonstration I created a setup which looks like a Pool table, allowing you to throw the billiards around using the physics bodies and watch as they interact with eachother. Unfortunately, I could not create the complete Pool game within the time I had to develop it, as much as I wanted to.

A screenshot showcasing my Physics engine.

Third Party Libraries/Packages used: aieBootstrap, FMOD

Retro Games Gallery

During my first year at AIE, I created a game meant to practice C++ programming using the Raylib game framework. It quickly evolved into a somewhat larger project featuring a fully custom menu system with seamless transitions and two basic games.
I ended up implementing both Pong and Snake, Pong containing a two player versus mode and an AI versus mode.
I wanted to implement more games but ran out of time due to focusing on the menu system.

A screenshot showcasing the main menu of Retro Games Gallery. A screenshot showcasing the game selection menu of Retro Games Gallery.
A screenshot showcasing the Pong game of Retro Games Gallery. A screenshot showcasing the Snake game of Retro Games Gallery.

Third Party Libraries/Packages used: Raylib

The Calling

The Calling is a horror game made in Unity, which I helped develop for my first Major Production during my first year at AIE. Which we worked on for about 6 weeks.
I was one of the game programmers alongside the lead programmer.
The premise of The Calling is to gather evidence of a Wendigo creature that stalks within the forest, you must avoid a deadly fate from the creature by hiding within tents or bushes.
To gather evidence as required by the objectives list, you must left click which takes a photo of the evidence indicated by a short flash and a sound effect.

A screenshot showcasing the Wendigo creature within the forest environment in The Calling. A screenshot showcasing the save points in The Calling.
A screenshot showcasing one of the camp sites in The Calling. A screenshot showcasing the abandoned cabin in The Calling.
A screenshot showcasing the scary tree in The Calling. A screenshot showcasing a closeup of the Wendigo in The Calling.

I developed the objectives system which integrated with the Fungus unity package, as well as over-engineering a method of detecting whether the current objective's evidence is visible on screen.
One idea for the game initially was that good evidence would be determined by comparing how much of it is within the screen when you take a photo to a configured threshold.
The system I developed ended up using a custom render pass and a compute shader to create a black and white mask of the evidence on screen, and using that to calculate how much area it takes up within the screen's resolution. This never ended up getting utilized as the idea was scrapped afterwards, but it's pretty cool.
The screenshots below showcase the normal game view and the custom render pass with the "evidence mask".

A screenshot showcasing the normal view of the game. A screenshot showcasing the custom visibility mask calculated for 'evidence'

Third Party Libraries/Packages used: Fungus, iTween

WizzBizz

WizzBizz is a Unity Project that I helped developed for Major Production during my second year at AIE, which spanned from the end of July up until early December. I was one of two game programmers where I was the lead programmer.
The game is a casual couch multiplayer action-party game, similar to games such as Boomerang Fu. It initially started off as a spin on dodge ball but evolved into more of it's own thing. Players control up to four characters who each have unique abilities and compete in an arena setting. There's a free for all mode and a team versus mode, both having the goal of defeating the opposing players. To do so, players can use their abilities or use the "Orbs" which spawn around the arena and allow the player to use a more powerful attack.
The game primarily uses controllers for input, utilizing Unity's new Input System to do so.
I helped develop the overall gameplay and systems, the largest one being the UI menu system. The game idea I wouldn't consider very technically challenging or complex.

A screenshot showcasing some gameplay in WizzBizz.
A screenshot showcasing some gameplay in WizzBizz.

Third Party Libraries/Packages used: Surge

Hi, this page is still being worked on.

Please check again soon.

An animated illustration stating that the website is under construction.