A large project encompassing minigames about cybersecurity for Android, web, and arcade.Read more...
i-Patch Pirates was my first shipped title at PlayWest, a games studio operated by UWE Bristol. The game was funded by UWE IT Services and aimed to promote cyber security to students and staff across both UWE campuses. I joined the project around two months before the ship date and helped push it through multiple major milestones and presentations.
My responsibilities for the project were to implement several key new systems such as achievements, tutorials, anti-cheat, and an arcade login. I also worked across the project fixing miscellaneous bugs as they arose, tidying older systems for modular use, and updating the older UI to use animators. As well as this I created the promotional trailer and splash for our WebGL build.
I was also in charge of creating a locker hacking minigame which had players guess part of a player's login code in order to break into that player's locker and steal their gold or buried treasure location. If a buried treasure location was found, it would be marked on the world map and players could explore to find it. Upon finding the treasure location the player had a chance to dig it up by playing a gem matching minigame. The aim of the locker hacking was to encourage players to pick stronger passwords and change them regularly.
Pirates shipped openly to 30k staff and students at UWE Bristol for their Cyber Security Week - available on Android, WebGL, and arcade machines on campus.
Following shipping to UWE, we secured a deal with Bristol Airport, and I was a part of the presentations to trial Pirates within the airport's offices. This trial led to securing funding for a Pirates redesign, focussing on security issues at the airport, for use in staff training, to be launched as a new title. This was also later followed up by multiple other locations, such as Gatwick.Download for Android Play Online
A recreation of Mario Kart within DirectX12 with a fully custom engine pipeline.Read more...
This project was to create an engine framework capable of running a Mario Kart style game, utilising DirectX12. The final engine and Mario Kart based game came together quite nicely over a few months of work.
The main focus of this project was building the engine, so a significant focus was placed on producing reuseable systems rather than bespoke functionality for the Mario Kart project. We created a number of systems for physics, audio, asset management, and more - all of which are non-specific to the Mario Kart game and could allow the engine to be easily repurposed for another title.
The core of the engine backend relies on a toolkit which allows access to most of the engine's core features through a GUI with a range of functionalities for asset importing (models/sounds/images/etc), configuration customisation (fonts/keybinds/cameras/glyphs), and a series of other things. We also embedded some more bespoke features into the engine toolkit, for example, item configurations.
Our asset pipeline was developed around a system I referred to as "asset comps": the idea of importing a series of assets which build up a compilation for a specific use. This "use" was then read-in by the engine itself to provide the assets for a certain entity. For example, a character would have a comp which specified its model, sounds, name, and more. When an asset is assigned to a comp it is tagged - asset tagging became useful to prevent the deletion of in-use assets, and also would be useful for releasing a project and making sure it does not ship with any development (or upcoming) assets.
Levels are created for the engine through Blender, which utilises our own plugin that I developed for placing points in the world representing collision volumes (for lap checkpoints), item boxes, and more. This is a nice graphical way of adding entities within the map without using magic numbers. A level in the engine is built up by one or two models, one model supporting mesh collision, and the other being effectively background scenery. This was implemented later in development as we reached memory caps with larger levels as just one SDKMESH.
The engine utilises the new SDKMESH2 format for PBR materials. All imported models have a bounding box automatically calculated, unless importing as a map, in which case mesh collision data is produced. Mesh collision data is stored in a proprietary file format which is a binary representation of each triangle in the model, which the engine's mesh collision system traverses to calculate collision responses. Another simple propriatary format is utilised for animated materials: these binary files work by storing a number of frames, and the timing intervals between them. The model renderer then applies this information at runtime when rendering each material.
To read a bit more about the engine, check out the repo below, or download the final game and give it a try!Download View Source on GitHub
A game where you play as an AI in control of a lab that's working to replace you.Read more...
Planned Obsolescence was a game created in a group of three with a tangential link to the film Ex Machina. You play as an AI named TIM - the Totally Intelligent Machine - who is in control of a research lab currently working on a project to develop a new AI that supersedes TIM. The aim of the game is to delay the project to replace you so that it is eventually cancelled and you can remain in control.
The game features a full AI system and dynamic gameplay through a randomly selected map from the available map pool, there are also mappable keybinds and varying resolutions, as well as support for three languages.
As well as developing the game itself, I created a toolkit alongside the project which allowed us to produce maps and customise game elements through a friendly UI. The toolkit handled compiling game maps to improve performance of the game at runtime, as well as a few other handy features. As a result of the toolkit's map builder we saw a massive boost in performance, rendering just one map sprite instead of hundreds of individually placed tiles.
I also produced the logo for the game and created the UI, which I'm quite pleased with - it's a nice simple style which reflects the tone of the game well.
While the tool worked with XML, all data required by the game was compiled to JSON files at the map compile time, allowing for the nlohmann JSON library to be used within the game for parsing config files.
We completed the project in a couple of months and the final result came together quite nicely. It was shown to other students and staff in our class through an "expo" day, where it received positive feedback. I took some of the critiques that players had (such as highlighting tiles when clicked, and the need of a better tutorial) and implemented them into the game after the "expo" day.
The game can be downloaded below, with the editing tools available in the GitHub repo. Make some maps!Download View Source on GitHub
A local multiplayer game designed for touchscreen.
A demake of Superhot in the style of an Atari 2600 game.Read more...
Created in a team of four over a few days, this game is a "demake" of Superhot, styled for the Atari 2600. We attempted to recreate the feel of an old console by utilising the correct resolution, colour scheme, sounds, and art.
Our aim with the game was not only to produce it quickly through fast iteration, but to have something that was fun to play and easy to pick up.
The game was intended to use some USB NES controllers we had, however all inputs remap to keyboard - with spacebar and W/A/S/D.Download
A level for a concept game set in Scotland with a Lovecraftian theme.Read more...
Accursed: Khulman's Tale was a project I developed over a couple of weeks given a brief of style, setting and technical requirements. The project had to have a Lovecraftian feel and hit four stages: arrival (in the village), entrance (in a building), descent (into caves), madness (the other place). Any other design, layout, story, and additional style choice was left to my decision.
The levels I created satisfied the brief and allowed the player a range of freedom without being too restrictive. Objectives were clearly pointed and the design was clearly focused towards where the player should head. Level design tricks were used such as valves within the caves (the rockfall) requiring you to continue forwards, and a landmark structure in the form of a radio tower which allows the player to orientate themselves within the island.
Along with the levels and demo I produced a design document which detailed my process of creating the levels from initial concept to design inspiration to finished product. A number of sources were referenced for the design of the island and the "unknown" (other place) including real life locations in Scotland and Somerset, as well as fictional places such as Xen from the fan-made Half-Life title Black Mesa.
The finished demo came out quite nicely in my opinion, with a good set of the required technical features and interactions also specified in the brief (effects, scripted sequences, object pull/push, and more) and an interesting narrative that suits a Lovecraft setting.
The final project can be downloaded from Itch below along with my design documentation!Download View Design Document
A four player networked co-op game with the aim of reaching Mars.Read more...
As a lesson in designing and balancing game mechanics I developed a board game with a group. We worked as a team of five to decide on a theme for the game based on current news events, landing on the current SpaceX/Nasa Mars projects. From there we brainstormed a number of game ideas, eventually landing on the idea of a co-op game that had a win condition of getting to Mars successfully.
After creating the board game, two of our team moved on to create a four player networked version of the game for PC using the framework 'ASGE' for OpenGL. The game featured the core feature set from the board game as well as the networking mechanics you would expect, such as disconnect/reconnect, chat, and lobbies.
To see more about the networked game, check out the links at the bottom of this page, or read on to learn about the process of creating the board game which later became the PC game.
Initially we planned on having a system where players were assigned a number of movement points each turn and they would use those to move around a ship on the board. When moving to a space, they could fix any issues that were outstanding out of a number of issues that were pulled each turn. We quickly realised this complex movement was over complicated and didn't work for the game, so we decided to keep movement, but simplified. Less spaces were on the board to move between and movement points were taken from your dice roll which also add up to give you points to spend to fix issues.
Each turn, a counter representing the spaceship you're moving within is moved on the board and when it reaches Mars, you've won. To do that, you must keep your issues on-board below 5, completing all of them before being able to land on Mars itself. Added throughout the spaces are icons that prompt to you draw an objective card. Objective cards are a mechanic I introduced during our early play tests as there simply wasn't enough to do each turn. The objectives added a mechanic to work against your team in order to recieve personal points that would put you as the overall winner at the end of the game if you had the most.
The objective cards worked well to add another depth to the game outside of its core loop, however during testing we removed the personal points you gained and introduced team rewards that benefit everyone. Keeping track of personal points gained by working against your team didn't suit our USP of a co-op board game designed with team building in mind. Although you still sometimes work against eachother to complete objectives, it is always for the team's benefit.
As part of the project I developed an online card creator for the team to use that allowed anyone to produce effectively "production-ready" cards for the game. This was very valuable as it sped up our workflow massively and allowed us to playtest with final card designs and iterate on the card's contents without re-editing Photoshop documents!
Linked below is the presentation used to show our playtesting changes and final game concept, as well as a link to the card generator. Also below is our group's rule demonstration video.Download View Source on GitHub View Presentation Visit Card Generator
A non-physics recreation of Angry Birds in OpenGL.Read more...
As my second and final year one coding assignment at university I had to create Angry Birds. I wanted my game to be similar in style to the original Angry Birds however all happen within the one window. I started by decompiling the original Angry Birds Flash game to get assets for the pigs and birds.
Eventually I discovered some higher quality assets for these online, however I kept the original blocks from the Flash game (hence the lower quality) as they had all damage states which allowed me to create a block health system.
All character and block entities in-game had a health mechanic. Blocks had varying heath, for example, the glass/ice block would only require two hits to destroy, while the rock block would require four. Blocks also had a number of different styles, which were uniform across all types. These were long rectangle, square, and tall rectangle.
Having three different styles and three different types of block allowed for a good variety of assets in the levels - each with a maximum of four supported destruction states. All of these assets were loaded to objects which could be easily placed within the level via a basic visual level editor tool I built.
Each character also had a number of different visuals, some representative of health, while others representative of state. For example, when you launch a bird from the catapult, it will go cross-eyed! All characters blinked at random intervals during the game to give them extra life. Pig health could easily be told by its current visual, just like in the original Angry Birds game.
I also added the iconic dot trail behind each bird to show its trajectory, along with the equally iconic glove cursor for interacting with the bird in the catapult. Cartoon explosion FX was implemented upon a bird hitting a block or an entity being destroyed, along with FX of score bonuses popping up as required.
A scoreboard was implemented which displayed on the main menu where levels were selected. This is similar to the original Angry Birds game and I quite like how intuitive it is.Download View Source on GitHub
A toolkit for modifying game configurations, AI behaviours, UI, textures, and more.Read more...
An ongoing solo project in my spare time, the Alien: Isolation Mod Tools are a set of tools for modifying a wide range of content across the game Alien: Isolation, from simple game configurations, to AI behaviour trees, and recently textures/UI through reverse engineering of the game's archive formats.
The project has been a great lesson in how AAA titles are constructed from the ground up, as Alien: Isolation itself is built upon a custom engine known as Cathode - the tools for which have never been released publicly. Going in blind like this has been interesting to figure out through trial and error certain methods that were taken to create the game and engine, and over the years of creating these tools I've been lucky enough to have the chance to speak to some of the game's original developers to get first-hand insight into the production of the title.
I've recently been focused on understanding the engine's scripting format, which is the result of a proprietary node-based scripting system developed exclusively for the game. An early version of a tool to edit these scripts is scheduled for release in 2020.
Check out the project on GitHub, where the tools are completely open source. I've recently branched into two repos, with the newer of the two being dedicated to the development of a standalone tool which can explore the game's archive files. I also have a personal private repo where some more experimental work is taking place.Main Editor on GitHub (LegendPlugin) Secondary Editor on GitHub (AlienPAK)
A designer focussed toolkit for producing text adventures with no programming.Read more...
As part of my engine architecture module at university I was tasked with implementing a text adventure in multiple engines. To take this one step further, I also produced a tool alongside these implementations which would allow you to produce the text adventure "script" in a designer-focussed flowchart editor, localise it into a number of languages, and then output your creation to one of three engine implementations: Unity, Unreal and OpenGL.
The tool had a focus on being designer friendly and simple to use, and to highlight that I produced documentation alongside it which explained how to utilise the flowchart interface and also how to use the tools reliably.Download View Source on GitHub
A zombies map for Black Ops 3 faithfully set within the world of Alien: Isolation.Read more...
Alien Isolation Zombies is a custom map for Black Ops 3 which I created in my spare time on and off between September 2016 and September 2018. The aim of the project was to teach myself all about material types, assembling a fun and engaging level, gameplay scripting, and lighting. As the project grew it ended up teaching me even more than that however, as publicity and interacting with the community became quite a big part of the map's success. I created a number of trailers for the map and publicised them around forums on the internet.
The map has five main areas unlocked through the course of playing a linear narrative, helped along by cutscenes and voiceover work taken from the original game and repurposed. I edited cutscenes and audio to fit the story of the Zombies experience which added greatly to the atmosphere of the map and helped to convey the story I was going for. I wanted to keep the narrative close to that of the original game, but with Zombies instead of a Xenomorph.
You're part of a team sent to Sevastopol Station aboard The Torrens following Weylan-Yutani recieving a distress signal from Colonial Marshal Waits. The message asks for immediate help to deal with the reanimation of the station's residents, however your primary objective from the Company is to investigate the status of the station and relay your findings to the Seegson response team. All other considerations secondary... crew expendable.Download on Steam View Screenshots on ArtStation View Source on GitHub Read more...
A project to improve visual and AI quality in Aliens: Colonial Marines.Read more...
"TemplarGFX's ACM Overhaul" was a mod aimed to rework Aliens: Colonial Marines, providing improved graphical quality and AI behvaiour. I created promotional material for the project and helped with playtests of new mod builds. The project was covered in a range of online news outlets including IGN, PC Gamer, Polygon and Kotaku.Visit Website Download on ModDB
A total conversion mod for Jedi Academy adding a range of new features and improvements.Read more...
One of the earliest modding projects I was involved with was Evolution of Combat IV for Jedi Academy. For the mod, I produced an auto-updating launcher and developed the in-game menu system. I was also the "community manager" producing regular development updates in the run-up to release, as well as preview videos and a trailer.Visit Website
A prototype demo for a National Lottery funding bid created for Keep Wales Tidy.Read more...
As part of a 10 week internship during the summer of 2018 I developed a WebGL application for a project known as ARTSTATION which works with Keep Wales Tidy to promote historical wells around Wales. The application was created as a tech demo to show to the Heritage Lottery project in order to secure the funding for the next section of their project. The demo was presented in October 2018, after which the team recieved full funding with highly positive comments about the demo and the potential for future implementation.
I was the sole programmer on the project and was also responsible for setting up and maintaining the network back-end during the development.
The project taught me a lot about working with clients as although I've done a lot of client work before this was by far the most hands-on. Direction was completely driven by the client through weekly meetings and daily email progress reports. In our weekly meetings we would review progress and they would outline what they wanted to be added next. As the client was from an artistic background, this also was a good teaching of managing expectations with technical limitations, especially in a cross-platform WebGL app!
Using THREE.js and an open source library named Potree, I developed an interactive map-based system which allowed users to explore regions of Wales and enter locations of interest to view drone mapped pointcloud data of the well sites and learn more about the history of the location.
Videos recorded by the drone were also placed in these pointcloud environments by parsing the drone's GPS data, allowing for immersive video experiences that mapped to the correct pitch, yaw and position as when they were captured. I created a camera system that tracked these videos through the environment allowing for a connection between the pre-recorded "story" content and the realtime rendered pointcloud data.
A host of the demo can be viewed below - be aware as this was a demo, the art and design is mostly placeholder and was not intended for public use. Other features may also be incomplete or not function as expected. Do not expect fast loading times!Visit Demo
A UX-focussed web app for producing product signage within Homebase stores.Read more...
The "Homebase POS Generator" was a site I made while working at Homebase to overcome the internal process of creating signage for product displays in-store. The process required us to download template signage from the company intranet, adjust the price, title and description manually through PowerPoint (which was not installed on all computers) and then print. As you can imagine, doing this for many items in a day took up a considerable amount of time - so I saw an opportunity for a solution!
In my free time I created a site that required only three to four simple inputs - item code, item name, item description and a previous item price if it was reduced. Sample titles and descriptions were provided to the user through existing data that was pulled from the internal company item database and public website to speed up the process further. Additionally, when the signage was printed, the edited titles and descriptions were stored in a database that was pulled from in future printing of that same item - so without realising it employees were saving time for other people who may print that signage in future! Price was always pulled from the internal database so couldn't be incorrect at the time of printing, as this same system was used for all till points.
Not only was it a smart back-end, the site had a friendly front-end UI and a fluid UX. As a result, it quickly became adoped as the standard process in my store and saved countless hours during the working day. An added unseen bonus was that it unified all signs throughout the store, whereas previously a lot of signs had varying pricing placements due to the less restrictive nature of the PowerPoint templates. This made it easier for shoppers to identify item prices and gave a tidier appearance throughout.
Alongside the desktop version of the site, I also created a mobile interface which allowed staff to scan barcodes on shop floor to add to a "queue" that was accessible on the desktop version to print. This was very useful for printing large amounts of signage and also saved considerable time writing down item codes!
The staff at my store found the tool helpful so it was eventually demonstrated to the regional manager on a visit who promptly implemented it in a number of other stores in the region.
As this project uses a private company API and is still in use internally I can't provide a link to the site, however a library of screenshots can be seen at the links below to give you an idea of the user interface and output it produced.Desktop Screenshots Mobile Screenshots
A cross-platform app for students and staff to track timetables, behaviour, and progress.Read more...
The PCSA ePlanner was a project that I developed in my final years at Priory Community School and into my first year of college. It was a web platform that replaced the paper planners given to students at the school, the idea being that it would not only reduce the yearly costs of buying the paper planners for all students, but that it would increase useage as the students would be more likely to use an app on their phones than a physical binder.
The system allowed multiple levels of access through accounts for students, teachers, leadership team, admin and parents. Students, staff and parents could sign up with their emails through the site, which would then identify which access level to give them. Confirmation emails were then sent to the user and they were taken through an account setup process.
It was important to make sure parents were properly verified before being able to view a student's information, so a process of verification by the student's tutor was set up. Only verified parents could access their child's data, being verified by a permission slip that required the same email on the account to be used.
I created an early proof of concept of the project to present to the leadership team at the school who consequently backed the continuation of it through the full release we carried out. I was the sole developer on the project and worked on it on and off over the span of around three years. This included not only developing the site, but promoting it through advertisments in the school and presentations to staff and students.
The site allowed students to view timetables, behaviour points, improvement feedback (carried out by teachers) and more. It also featured a social system where users could create posts that other users could view and comment on, intended for homework help - of course with a heavy censoring and filtering system!
In the full release, we allowed a full year group (~200 students) to use the platform for a year rather than the paper planner system. It was a resounding success with very positive feedback from students and staff, however the school ultimately decided against the system due to the impact of promoting the use of smartphones in the classroom.
A re-host of the site can be found below, accessable via the login of "DEMO_USER" and "DEMO_PASSWORD". This is a student login so all student features are available to you. The account has already gone through the setup steps.Visit Demo
A regularly restyled site themed towards upcoming Hip-Hop events.Read more...
One of many local organisations I managed websites for, Hub City was a popup Hip Hop / RnB club event in Weston super Mare. I created and maintained their website alongside managing all SEO including adding the event to Google Maps and displaying dates and details in the search results of current events.Visit Website
A promotional video for a cattery in Kewstoke, Weston-super-Mare.Read more...
I was approached by a local cattery to create a promotional video showcasing their facilities in an easily consumable style. I worked with them for just over a week to produce a video that they could use on their Facebook and website.
After releasing the video they saw an increase in business and commented that it was the "best marketing money [they had] ever spent".Watch Video
A promotional video for Voluntary Action North Somerset detailing some client's success stories.Read more...
Voluntary Action North Somerset is a volunteering agency based in Weston super Mare which offers various services to volunteer groups in the local area. I worked with them for six months as part of my Duke of Edinburgh's award to create a video for National Volunteers' Week.Watch Video
A feature length film created to raise money for charity.Read more...
This was a feature-length film that I shot and edited over three months at secondary school, it was a great learning curve for me to find out just how challenging creating a full 45 minute film is - even a super low budget indie one! We premiered the film of an evening at our school and donated all proceeds charity.Watch Film
A video showing clients of an employee at Autotrader with her personal experiences.Read more...
I shot and edited a film for an employee at Autotrader who was nominated for an award at their yearly conference. To do so, I followed her around to a number of clients and interviewed them about their experiences of working with her and Autotrader as a whole. The final film was shown at the awards ceremony and the employee subsequently won.Watch Video