My Side Projects

I worked on these projects in my spare time to expand my knowledge of the Game engines I was using.

Third person demo game (UNREAL Engine 5 C++)

Made With UNREAL ENGINE 5, Where I made multiple mechanics and learned UNREAL ENGINE 5 Workflow

My learning outcomes from this project

  • Created Skate Mechanics for the Main character to move Quickly.
  • Created AI and Mechanics using a mix of Blueprints and C++ coding.
  • Created Third person Gameplay mechanics with different FOV for different movement modes.
  • Created Cinematics camera to show some story elements in the game.
  • Worked on Metahuman plugin from UNREAL to create some custom enemies for the game.
  • Used Lumen and Nanite and did optimizations for smoother FPS.

I learned a lot about the workflow of UNREAL ENGINE 5 and created this third person game demo.


UNITY VFX Graphs (HDRP) (UNITY Engine C#)

Built With High Definition Render Pipeline (HDRP) i used Unity's Shader Graph for creating Shaders effects.

I learned :

  • How to create and use VFX graphs.
  • How to Create procedural effects.
  • Use particle shaders.

My Goal was to learn to create my own shaders and effects and try to replicate some VFX I see in games and applications


UNITY VR (UNITY Engine C#)

Built With XR toolkit for unity.

I managed to :

  • Create VR Scene and built it on META QUEST 3 headset.
  • Add object interaction and gesture controls.
  • Create a custom scaling function to objects you point at.
  • Made some effects that I learned and tried to replicate them in VR.
  • Create a interactive gameplay scene that can be built into a application.

I wanted to learn XR toolkit and wanted to try my hands on VR Development and was successful in it


My University Projects

During my Masters in Games Programming at the University of Hull, UK, I undertook several Course Modules that greatly enriched my knowledge and skills.

All projects can be viewed in detail on thier Github Repository for further details and can be downloaded aswell to test.


Dissertation: Behaviour trees (BT) and Finite state machines (FSM) (UNITY C#)

This was my dissertation for masters in Computer Science in Games programming which objective was to explore integrating Finite State Machines (FSM) and Behaviour Trees (BTs) in game AI systems to understand AI decision-making subtleties. Traditional AI systems in video games have drawbacks, while BTs, known for their modularity and complexity representation, offer a viable alternative. The research covers the evolution of game AI from simple rule-based systems to sophisticated, learning-facilitated configurations. It includes developing an AI system for a First-Person Shooter (FPS) game, comparing FSMs and BTs, assessing AI complexity and adaptability, and evaluating player immersion. The study demonstrates that FSMs are best for linear tasks with little customization, while BTs provide a flexible, extendable AI solution. Combining FSMs with BTs and incorporating reinforcement learning into BTs is also explored. Using Unity, the dissertation visually represents AI systems by contrasting FSM and BT-based scenes, highlighting AI modularity and fluidity. The research aims to bridge the gap between simple adaptive AI and traditional game AI, offering a comprehensive framework to enhance AI adaptability in video games and real-world applications.


C++ Rendering (DirectX 11)

This was my First DirectX project, I deepened my understanding of C++ programming. My previous experience with OpenGL proved beneficial, with most challenges arising from syntax differences and the reversed Z axis. I significantly benefited from the graphics debugger in Visual Studio, which simplified the shader code debugging process. To achieve an expansive terrain, I embraced instance rendering, drawing numerous cubes in a single call, enhancing performance. I also developed various particle effects using screen-aligned quads and employed both parallax and cube mapping for richer visual effects on terrain and rocket simulations and animations, respectively. Reflecting on the project, recognizing areas for potential improvement like the particle effects and considering external configurations for simulation constants.

Read More/Download


Multi-Threading and Networking (C++) (DirectX 11 and Websock2)

Built using Directx Libraries and using websock2, I delved deep into threading and networking within C++, leading to the creation of a real-time 3D networked application. The foundation of this endeavor was the Rocket simulation I had previously developed, which provided an opportunity to rectify its flaws while building a comprehensive Simulation. I employed a thread pool for threading, encapsulating C++ threads within classes and managing potential thread contention using lock guards. Networking was achieved via a peer-to-peer structure using client–server system. The concept involved players drawing on a 3D canvas, with cubes signifying their mass; a player could "steal" from another's canvas, affecting both canvases' colors. In reflection, while the application showcased minimal latency and reliable data transmission even under simulated poor network conditions.

Read More/Download


C++ Advanced Rendering (DirectX 11)

Developed with the DirectX libraries, in the geometry shader, I generate the terrain using a noise function to adjust its height and create an underwater texture. By examining the gradient of each point with its neighboring noise values, I generate normals, which let me apply basic Phong shading. I also pass a set of control points into the shader to produce plants at each position. I manipulate their vertices over time to simulate the swaying effect of a breeze and employ alpha blending for transparent backgrounds. Additionally, I craft implicit shapes using ray marching tied to distance functions and encase these shapes in a bounding box, optimizing the ray marching process and reducing the necessary steps to reach each shape.


C++ Tower Defense (OpenGL)

I developed a tower defense simulation using OpenGL to demonstrate my expertise in AI. I designed a collision system to identify interactions between agents, towers, and their projectiles. I utilized both the Runge-Kutta and Euler methods for ball-ground collisions, giving the balls random movement patterns. Additionally, I incorporated spatial segmentation for the terrain.


Unity VR Project (UNITY Engine C#)

I developed a surgical simulation in the Unity engine, leveraging HoloLens libraries to provide a comprehensive AR experience. The project incorporated core mixed reality features such as the Mixed Reality Toolkit (MRTK), Positioning, Interaction, Eye tracking, and Voice commands. I utilized these AR capabilities to simulate airway insertion, enabling users to manipulate a controller to insert a cable into an airway, and providing a visual from a camera positioned at the cable's tip to view the interior of the airway. Furthermore, the simulation integrated Azure functionalities, specifically Spatial Anchors and Holographic Remoting.


Group Project (UNREAL Engine 5 C++)

In this project, using Unreal Engine 5, I not only familiarized myself with GitHub's code management and source control but also deepened my understanding of Unreal Engine. As the team project lead, I utilized GitHub boards to delegate tasks to team members and myself, diligently ensuring each task was completed within its set deadline before moving on to the next.


GameJAMs

Some GameJams i took part in.


Three thing game (University of HULL,UK) (UNITY Engine C#)

This was a concept game called Santa Slider that i made with a group of my collegues based on 3 random word we were assigned in the ThreeThing GameJam, we made this in unity using basic programming and basic free assests from the unity store. We got 3rd place overall and it was my first GameJam participation.

GameJam Link