Hello,I am Lewis, a Computer Games Programming student at the University of Gloucestershire. I have also launched a solo space action-adventure game of my own, in September 2019 on Steam.
Over my time so far as a games programmer, I have already acquired a vast set of skills that I used in and outside of studies. Most of these I have learnt through the development process of my first commercial project, which was funded by Kickstarter in May 2017 and Released in September 2019 as well as various student projects, which you can check out in my portfolio.
I have skills in the following areas:
C#, C++ & Python
Visual Studio & Rider IDE's
Source Control (Git, Mercurial, Perforce)
GML (Game Maker Language)
Adobe Creative Suite
Thank you for taking the time to review my portfolio.
This project is a Networked Version of the game bomberman and was created using OpenGL for rendering and Raknet was used for the networking stack. The project uses a authoritative server a dumb client architecture where clients connect and send packets to the server which processes the events in the game world. Up to 6 players can connect to a server and the server owner can set a number of perameters, such as max player and wait timers, as well as the level rotation. Game levels are downloaded from the Server and then are played by the clients. Once a match is completed the clients are prompted to either disconnect or play again.
The project includes an interpolation technique as recomended in the RakNet documentation. This system writes positions that it receives from the server, which dictates the current game state, and interpolates between the time that those messages were sent and the current time to provide the position to the client. This means that if we miss a packet or receive a packet late, we lerp towards a more updated position rather than teleporting. This also means that we don’t need to send a position every frame because we use both time and the position. Dead reckoning is used in addition to this, as inputs from the client are only sent to the server when they change so that if inputs are received late the player simply keeps remaining direction of travel.
I was the solo contributor to this project and thus implememented all of the gameplay and networking code Features Implemented:
Server and Client Connection processing
Server and Client Gameplay Packet Processing
Level loading from file
Level download over network
Server Settings GUI (DearIMGui)
Bomb Placement and Explosion over network
Wall Destruction (Destructable and Non-Destructable Walls)
2Doods is a puzzle game where the player must shift between a traditional 3D first-person perspective and a 2D perspective where the player is walking within the walls of the level, similar to a traditional platformer style of game. This idea opened a number of puzzles that we could create by creating certain elements that can only be completed in 3D and some only in 2D, as well as transferring objects between these two planes of interaction. This was inspired by the book series 'Flat Stanley' and Children's TV show 'Roy', both feature characters that have been 'flattened' and can do things such as slipping through gaps in door frames.
Language & Technologies:
C++, OpenGL, ReactPhysics3D
May 2020 (2nd Year)
For this project I created a Boids Simulation using C++. Boids are an artifical life program which simulate the flocking behaviour of Bird-oid Objects. Boids are an example of emergent behaviour, that is, e complexity of Boids arises from the interaction of individual agents (the boids, in this case) adhering to a set of simple rules. The simple rules that Boids adhear to are:
Separation - steer to avoid crowding local flockmates
Alignment - steer towards the average heading of local flockmates
Cohesion - steer to move towards the average position (center of mass) of local flockmates
For my Project I created a simulation of the flocking of fish. In addition to the flocking behaviours the boids avoid dymanically placed collision objects. The collision detection is handled by the intergration of the ReactPhysics3D libary and rendering with OpenGL.
The project has been implemented to work as an ECS (Entity Component System) framework where the each element of an object is a seperate component (i.e Transform, BoidBrain, Raycast, Collider etc.) in the same way as most popular game engines do.
As the solo programmer of the project I implemented all of the the features present in the simulation Features Implemented:
Intergration of 3rd Party Rendering Libaries (OpenGL, Glad, GLFW, DearIMGui)
I Can't See is a VR experience where the player takes the role of a blind person starting their day. I Can't see was created as a group project for a Universtiy Module 'Experimental Games'. The concept was voted on by the student cohort and lecturers, becoming the most voted project.
We wanted to make the main mechanics focusing on how a blind person would navigate their home. This would be difficult to translate into vr since the primary focus of VR is visuals. We used Scanner Sombre as an inspiration for how the player will navigate the house. The player will be able to see a glimpse of the house every time they create noise, that noise could be throwing an object on the ground, the players footsteps or even using their voice through a microphone. We wanted the mechanics to focus around normal everyday tasks such as brushing your teeth and making coffee.
Developing for VR and epecially a conecpt as unique as ours requires systems not found in traditonal games, you can find our more infomation about how we approached and implemented these systems in a number of blog posts we developed for the project. Additonally we kept a blog on the progress of the development of the game which can be found here.
This game was a group project consisting of 5 members, 3 programmers and 2 designers. I worked on the most the implementations of the background systems, for example VR interactions and Holdable Objects. Mechanics Implemented:
VR Interaction - (e.g. Picking Up Items, Opening Drawers, Turning On/Off Items, Water Taps)
Audio Generation for Dropping Items
Shader Implmentation - Creating Mutiple Effects at once
Shader Implmentation - Creating Effects where objects are dropped
Spacebased is a multiplayer party racing game where players construct their own cars. The game is split up into 2 stages. The first is the construction stage where players are given 4 different part types to construct their cars (Wheels, Car Bodies, Engines and Turbos), each of these parts have 4 different quality options (Poor, Okay, Good, Epic), these qualities cannot be seen by players until parts are fitted to the car. Players have a limited amount of time to put these parts on their car before taking them into the race. The race has the 4 players compete against each other with their different car part qualities influencing different aspects of the car (Handing, Boost, Max Speed, Acceleration etc.)
I was the only programmer in a group of 3 game design students and myself and the project was completed in 5 months. While I did not have to make a large design contribution, I had a significant amount of work to implement the planned features within the given deadlines. I also had to manage all of the asset importing into the unity project as none of my other team members had experience with Unity.
Player Movement (Custom Player Walking (Construction Stage), Custom Driving Mechanics (Race Stage))
Part Fitting on to cars - Converting parts in boxes into data and 3d models for car parts
Part Fitting Minigame
Part Quality System - Part Quality having an effect on car properties
Conveyor Belt System
Custom Laps/Checkpoint/Car Position System
Custom Car Respawn System
Music and Ambient Audio System
Character Selection System
Custom Mutiplayer Xbox Controller System
This game was nominated as one of the best Level 4 Projects and was shown at the University end of year show (COMX)
Android Golf is an android based mini golf game developed for a first-year assignment. The game features 18 levels of increasing complexity with a number of obstacles including water traps, hills/ramps, holes and gates. It also includes scorecards and level transition animations.
I was the only person on this project so managed all aspects of its creation including sourcing and creating assets, all programming and project time management.Mechanics Implemented
Mobile Input, scrolling and button pressing
Golf ball physics, responding to player input of power and direction
No Signal is a game created in 30 hours for the University of Gloucestershire Game Jam 2019. The theme of the jam was 'Waves'. The game takes a unique look at the theme and follows a UFO hunter protagonist with a radio scanner that he uses to track down aliens. This game was created in a team of 3 programmers and 2 designers.
In this project, I implemented the player movement, the radio scanner mechanic, level transitions. I also partly worked on the overall project management roles such as task assignment and asset importing.
Short Range Radio Tracker, a device that beeped at shorter intervals based on the players' distance to a goal item
Long Range Radio Tracker, a "menu" where the player has to tune to a specific frequency to see nodes that they can travel to on the map
Scene Transition System
This Game was nominated in the Top 3 of the UOG Game Jam and was then shown at the end of year show, where it ultimately came 2nd.
This project loads MD2 model files, originaly used in Quake, and decodes them before rendering them in to an OpenGL Framework. The models are loaded with appropriate textures and animations. They can then be naviagated around a maze with A* Pathfinding.
I was the only person on this project so all programing (other than the Open GL framework) were programmed by me. Mechanics Implemented
Language & Technologies:
GML (Game Maker Language)
Super Supermarket Shopping Saga is a game where to objective is to complete someone's shopping. This is an old Ludum Dare Project from 2014, created around the theme of 'One Room'. This is the first game jam that I had participated in and was a challenge in completing a project against a tight deadline. The game requires the player to collect shopping from different isles in a supermarket before taking them to the till, against a time limit and utilises slippery physics to give the game wacky and fun movement system.
Programmer, Project Management, Marketing, General Assets and Development
Language & Technologies:
GML (Game Maker Language)
October 2016 - September 2019
Galaxy Crash is my first commercial release which I have developed independently after successfully kickstarting the project in mid-2017. In this project, I have managed all of the development and have completed all of the programming for the game in GameMaker Studio 2 using the GML programming language. I have also managed contractors for the production of music, sound and art. The game was released in August 2019 on Steam.
Onfoot (top down) movement
Intelligent AI Spawning System
Mission Management System
Multiple Object Interactions (e.g Moving Cargo, Unlockable doors, Dialogue with Story Characters)
Interactive Dialogue System
Ship Management System (i.e managing the current statistics of a players ship, transitioning player into new ships etc.)
Security AI Vision System
I showcased this project at the Insomnia Gaming Expo in both 2018 and 2019 (i63 and i65)