Sailing and fishing game prototype made in C++ and OpenGL
This is a game prototype where the player can sail a boat around and fish in the sea.
The boat moves with realistic sailing physics using a coefficient of drag based on the wind direction.
The waves on the sea were created by manipulation vertexes of a flat plane in three directions, generating normals for the new manipulated vertexes and colouring it depending on their direction relative to the sun.
The island from project Island has been imported for the player to sail around.
The player can equip their rod in the boat, cast out and reel in fish in order to gain score.
The game features a custom loading system that has been vastly improved from project ball exploder. The new system uses custom structs of vectors in order to create a load order for resources, and sequentially aquire them from storage. This allows for a smooth responsive loading screen.
All models in the game were custom made by me, although not very good, I have improved somewhat over the course of the project.
The game also features a custom SOA and AOS game object system that allows for catogorisation of objects into data oriented structures or object oriented structures. These are passed through a system of managers that automatically manage their rendering and runtime operations.
A custom text renderer was created that reads in a custom font file, and modifies the uv coordinates of a rendered mesh to fit the assigned char of the text that is passed to it, and can be updated in real time . These are used for UI rendering in the game.
A playable build is avaliable on Itch.ioMesh deformation simulation project made in C++ and OpenGL
For my honours project I am simulation mesh deformation in realtime, using both the CPU and GPU.
Meshes are split up into many nodes representing one or many vertexes, and the nodes actively rewrite the vertex buffer of the mesh in response to collisions, and other connected nodes.
I am currently in the process of writing this into a compute shader for GPU acceleration of the simulation.
C++ OpenGL prototype game where the player has to destroy bowling balls before they hit the pin in the middle.
This was my first experience using geometry shaders in GLSL to create the explosion effect when the balls are hit, as well as my first time using the depth buffer for shadowmapping the bowling pin.
Other shaders of note are the reflection, crosshair and fire effect shaders. The reflection shader samples the skybox and mixes the texture at the sample point with the object texture. For the crosshair shader, the screen is rendered to a framebuffer, and then the crosshair texture acts as a chromakey where overlapping textures are inverted and drawn above the scene. The fire effect is created by sampling three perlin noise textures, mixing them, moving uv cooridnates over them, and finally bending them into a circle to create the effect.
This project was also my first attempt to abstract resource loading away from the main state of the game.
While functional my loading state was based on arrays of resource types, and lacked the scalability and reusability required in later projects.
Unity multiplayer networking project where players compete in an rts-style game to destroy each other's base.
This project was made for my networking module at GCU. The player spawns, moves, and gives orders to units on a map in order to set up ambushes and artillery barrages on other player's units and base.
The game dynamically reads in the terrain type of the map texture and adjusts the player speed according to it.
It featured catchup systems to move player's out of synch units in order to catch them up.
C++ OpenGL project using perlin noise to procedurally generate an island.
The player can climb the island and swim in the generated water.
The island was generated using perlin noise textures to create a heightmap, and then from that heightmap creating a normalmap.
The island is them written to a .obj file for reuse and faster load times into the project.
The normal map is used for dynamic lighting during the day night cycle, texture swapping between rock and grass and for player movement. The player's velocity is modified by the xz component of the island normals at a certain steepness, and this causes the player to slide down steep edges.
The water is created using a sin wave with the magnitude being determined by a counter as well as the distance from the island, this causes the waves to roll in and out from the island. The transparency, colour and height of the waves are then modified by their distance to the island.
This was my first attempt at using reflection shaders, where the sun is reflected off of the water surface into the player's vision.
Vertex manipulation was also used to make the trees sway in the wind depending on the wind direction and the vertex position of the vertex.
I collaberated with a team to make VR Rescue for my Group Project Module at GCU
It was created in Unreal Engine 5, made as a VR saftey procedure instructional tool for wind turbine engineers.
The player transits up to the top of the wind turbine in order to safely lower an injured person down to be resuced, and this project outlines the procedure of the equipment, ascention, checking status, and lowering the person.
During devlopment I worked on and took over a number of responsibilities, including:
The harness equimpent and inventory system
Headset tracking on equipment
Object interation and functionality
Player collision
Adding SFX
Rope rigging, physics and mechanics
Climbing physics and mechanics
Team coodination and planning
Unity based project made for my Game AI module at GCU.
In this module we were tasked with making a team of AI agents play an RTS style game against another set of agents created by the lecturer.
For this I created an inheritance chain of agents of different types; Scouts, Navigators, and Soldiers. The scouts uncover the fog of war, find enemies and mark them for the navigators. The navigators then use A* to create paths just outside of the enemy aggression range, and lead the soldiers there. once all units have reached their destination, an attack order is created, one of; Rushing the enemy, Skirmishing from a distance or initiation a pincer maneuver to attack from two different directions.
The AI decision making process is all based upon a behavior tree I created to command the units. It assesses the current strength of the enemies compared to the allied units before assigning the attack order.
When special units die they are dynamically replaced by soldier units to fill out their role for them.
C++ Unicode based recreation of Space Invaders and Snake
The game was set up to render to the CMD window, where the player can select between playing space invaders or snake
The project includes score save/loading, and a state machine that allows the player to transition between menus and games.
The art in the project is created using unicode chars in a w_char format, those chars are saved in a double pointer array and then rendered to the window.
C++ OpenGL racing game designed for use on the PSVita.
The player drifts the car around a track while avoiding obstacles and collecting checkpoints in order to achieve the best time
The project was created in a propriatery engine called GEF, using BOX2D for physics.
It was designed to be played on the PSVita, .
The project was created in a proprietary framework called GEF, using BOX2D for physics.
Cannot for the life of me find the code files for this
This project was a mandelbrot set being computed using a task farm to divide and parallelise across cpu cores
C++ SFML based rpg game where the player completes a quest to slay an ogre.
This was my first fully playable project that I created.
The player moves from a safe area, through a field to collect a quest in the town to slay a monster. there are multiple interactable npc's such as vendors, guards and the mayor.
The game uses a turn based pokemon style combat system when fighting enemies. The player has different options such as to attack, use a potion and flee.
The player can level up and improve their health and damage by defeating enemies, or purchasing upgrades from vendors in town.
I'm currently an honours student studying Games Development at Glasgow Caledonian University.
I have experience broadly in all aspects of game development, with a focus on systems development.
My programming experience is mainly from projects in C++, using OpenGL and SFML to create 2D and 3D envvironments.
I also have some experience in C#, Python, Java, Visual Basic, and HTML.
I would describe myself as a backend programmer, preferring to work on game systems and functionality, however I have experience in graphics programming as well, and don't feel that I'm lacking in any specific aras.
Please enter your name, email address and message