Academic Projects

2018 – 2019 (3rd Year)


Image Processing using Thread Building Blocks

I have performed image processing making use of parallelism with Thread Building Blocks. The three images below are the result of the algorithms that I wrote. The image on the left produces a Gaussian blur on the image and the other 2 are a result of calculating differences between 2 input images with additional processing occurring based on a RGB threshold value.

Technologies Used

  • C++
  • Thread Building Blocks

Modelling and Simulation of Real-Time Soft-Bodies for Computer Games

Currently as part of my dissertation i’m producing a simulation of real-time soft-bodies. This involves the development of a 3D physics engine which is capable of generating collisions, forces, springs and cloth simulation. These components are then required in order to generate soft-bodies.

Using the entity-component-system design pattern, I’ve been ensuring the physics library can be easily integrated with other libraries that would make up a functional game engine.

Once finished I do have plans to try and extend this library and hopefully develop a rendering system using DirectX and currently for testing it uses OpenGL.

Technologies Used

  • C++
  • OpenGL
  • GLSL

3D OpenGL Scene with SSAA and MSAA

This 3D OpenGL scene contains one directional and multiple point lights. It renders the scene into an FBO before then rendering to the screen, the objects within the FBO and made up of VBOs and VAOs. It was designed in order to showcase the use of multi-sampling and super-sampling anti-aliasing with a custom shader written to achieve SSAA.

Technologies Used

  • OpenGL
  • GLSL
  • C++

Source code available here: https://github.com/WilliamAkins/3D-OpenGL-Scene-with-FSAA


AI Techniques for Pathfinding

In this project I used the A* informed search algorithm to find the optimal path between 2 points. As shown in the below screenshots, the algorithm will look through each square that it considers a possible path and marks that in purple. Once it has found the destination it will then determine the optimal path from its search space.

The scene itself that is being searched is procedurally generated based on a variety of small island templates, then using the DDA line generation algorithm, connects them together with paths. This scene is entirely generated in C++, within the Windows console.

Technologies Used

  • C++

Source code available here: https://github.com/WilliamAkins/AI-Techniques-for-Pathfinding


Doom 3 Bot AI Modifications

This project involved the modification of a fork of Dhewm3. I had to extend the bot AI functionality, which involved writing server side code in C++ and client side in Python.

The communication between the client and server made use of the observer design pattern. I extended this and added my own methods or subjects to the pattern. This therefore allowed the bots to perform additional tasks such as reloading their weapon, changing weapon and setting an initial weapon and ammo value for each bot.

Technologies Used

  • C++
  • Python
  • Dhewm3
  • Pybot

2017 – 2018 (2nd Year)


Chilly No Mates

Chilly No Mates is a game made in Unity that I developed as part of a team of 5 people. The game focuses around a character who has lost their clothes and is on the hunt to recover them. The city in which the player traverses has been designed as a sandbox, which a variety of different interactions and various NPCs offering quests.

All of the game has been developed using C# and I developed the NPC dialogue system by storing the data in an SQLite database which the C# communicates with.

Technologies Used

  • Unity
  • C#
  • SQL

Source code available here: https://github.com/WilliamAkins/Chilly-No-Mates-Unity


3D OpenGL Scene

This is a 3D scene that I created using OpenGL. I wanted this scene to be a 3D re-creation of the 2D one that I had previously created. As it’s purely OpenGL it’s written in C++ with GLSL for its shading code. This scene involves a having a missile move up into the sky, where its position and rotation is transformed and then it returns down where it explodes on impact with the ground. It’s makes good use of VAO/VBOs and incorporates a mix of different light sources with a variety of ambient, specular, emission and shininess properties.

Technologies Used

  • OpenGL
  • GLSL
  • C++

Source code available here: https://github.com/WilliamAkins/3D-OpenGL-Scene


2D OpenGL Scene

This is a 2D scene that I made which makes good use of important OpenGL features such as VAO/VBOs with GLSL for shading. In addition, it incorporates blending to achieve some of the visual effects as seen in the screenshots.

The scene itself is of a missile that goes up into the air and then comes back down where it blows up.

Technologies Used

  • OpenGL
  • GLSL
  • C++

Source code available here: https://github.com/WilliamAkins/2D-OpenGL-Scene


Poptart Dispenser (State Machine)

I created a state machine that was developed with particular focus on design patterns and object-oriented coding.

It strictly follows the finite-state machine principles while also using the factory method design pattern. It could potentially be used as the back-end for a vending machine of poptarts, allowing interaction through various methods.

Technologies Used

  • C++

Source code available here: https://github.com/WilliamAkins/Poptart-Dispenser-State-Machine

2016 – 2017 (1st Year)


Ascii Zombie Game

I created a top down zombie shooter game in C++ and operates entirely within the Windows console. It follows an object-oriented coding structure and allows the player to move around and kill each zombie using a gun. Once all the zombies are dead, it will then proceed to the next wave where the difficulty slightly increases. Meanwhile the zombies will attempt to catch the player, lower their health until eventually they die.

Technologies Used

  • C++

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top