Game development projects

Following the end of my degree, I partnered with two other enthusiastic course-mates to start work on a game project. We ended up getting in touch with the owner of 2 local escape rooms who commissioned us to create an app to be used as an integral part of one of the rooms he would be running.

The app has been tested by volunteers and following feedback we released the final version. The owner of the business, Matt, was very pleased - saying at one point during development that our product had more than surpassed his expectations.

1 / 9
Messaging system that allows the game master to send clues to the players
2 / 9
Combination puzzle cube that unlocks the security camera footage
3 / 9
Security camera footage video
4 / 9
Audio scanner will detect when a specified song or audio file is playing via the microphone and activate the laser grid display
5 / 9
Laser grid display shows the players the order and timing of the lasers being activated in the room
6 / 9
The radio is an optional feature where players can discover frequencies in the room and tune into radio stations
7 / 9
Transmitter number keypad
8 / 9
Transmitter keyword audio scanner detected what is being said and if the player reads aloud the correct keyword triggers the evacuation procedure.
9 / 9
Evacuation screen


More recently, I have been working on a new game project. Currently in the prototyping phase, this will be a top-down 3D car chase game where the player is a getaway driver and must escape the police through a small open world. The focus will be on a dynamic AI system (similar to the AI director in the Left 4 Dead series) which will control the flow of chases to tamper with the intensity to keep players engaged.

The below is a screenshot of the test environment we're currently using in our prototype to test car physics, AI and answer a few graphical concerns.

Along with 2 friends I participated in the Brackeys 2021 game jam where the theme was “Stronger together”. After much deliberation we decided on a game where the player has no innate ability to interact with the world, but they have a number of tools with them which can accomplish the necessary tasks to progress through (a sort of puzzle game). These tools if left lying around by themselves for too long will start to wander, so the player must herd the tools into the right places for them to complete their function (which is how we came up with the work in progress title “Wandering tools game”).

After some thinking we decided that the tools could be drones (which explains why they would wander around) and so we settled on a sci-fi theme. The first drone you encounter in the game is a battery cell drone which powers switches it connects with but also provides a much needed source of light. The following drone creates a shield barrier to help protect the player from incoming projectiles, but this barrier drone can also project the barrier on a floor tile to help the player cross gaps.

Ultimately we underestimated how long our idea would take and although we successfully completed a handful of levels with these 2 drones, we would ideally have implemented another 1 or 2 to really instil the idea of the collective benefits as per the theme, and iron out the bugs that limited player progress (notably on the bridge). Despite this we all really enjoyed the experience and agreed that we would try again in the future with the added benefit of this experience.

You can try the first few levels of the game for yourself here.

Degree projects

Throughout the 3 years of my degree my degree I learnt many valuable skills technical and otherwise which have all enabled me to develop professionally and personally. I thoroughly enjoyed the experience as a whole and I am confident that it will assist me to continue in my dream of developing computer games as a full-time career.

My final major project piece was a professional wrestling management simulator and was accompanied by a 10,000 word dissertation on the importance of UI and UX and their role in communicating information to the player in heavily text and stat-based games. Having identified a cult hit game series “Total Extreme Wrestling” as lacking in good HCI practise, I decided to explore possible ways of improving the interfaces of such a game to provide a more accessible experience to new players while maintaining the depth of gameplay that existing players love.

I was very pleased with the outcome of the project, as while the final version of the project was lacking some of the planned gameplay functionality, the key goal of the project was achieved in finding a more intuitive and better laid-out system to display the information in the game to the player.

Download Project here - Please note: The music (Lost Highway - Marvel '83) used in this project was NOT made by me.

Although I found graphics programming the most challenging of all programming units on the course, I did find the outcome of my practical project very rewarding. The brief tasked us to create a game environment to show off our shader writing and mesh generation skills. I created a small area with an AI robot who follows you and some mountain scenery in a “synthwave” aesthetic.

My main focus was the generation of screen effects using the (at the time) new Unity Shader Graph features. I layered a number of effects in the graph editor to create the distortions necessary to simulate an old CRT TV. I also layered a semi-transparent webcam footage render texture on the TV, to simulate the player’s reflection on the screen. I finally added some text with a retro font to the HUD and overlayed an image of a TV set to surround the viewport, completing the effect.

I also created a grid shader using HLSL which tiled the effect across the map and scrolled using a time value.

I created a simple AI robot that follows the player with an evil dynamic shader texture pair of eyes which will transform into a pair of more innocent eyes when in close proximity. This effect was again created using shader graph. The rust of the robot body was created using an HLSL shader which uses a noise mask to interpolate between the rust texture and the paint texture.

The mountains in the background are a dynamically generated mesh which, using some scripting that I wrote, reacts to the music as it’s being played in the scene.

The second sound assignment was not unlike the first, but with more experience under my belt I was keen to push myself to create more interesting interaction with the soundscape. I sought to achieve this by creating physics objects which can be knocked and bashed, and a dynamic soundtrack which responds to player progress with differing instrument tracks and tempo. I again used FMOD as this industry standard tool provides a slightly more comprehensive set of sound manipulation tools than Unity’s default system.

The sample project was a first person shooter project set in a building site with a number of models about the place. I added rigid bodies and physics colliders to some static elements in the scene which allow the player to walk into them and knock them over, along with a script to detect being shot by the gun and created a variety of bullet impact noises for different surfaces (such as metal, wood, sand). I even added a script to make the red barrels start to explode after being hit with enough force, which then cause a chain reaction if in the vicinity of other red barrels. For the aforementioned surfaces found in the scene, I also created a number of footsteps along with a script to reflect the change in player’s walking surface.

This is a sample of the main music loops which play throughout the game. Normally, depending on the player's progress different tracks would be playing together. Also, as the player starts to run out of time (for the last 20 seconds on the timer) the music tempo increases as well as the pitch.

Harry Fletcher · Sound For Games - Assignment 2

The red target dummies reminded me of SUPERHOT (2016), so I created an easter egg where when a key is pressed, all textures apart from the targets turn to a white concrete material, the bullets you shoot are now projectiles with a red trail following them and the game time moves proportionally to player move speed. The music also slows and speeds up proportional to player speed.

I also experimented with a feature where the player's gun firing pattern would be recorded and played back as a sort of echo using a drum kit, but after implementing it discovered it did not work as well as I had hoped, but it was still an enjoyable task nonetheless.

Following a brief introduction to AI in games, I created a stealth game where the player could interact with guard AI to try and sneak past to the level objective. Having studied Alien: Isolation (2014) in the early stages of this unit, I implemented a behaviour tree for the AI guards which performed the various functions of interactivity with the player character.

The player can use audio distractions, use a jamming device on the guard communication radio or simply study AI routes to plan the perfect timing. The music score also reacts to the AI alert level, with the more traditional standard instrument tracks being gradually faded into more siren-like synthesised instruments as the guard alert level rises. The player can throw a rock to create a noise which the guards then investigate.

This was one of the units I enjoyed the most in my course and I spent a considerable amount of time trying to work out how to add various behaviours to the AI and polish aspects of my game including implementing player animations to my rigged model.

For advanced games programming I created a first person parkour game focusing on interesting movement mechanics. These included wall running, double jumping, launch pads etc. The game also features rudimentary AI which will move towards and attack the player within a certain range. I experimented with Unity’s (new at the time) HDRP shader graph to create some unusual graphical effects. Our graphical programming unit was another year away so this was purely out of personal interest.

Creating the game was one of my first experiences in level/world design and while I feel like I made a few mistakes I was fairly pleased with my efforts overall in this regard. The player is steadily introduced to each new concept (e.g. wall running, then hopping between walls mid-run, then doing that multiple times in a single run and so on) before moving on to the next. I also implemented one of my first save systems using Unity’s built-in player prefs, which usually would not be fit for such a purpose but in such a simple demo project where the progress saved is very linear it worked perfectly.

The group project was a frustrating experience, but more so than any other assignment highlighted the importance of good teamwork and communication in group projects, which I feel improved my cooperation skills in all future group projects.

Between the four members of our group, we had to create a game of our choosing from scratch. The idea was slightly too ambitious given that at the beginning of this unit we had no practical experience in Unity (the game engine we were taught and encouraged to use on the course.)

We endeavoured to create a physics based 3D fighting game in a similar vein to gang beasts, but with different selectable characters. Each character was to have unique moves and stats which would change the playstyle possibilities to the player.

The end result was a somewhat playable basic prototype of what we hoped to achieve with 2 selectable characters and a single playable level, but I learnt some important lessons about how teams should be led and cooperate and have not had any similar issues since.

The first of the two sound assignments, the task was to create the audio for a given sample game project. With the theme of a child’s bedroom I decided an array of child-friendly sounds would be most appropriate, including a squeaking and bouncy spring effect for the toy enemies and a music box virtual instrument for the sound track.

The music was composed in a minor key to give the player a feeling of unease, as I felt reflected the setting of a child’s dark bedroom at night well. I composed the melody with all accompanying parts myself, using Cubase Elements 10 to create the different audio tracks required for export into FMOD Studio. FMOD was used for all sound and music mixing on the project.

Harry Fletcher · Twisted Night - Main Theme - Sound Assignment

The pacman project was a demonstrative example of a modern twist update to a classic game (in the advanced games programming unit). In my report I set out three suggestions of possible ways to modernise the original Pac Man.

My first was to transform the perspective from a two-dimensional orthographic projection view, to a three-dimensional perspective projection (which I developed a prototype for as pictured.)

I also suggested a first person perspective which would mean the player could not see enemies through walls, giving the game a very different feel.

Finally I suggested a new multiplayer battle royale style game mode (following recent trends) to pit a number of players together on a single large maze with the screen boundaries shrinking until only the original maze level remains.

The prototype was my first game project completed in unity as part of my degree. I completed all the programming and modelling myself, and utilised Unity’s AI Navmesh for enemy pathfinding.

Thunder in paradise 1994

This was the only practical project in the first year of my degree and was my first 3D modelling project. The brief was to create an animation (12 seconds in 720p) showing a boat getting an engine changed using a crane. The boat specified was from American TV series Thunder in Paradise (1994) and the crane a specific model of Multidocker. I modelled all the assets myself using 3D Studio Max 2018. I used photoshop to create the texture the maps.

The most important lessons I learnt from this project were about time management. Although I was largely pleased with my efforts, I did feel that I could have done a better job if I had spent less time focused on some of the background scenery and a bit more time animating the old engine being removed and the new one replacing it. I was however very pleased with the finished product being the result of my first 3D animation with only a few months’ experience at the time.

Early game development projects

Download ZIP here - This was a small project I worked on as part of my IT Level 3 BTEC. We only had to create a "working prototype" and as such this is very incomplete. I had originally planned to add new enemies and weapon types along with fixing a few bugs. I did however put a lot more effort into this project than many of my fellow course mates at the time, as the complexity requirement was minimal, so many games ended up being essentially pong clones, so I am at least proud that I took the initiative to spend a lot of my spare time to put work into it and make something a bit more unique using the knowledge we gained. It was written in C# using XNA.

Installation instructions: Once the ZIP has downloaded extract the folder to a location of your choice and run the executable (deep.exe)

Controls:

  • - WASD or arrow keys move the player
  • - Space bar shoots in the player's direction
  • - Esc pauses/unpauses the game
  • - WASD and arrow keys navigate the menu and Enter/space confirms menu selection
  • - M mutes the game
  • - R restarts the game on player death

The game is about a man who lives in a house in the snow, who one day ventures upwards. He ends up fighting a variety of different enemies who halt his progress. He must shoot them with his gun to kill them, but they can also harm him! Each time the man is hit by an enemy, he will lose a life (the hearts in the top right corner of the screen.) Lose all 3 and he dies. The objective of the game is to progress as far through the game as possible without dying. Each step the man makes starts to leave trail in the snow. Each enemy will automatically face, fire and move towards the player.

Download executable here - This simple tile matching game was part of my college work. We used windows form applications as part of our event driven programming unit.

Installation instructions: Simply run the .exe file. You will first be asked to enter your name, then when you submit the timer will begin.

Controls:

  • - WASD or arrow keys move the player
  • - Space bar shoots in the player's direction
  • - Esc pauses/unpauses the game
  • - WASD and arrow keys navigate the menu and Enter/space confirms menu selection
  • - M mutes the game
  • - R restarts the game on player death

View project files here - The earliest game project I ever created that I still have access to is this scratch project I created in secondary school. After completing a basic tutorial project, we were then tasked with creating a maze game using the hit detection techniques shown to us. I used the scratch game engine with sprites I made in Microsoft paint for the player and the background.

The project is available to play and view including the drag-and-drop code blocks and sprites at the above link. When the page loads click "See inside".

“Shoot for the moon. Even if you miss, you'll land among the stars.”