Games Programmer.


About Me


UKIE #raisethegamejam




We based our game upon a person feeling angry in everyday life and to supress their anger they have too secretly punch and dispose of people...

Latest Event




I will be starting my new Associate Programmer Role in June

GGJ 2021




We made a short adventure game about a dog trying to find its way home in Unity

Portfolio


Click images for more details


Colour Theory<br><br> 
Skills:<br>  - C++ Programing<br> - Unreal Engine 4<br><br> 
Brief: As part of a team design and create a game in Unreal Engine 4<br>
Our team, monocode, designed, prototyped and created a physics based puzzle game inspired by 
portal in Unreal Engine 4. The player changes the properties of cubes using a colour gun and must solve a variety of puzzles.
My specific work on the programming side was on two cubes, one that attracts and stores all other cubes near it, and another that 
deletes itself after ten seconds. I also worked on the gun, setting up scripts that change certain materials
on the gun based on what colour property is active. Another role of mine was to try and keep the team organised
 by  maintaining the Trello board we shared and keepig it updated with what tasks were ongoing, done or being scrapped. 
I also designed the introductory levels to make sure the player
understood how the main gameplay worked.
<br>Achieved: 80%
UNIVERSITY
Colour Theory
Advanced Graphics<br><br> 
Skills:<br>  - C++ Programing<br> - DirectX 11<br><br>
Brief: Implement Advanced Rendering Techniques <br>
I originally used directx 12 as my API of choice but eventually chose to switch to 11 as I was much more familiar with it and found it easier to debug.
I programmed a camera movement system, and imgui to make object and light manipulation easier then began implementing normal mapping, parallax then self-shadowing. Then 
added rendering to texture, which developed into rendering to full screen quad. Then I worked on small screen space effects such as motion blur, HDR, and depth of field.
At this point I began to attempt Shadow mapping, having understood the concept quite well; to simplify depth buffer pass, shadow map generation, then map sampling and depth comparrison,
unfortunately I did not have time to finish this before the short deadline but plan on returning to it in future though most likely in DirectX 12.
<br>Achieved = 76%
UNIVERSITY
Advanced Graphics
Artifical Intelligience Assignment<br><br> 
Skills: <br> - C++ Programming<br> - Visual Studio<br> - Implementing Search Algorithms<br><br> 
Brief: Program an AI with pathfinding and a fuzzy state machine <br>
For my AI module I created a tank AI with the aim of competing in a group arena battle; this was unfortunately
changed so that instead the AI should navigate a maze collecting crates and avoiding enemies. 
This involved programming a fuzzy state machine that handles 11 states and pathfinding based on the Dynamic 
Recursion Search algorithm
<br>Provisional Mark Achieved: 100%
UNIVERSITY
Tank AI Project
Ray Tracer Optimisation<br><br> 
Skills:<br> - C# Programming<br> - C++ Programming<br> - Windows Forms<br> - Visual Studio<br> - VS Profiling Tools<br><br> 
Brief: Optimise and port a ray tracer from Windows platform to linux <br>
Taking the framework provided, a slow ray tracer program, I fully profiled memory usage and run-time using visual studios built in profiling tools,
I then added c++ 11s chronos for more accurate timings and profiled each section of the program. Using Win Forms I created a UI tool that allows the user 
to create keyframes that will be animated between, this then writes to a json file which is then used in the main framework for reading position, sizes etc. of 
the spheres being animated. Now onto memory managment, for noting when items are being added to the heap I overrode both the global and class specific new and 
delete then to better keep track of what objects where using the most heap space I created a few custom heap classes, 
one that just tracks the amout of space being used (this tracks most standard type objects), and another that preallocates memory and tracks positions in memory, this I 
used to track my custom sphere objects. Then I performed general optimising techniques such as adding threads, switch out parameters to be passed by reference and adding buffers to 
repeated writes to files. By this point the software was running about 8 times faster so it was time to port to Linux. Using a virtual machine and VS code I added linux specific #includes and switched out the
threads for processes, as linux runs entirely on processes, then I profiled this using chrono and it ended up being just 1 second slower than the windows version.
<br>Provisional Mark Achieved: 98.18%
UNIVERSITY
Low Level Programming
Scott vs Networking<br><br> 
Skills:<br> - C# Programming<br> - Windows Forms<br> - Visual Studio<br> - Multithreading<br><br> 
Brief: Produce a networked chat application and server, alongside a multiplayer networked game <br>
My First ever Project in C#! A networked chat client, that allows users to connect to a server and send messages using UDP or TCP, you can also wisper to other clients
 using their usernames displayed in the right hand panel, implemented techniques such as multithreading and thread locks. I also produced a small networked game that
 allows two users to play a more basic version of the fan favourite Scott Pilgrim vs. the World the game online for which I wrote my own rendering and animation system 
using windows forms Bitmaps, and collisions were handled using box colliders.
<br> Achieved: 86%!
UNIVERSITY
Scott Vs Networking
UKIE Game Jam<br><br> 
Skills:<br> - C++ Programming<br> - Visual Studio<br> - Unreal Engine<br><br> 
Brief: Ukie Jam 2020 #raisethegamejam theme<br>
I acted as team leader for a six person team as we designed and created a small game in Unreal Engine. We brainstormed ideas about what game we found interesting 
and came to the conclusion that we felt rather frustrated with this year so came up with the concept of having a character whom gets angry as time goes on and must take out this rage and 
then hide the resulting bodies. Now with the plan laid down we split out all tasks using Trello and each person got to work. My tasks were to create a system that allow the player to attack, objects to 
take damage, the ability to pick up and hide bodies and set up a basic menu that others could add too later. I quickly finished the menu and then began designing a component based attack/damage system that could be abstracted as much as possible 
so it could be dragged and dropped on any character. I originally worked with the built in unreal component class but realised I would need to change things around as colliders would reset their position on start, I then implemented my planned classes 
and waited until I was able to merge to the main branch and test, though all my work functioned properly on my own branch when the AI characters became involved they sometimes refused to die and would continually try to run away from the 
player when trying to hide their body, so this was temporarily removed and intead the AI actor was simply removed on being hit.
UNIVERSITY
Ukie #RaiseTheGameJam
Fridge Raiders <br><br> 
Skills:<br> - Unreal Engine 4 <br> - C++ Programming <br> - Collaborative work between discplines<br><br>
Brief: GGJ 2019 Theme 'What Home Means To You'<br>
The first Game Jam I've ever Participated in! We created a wave based game where you must defend your fridge from enemies.
 Made in Unreal 4 using both blueprint and C++ in just 48 hours: I Created the pick up and weapon system along with the camera,
and also did a lot of bug fixes for the other two programmers. I learned how to create cinematic cameras in unreal and used them to 
create a background for the start menu.
PERSONAL
Fridge Raiders
Environment Generation Plug-in<br><br> 
Skills: <br> - C# Programming <br> - Unity <br><br>
Brief: A personal project to experiment with Unity plug-ins <br>
A work in progress. An environment generation plugin for Unity that generates a grid map of a set size and populates it with trees, 
tents and a river that paths from one side of the map to the other. The grid size, denisty of trees and amount of rivers (max two) can all be
set in editor.
PERSONAL
Environment Generation
Ludum Dare 47<br><br> 
Skills: <br> - C# Programming <br> - Unity <br><br>
Brief: Ludum Dare 47 theme 'Loop' <br> 
After returning to unity after a long break, I threw myself in with the 47th LD game jam! After initially struggling with trying to come up with an original concept for the theme 'loop' I 
thought about induction loops, that allow hard of hearing people to more easily hear. So going with this concept I modelled a small super market and a few items 
that the player must collect to finish their grocery list and leave. However I wrote a shader that activates when not under and induction loop zone so the player may only see clearly when in that 
zone and must work out where they need to head before leaving it. I also planned on having muffled audio that indicated to the player where to go but didn't have the time or resources to implement it.
PERSONAL
Ludum Dare 47
Flocking In DirectX 11<br><br> 
Skills:<br> - C++ Programming <br> - Visual Studio<br> - DirectX 11 
<br><br>
Brief: A personal project taking a look into flocking<br>
During an optional summer session I created this little flocking AI example that I hope to expand 
upon in future.
PERSONAL
Flocking In DirectX 11
Tilting Trouble <br><br> 
Skills:<br> - C# Programing <br> - Unity <br><br>
Brief: A Personal project experimenting with unity physics<br>
A short physics based unity  game, made in a two hours session. You tilt the board using keyboard controls in order to make the balls reach the end of the map.
PERSONAL
Unity Tilting Game
Wind Waker Verticle Slice<br><br> Skills:<br> - Unreal Engine 4 <br> - C++ Programming <br><br>Before Starting second year I familiarised myself with unreal by creating a vertical slice of Wind Waker. This included making my own camera and player movement system in Unreal 4 using C++, and then choosing select i tems to replicate. <a href = 'https://www.youtube.com/watch?v=eruiO_3Euy4&ab_channel=AngharadHill' style='color:#ffff'/a> Video Link
PERSONAL
Solo Unreal Project
Feed Me <br><br> Skills:<br> - C# Programming <br> - Windows Forms <br> - Visual Studio <br><br>My unique, if not slightly weird LD game. <br>
						  Once again I decided to work in windows forms, creating my own rendering and animation system that then allowed me to create a short tamogotchi like game 
						  with a slightly satanic ending.
PERSONAL
Ludum Dare 46 2020
Hyrule Hack 'n Slash<br><br> Skills:<br> - Unreal Engine 4 <br> - C++ Programming <br><br>Unreal 4 project made as part of a pair, for my part I created a camera controller, combo attack system, mini map, weapon damage, all UIs, and a non-possessed player controller!. Achieved: 100%. <a href = 'https://www.youtube.com/watch?v=rCzqmhe8ARQ&feature=youtu.be&ab_channel=AngharadHill' style='color:#ffff'/a> Video Link
UNIVERSITY
Hyrule Hack 'n Slash
Second Year Physics Assignment<br><br> 
Skills:<br> - C++ programming<br> - DirectX 11<br> - Visual Studio<br><br> 
Brief: Create a physics engine modeling, rigid bodies, mass aggreates, collisions and a variety of forces<br>
Using the Game Physics Engine Development book as a reference, I developed a physics engine built in DirectX 11,
 contains rigid body physics, particle force generator,  mass aggregate particles, a variety of forces 
and collision handling.
Modelled Forces: bouyancy, turbulent drag (with editable coefficients), gravity, springs, laminar flow
Colliders: Axis alligned bounding boxes, bounding sphere
Particle System: particles with a lifecycle that can have varying forces applied to replicate many things, for
example, rain or smoke. Uses the Object Pool design pattern.<br>
Built on from my semester one project: a focus on the rendering side; makes use of phong shading, specular mapping, alpha blending,
and billboarding. Achieved: 89%
<br>Achieved: 93%  <a href='https://www.youtube.com/watch?v=h9O3CVDcuJ8&ab_channel=AngharadHill' style='color:#ffff'/a> Video Link
UNIVERSITY
Physics Engine
Retro Mario<br><br>
Skills:<br>- C++ Programming<br> - Visual Studio<br> - SDL2 <br><br>
Brief: Create a physics ending using SDL2 then use it to build retro Mario <br>
For Games Engine Project two we were tasked with producing a clone of mario using my own engine, 
built uisng SDL2, I replicated the arcade version with two players collecting coins to beat a high score. Then created a solo mode boss 
battle against a familiar villain. 
Programming techniques: file write/read, std, box colliders, basic physics and basic enemy ai
<br>Module mark: 95%
UNIVERSITY
Retro Mario: SDL2 Project
Kraken Krisis<br><br> 
Skills:<br>- Unreal <br> - C++ Programming <br><br>
Brief: GGJ 2020 Theme 'Repair'<br>
6 person team in 48 hrs based on the theme of repair! An unreal project featuring several mini games you must repeatdly complete in order to stop your boat from sinking;
my part was to make the character movement, camera system, ladders,and a skill check based mini game. Unfortunately the game was not fully completed before the deadline
but we do plan on coming back to it and polishing it in future.
PERSONAL
Global Game Jam 2020
Press 'B' to Bark<br><br> 
Skills:<br>- Unity <br> - C# Programming <br><br>
Brief: GGJ 2021 Theme 'Lost & Found'<br> As a part of a four person team we developed a short adventure game about a dog returning home, featuring a reputation system, a trading system and AI.
													  For my part I worked on creating the player controls, camera and animation state machine. My camera was later replaced 
													  the cinemachine camera as it was much more robust, but my player controller logic of having the player's forward direction be 
													  based on that of the camera easily carried over. This was also my first time working with the unity particle system which I 
													  plan on duplicating for my group games project.
													  <br> Link to GGj Page: https://globalgamejam.org/2021/games/press-b-bark-3
PERSONAL
Global Game Jam 2021

Technical Skills




C++ Programing


I've been progamming in C++ since around 2013 but really began focusing and pushing myself since starting University. I am confident in my use of OOP, alonside a variety of design patterns and have taken an advanced C++ course to better my knowledge.



C# Programming


I learned C# as part of one of my university modules and developed an aptitude in using it, since then I have repeatedly used it when producing projects in Unity or messing around with windows forms.



Github


Using Github as my source control has made working with others on projects significantly easier, as well as making it easy to access projects without reliance on physical media.



Unreal Engine


Having now used Unreal for 4 seperate projects and well as experimenting with NVIDIA Flex, I feel I can effectively make use of unreal, C++ and Blueprint



Unity


After using Unity for multiple projects, even experimenting with creating plug-ins, I am now comfortable using Unity and is easily my preferred engine of choice



Visual Studio


I have been using Visual Studio for the past few years as my main IDE. I now feel confident in using both it's profiling and debug tools.



DirectX 11


Using DirectX 11 I have now built two engines focused on rendering and another based in physics and have most recently used it to implement some advanced rendering techniques such as parallax mapping.



DirectX 12


I am currently working with DirectX 12 to produce my FYP and hope to become very familiar with it!

University Modules


Advanced Graphics and Real-Time Rendering

Created a rendering engine that employs mutlpile advanced graphics techinques such as Parallax Mapping, Self Shadowing and Multiple Screen Space Effects in DirectX 11.
(Project mark: 74%)

Low Level Game Programming

Taking a Ray Tracer Framework, Profiling and Optimising it, and then porting to the Linux platform and adding linux specific Features.
(Project mark: 98%)

Final Year Project

I researched and implemented a real-time fluid simulation using smoothed particle hydrodynamics using the DirectX 11 API.
(Provisional mark: 68%)

Group Game Development

Working as part of a team to simulate a studio work setting, we produced a Game Engine as a group then continuing to work together to create a game in said engine.
(No mark given yet)

Further Games and Graphics

I have now completed my own physics engine, which includes a mass aggregate particle system, collision response and rigid body simulation.
(Project mark: 93%)

Artificial Intelligience

In Artifical Intelligience I created a Tank AI that makes use of a fuzzy state machine to control it's steering behaviours, I also implemented the DRS pathfinding algorithm.
(Project mark: 100%)

Technical Games Production

Using Unreal 4 as part of a five person group we created a game inspired by portal, where you must use coloured cubes with different properties to solve puzzles.
(Overall Grade: 88%)

Further Maths and Algorithmics

Learned about dynamic programming to solve problems, quaternions, and O(n) notation. As well as many other concepts.
(Overall Grade: 94% )

Concurrent Network Applications

Using C# and windows forms to create a networked chat client and game. Makes use of TCP, UDP and multi-threading.

Games Engine Creation

A game Engine made in SDL then create a retro mario game in said engine

Fundamentals of Game and Graphical System Development

Creating a 2D SDL game then a 3D game in openGL

Fundamentals of Computing and Mathematics

Learned the fundamentals of mathematics for programming

Github


Let's Get In Touch!