Hi, I'm LewisI am a highly motivated programmer who takes pride in producing efficient and managable code and enjoy working as part of a team towards a common goal. My strong interpersonal skills allow me to explain my views to other team members as well as take onboard feedback. My passion for games and game development have led to the development of my first commercial game project, Galaxy Crash, now available on Steam. In 2020 I expanded my skillset during my Internship as an Engine Support intern at Unity, a position that I returned to in the Console Support team following the completion of my degree.
Skills:
C#, C++ & GML
Unity Engine
Visual Studio & Rider IDE's
Source Control (Git, Mercurial, Perforce)
JIRA, Hack'n'Plan, Trello
FogBugz
GameMaker
Adobe Creative Suite
Thank you for taking the time to review my portfolio.
Rated 705th overall, 104th in Humor and 655th in fun!
Project Overview
Created for Ludum Dare 52
Oh no! It’s the day of the harvest and your have woken up late and you live deep down some winding paths! Whatever will you do!?!?! Jump in a sooped-up Combine Harvester and race down the rally track to reach the harvest on time.Art of Harvest is a Art of Rally inspired rally game where you must drive a combine harvester down the rally track to reach the harvest on-time! Avoid Obstacles, Hit Checkpoints and Race to the fastest time on the Online Leaderboards!
Nominated for Best Group Project & Best Trailer at COMX end of year show
Project Overview
Kurat is a real-time action board game where the Devil challenges a household on their power of friendship, using his favourite board game!
Together you must take on a variety of trials and tribulations, facing the creatures of the mythical Estonian wilderness on the way! These include The Plague Personified, Põhja konn and The Devil's Minions. Make decisions as a team to stay alive and overcome the Devil’s challenges.
During your journey, you must collect weapons and items to increase your chances of defeating the onslaught of enemies. Be careful as the Devil has a few tricks up his sleeve that will leave you cursed and at the mercy of the unforgiving wilderness
Contribution
I was the Lead Progammer for this project and the Project Manager. Our team consisted of 3 programmers and 2 designers Features Implemented:
Player Movement
Player Decisions
Level Spawning/Despawing
Characters (including Stats)
Story System
Items
Inventory
Cards/Decisions dictating gameplay scenarios
Card Procedural Generation
Enemy AI (Wildlife)
Health
Stamina
Player UI
BSP Dungeon Generator
Role:
Solo Programmer & Researcher
Language & Technologies:
C# (Unity)
Date:
May 2022 (Final Year)
Nominated for Innovation and Research Award at COMX end of year show
Project Overview
A practical implementation of Binary Space Partitioning, Diffusion Limited Aggregation and Dykstra Maps to create a procedurally generated dungeon. The application allows the tweaking of the dungeon bounds, cell size, corridors, number of iterations and DLA particle count. This was created as part of my Universtiy Independent Research Project, the report that preceded the creation of this implementation can be read at An Investigation into Methods for Procedural Dungeon Generation for Roguelike Games
Contribution
I completed the entire implementation of this project, including the preceding report that informed my design desisions Features Implemented:
Binary Space Partitoning to divide cells and generate corridors
Diffusion Limited Aggregation to destroy room walls
The goal of this project was to create two tanks that fight eachother, with each tank having it's own AI technique. This project features both Behaviour Trees (Blue Team) and GOAP (Red Team). Throught the project I implemented a number of behaviours for both techiques, including Flee, Flank, Attack and Heal. Additionally both teams feature mutliple tanks which use blackboards to commuicate infomation to eachother, tanks will then respond to this infomation, for example if their teammate has seen an enemy.
I also developed a behaviour tree editor for the project so that I could edit the behaviours quickly and efficiently and understand the behaviours that were taking place as the game played, to aid debugging.
This project received a mark of 100/100 (Faultless)
Contribution
I was the solo contributor to this project and thus implememented all of the AI code as well as creating an Editor for the Behaviour Tree behaviours within the Unity Editor Features Implemented:
I have created an OpenGL engine created from scratch, to demonstrate the full forward rendering pipeline implementing/: Fragment Shaders, Vertex Shaders, Geometry Shaders and Tesselation. The project features movable and fully customizable directional lights, point lights and spotlights with shadows supported for directional lights and spot lights. The application imports major model types (obj, fbx and blend) and uses an object-oriented entity system. A debug utility menu allowing the user to customize the lighting settings and drawing options (VSync, MSAA and Wireframe).
Contribution
I was the solo programmer for this project Features Implemented:
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.
Contribution
I was the solo contributor to this project and thus implememented all of the gameplay and networking code Features Implemented:
Player Movement
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
Date:
May 2020 (2nd Year)
Project Overview
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.
Contribution
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.
Contribution
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
This game was nominated as one of the best Level 4 Projects and was shown at the University end of year show (COMX)
Project Overview
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.)
Contribution
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.
Mechanics Implemented
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
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.
Contribution
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
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.
Project Overview
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.
Contribution
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.
Mechanics Developed
Player Movement
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
Role:
Programmer, Project Management, Marketing, General Assets and Development
Language & Technologies:
GML (Game Maker Language)
Date:
October 2016 - September 2019
I showcased this project at the Insomnia Gaming Expo in both 2018 and 2019 (i63 and i65)
Project Overview
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.
Mechanics Implemented:
Spaceship Movement
Onfoot (top down) movement
Ship/Onfoot AI
Intelligent AI Spawning System
Mission Management System
Cutscene Management
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.)