Crosshair Designer, Garry’s Mod (Lua), 2016-2023

This is my second oldest project on the page, and my largest solo project outside of work. The UI has not changed much visually, but the code behind it has been changed almost completely over the years. One of the problems it use to have was that the menu was a fixed size, meaning that if you were running 720p, then part of the menu would be hidden. Now the menu scales to all resolutions and aspect ratios whilst maintaining a similar look without becoming squished on 4:3 vs 16:9. Another problem it used to have was not being able to hide the crosshair when the player aims down their sights with certain weapon packs. However, now it’s fairly modular so it’s easy to drop in support for different weapon packs to hide the crosshair when needed, or even the crosshair associated with the weapon pack if the user desires. Also, the menu and console commands for changing values are all generated at runtime using a config.
Create a customised crosshair by adjusting all sorts of sliders. Save different configurations and copy them to your clipboard to share with friends.
Steam Workshop: https://steamcommunity.com/sharedfiles/filedetails/?id=590788321
GitHub: https://github.com/zakarybk/crosshair_designer
The Last Nomads, Unreal Engine 4 (Blueprints, C++), Falmouth University 2019-2020

Winner of the Bravery award during the Falmouth Games Academy online EXPO 2020!
A single player, top down view, survival strategy game where your only means of survival is to keep moving. Build your camp and uncover the stories of a scorched world as you navigate The Last Nomads across a barren landscape. Work your way from oasis to oasis in search of an escape from the deadly sandstorm.
I was a generalist programmer for this game. I worked on implementing systems such as skills, traits, inventory, UI and level saving/loading, I also helped with Git issues (mostly due to Git LFS) and was the scrum master for two sprints.
I was also responsible for the CI/CD infrastructure, which built the game with Jenkins and used rsync to upload an executable outside the University network so that it could be downloaded elsewhere.
There were two main programmers on the team. I worked on the fundamentals of building and the time system, and they focused on AI and the interactions with buildings and resource gathering.
Our third programmer (primarily a designer) worked on the story interactions within the game including quests and events, when they weren’t designing the game.
We had to all work closely together to make our systems work seamlessly with each other, and keep everyone in the known when our changes could affect others. Please see the linked websites below for more information about the game and team.
The linked blog includes posts by me on the Jenkins setup, and unit tests to verify our resource systems.
Itch.IO: https://frog-in-a-jar.itch.io/thelastnomads
Blog: https://froginajar.games/
Recreant, Unity (C#), Falmouth University 2018-2019

Recreant is a game where you play as a young woman who is trying to get to the bottom of a horrifying world where one organisation controls everyone. Learn about her life and how the world got into this mess.
My role in this game was focused around the AI. The image below shows our waypoint system which the AI would follow. The blue lines on the left and the single red line on the right represent two individual paths for the AI to follow. Where as the pink line in the middle is the connecting path, which allowed the AI to switch patrols if they heard noises for example.



The AI itself runs on a behaviour tree which uses a custom Unity editor component which I created especially for this game.

Garry’s Mod 3D2D Textscreens, 2017

3D2D Textscreens is a popular addon for Garry’s Mod with over 9000 ratings, and over 1.2 million subscribers as of writing. It allows users to spawn in text into the world for other players to see. In 2017 I submitted some changes to the open source project, which added in font selection and big performance optimisations.
One of the ways I improved performance was to only draw one side of the screen where previously both sides were always drawn which resulted in a draw call with hidden output. For this I used the dot product to work out if the player is looking at the front or back of the text screen. Using FProfiler I recorded a decrease in call time from 1.16ms to 0.72ms average.
When deciding whether the text screen is within viewing distance, I replaced the drawing range check to exclude an expensive square root call, and instead compare against a multiplied version of the maximum distance.
I investigated all of the functions which were called every frame and found that surface.DrawText had a lot of overhead and could be simplified with a surface.DrawText call and some initial setup. This reduced the average call time from 0.047 to 0.028. These numbers differ from the averages above as different text screens were used. More details can be found in the linked pull requests.
Initial changes https://github.com/Cherry/3D2D-Textscreens/pull/30
Only draw one side, using dot product https://github.com/Cherry/3D2D-Textscreens/pull/37
Pulling out code https://github.com/Cherry/3D2D-Textscreens/pull/38
On Steam https://steamcommunity.com/sharedfiles/filedetails/?id=109643223
Vend-etta, Unity (C#, Android), Global Game Jam 2020
Vend-etta is a game about “repairing” a vending machine, the old fashioned way. You must charge up your players leg and kick your stuck treat free from the broken vending machine. Staff however, can hear this and if you are seen kicking the machine you lose your treats and are banned from using it.
https://globalgamejam.org/2020/games/vend-etta-2
Keeping it together, Unity (C#), Global Game Jam 2019
Defend your home from incoming comets by drawing barriers around it, but be careful to not run out of energy!
https://globalgamejam.org/2019/games/keeping-it-together
Multi-user Dungeon, Python, Falmouth University 2019
GitHub: https://github.com/zakarybk/comp260-server/
Phonophobia, Unreal Engine 4, Falmouth University 2017-2018
Phonophobia is a game about sound. You are in a haunted house and there’s a monster lurking. Be quiet as every move you make alerts the monster to your position. Find the runes and place them into a circle to banish the monster and free yourself.
Mecha Melee : Rome Edition, Unreal Engine 4, Global Game Jam 2018
Become a gladiator of the future and FIGHT FOR YOUR LIFE!
https://globalgamejam.org/2018/games/mecha-melee-rome-edition
Permanent SWEPs, Garry’s Mod (Lua), 2017-2019

Allow specific players to spawn with weapons instead of having to spawn them manually. Can be used for groups such as V.I.P to make them happy.
This is in the middle of a re-write since the way it handled persistent data has now become deprecated. The re-write is currently functional and a big improvement over the original in code modularity. There are three different groups where weapons can be assigned including players and their rank on the server. These were all essentially duplicated logic minus a few things, so now they share a common interface and are in separate files, allowing for more variants to be added in future with little hassle. Although, the menu still needs to be updated to support this as I’ve only been refactoring the backend.
Walk/Drive on Water!, Garry’s Mod (Lua), 2016
Players can now pretend to be a non-fictional character who walks on water and happens to be even cooler than that non-fictional character because they can ride a tricycle over water!
Above is a video of the prototyping stage where I added in some visual aids to help debug. It calculates each corner of the vehicle dynamically based off of the OBB, min/max, and then traces from the lowest corner to see if it’s touching water and spawns an invisible platform below if that’s the case. It has been tweaked to work better since the above video.
Steam Workshop: https://steamcommunity.com/sharedfiles/filedetails/?id=826359016
GitHub: https://github.com/zakarybk/Walk-Drive-on-Water
FPS Booster!, Garry’s Mod (Lua), 2015-2019

Are you having problems with low frame rate in Garry’s Mod? This might be the mod for you! Choose from one of two presets to lower your graphics quality to the Minecraft era or experiment and create your own configs.
In this addon I experimented with the idea of allowing users to easily create presets for settings which they can send to friends or load when they start the game if the settings being changed are temporary. For this I chose to use the text file format with custom headers such as [autorun]. I also experimented with creating a fast system for sorting through the 35k console commands for the typing suggestion system. I ended up loading them into an SQLite database and using the LIKE clause to fetch commands and then order them by comparing the position of characters and number of each character.
Steam Workshop: https://steamcommunity.com/sharedfiles/filedetails/?id=567700210
GitHub: https://github.com/zakarybk/fpsbooster