Software Engineer Portfolio

Samuel Wright

Hello! i'm

Samuel Wright

I am a Computer games design and development student based between Cardiff & Bristol.


I have a strong interest in graphics programming and game development but am also very interested in data engineering and machine learning.

Unity Projects
Lunch Hour
Playable prototype available upon request. Source code available upon request.
C# Unity GIT Blender Photoshop Illustrator

Lunch Hour (Unity game)

Lunch hour is a personal project I originally began developing last year. It uses procedurally generation to create levels in which players must organise food items on trays depending on size.

  • Level Generation - The main selling point of this project is the implementation of a binary space partitioning algorithm to procedurally generate food trays by splitting them into sub-sections. This allows for endless levels to be created and played with no need to manually create them. The algorithm I designed and implemented worked well to create levels that were always possible, but always reasonably challenging.

  • Gameplay - Although original designed for mobile, controls are centered currently around mouse inputs. I created a control system that allows the player to "pickup" food items and place them in any section of the current food tray that they can fit in. Food can also be removed from sections and re-placed in different sections.


  • Future Development - I continue to create levels for the game and am in the process of adding further gameplay mechanics and a user data pipeline to ensure the game is able to be released. (most likely on android)
Cyber Spy
Playable prototype available upon request. Source code available upon request.
C# Unity GIT Blender Photoshop Illustrator

Cyber Spy (Unity game)

Cyber spy is a project I created in Unity inspired by the IO interactive game Hitman GO. I decided to create this project to better develop my ability and understanding of writing editor tools and engine development.

  • Level Creation - For this project I built a custom level creation tool for Unity with the hope that designers with little to no coding ability would be able to create fully playable levels to use in the game. The levels editing tool I created generates a tiled space and allows for designers to asign walkable, and non-walkable tiles in addition to empty tiles that are discarded. The tool created operates outside of the games-runtime and allows for created levels to be stored as JSON or individual Unity scenes.

  • Gameplay - The gameplay I created for this project was turnbased, players "click" neighbouring tiles to move their character around with the goal of avoiding enemies and reaching the end of the level.

  • AI - given the structured nature of this gameplay I decided to create a range of NPC components providing varied gameplay. The basic rule of the game is that if the player enters a tile in view of an enemy the have failed and must restart. I implemented a range of different NPC types from static enemies with varying view ranges, roaming enemies that traverse the game tiles and scanning enemies that methodically scan relevant tiles at set intervals.


  • Future Development - I plan on increasing the functionality of the created editor tool to allow for further creativity when generating levels including -> wall placement and prop placement. I also plan on creating more levels using the tool in order to create a full-scale and release ready game.
Rob O'mann
Playable prototype available upon request. Source code available upon request.
C# Unity GIT

Rob O'mann (Unity game)

Rob O'mann is game project I helped develop with a team of 3 peers. The game, designed for mobile devices, lets players draw lines or paths for their robot character to follow and must avoid entering the sight of humans. My role in this project mainly revoloved around designing and building the AI system.

  • Level Creation -

  • AI -


  • Future Development -
C++ Projects
Hydraulic Erosion Simulation and Procedural Terrain Generation
Playable prototype available upon request. Source code available upon request.
C++ GLSL OpenGL GIT

Hydraulic Erosion Simulation and Procedural Terrain Generation (C++ using OpenGL & GLSL)

I built this project to procedurally generate 3D terrains using noise sets and to enhance their visual appeal by using a custom hydraulic erosion algorithm.

The purpose of this project was to analyse the benefits of hydraulic erosion features on synthesised terrain in an effort to create a tool suitable for game developers/designers to use to create realistic and visually pleasing 3D landmasses for their own projects.

  • Procedurl terrain generation - I implemented a noise based procedural generation system for this project whereby vertices on a given terrain are assigned elevations based on the sum of colour values of corresponding pixels on a list of noise images.

  • Erosion - The goal of this project was to implement a reasonably realistic hydraulic erosion algorithm that produced aesthethically pleasing results and enhanced the appeal of basic procedural terrain. The erosion system I designed and developed eroded vertices (reduced elevation) if they were in the path of simulated water. The simulation was used to produce a range of real-world terrain features and is being further developed to allow ease-of-use and the exporting of eroded terrains as OBJ files.

  • Project setup - I developed this project using C++ and the OpenGL api. I have a strong interest in graphics programing and used this project to gain more experience understanding the process of building a graphics related program and to further develop my shader writing abilities and OpenGL knowledge.


  • Future Development - I am pursuing further research into existing erosion algorthms and generative procedural apporachces to terrain synthesis and plan on moving the created algorithm to run on a compute shader with a more "scientificly accurate" fluid simulation.
Animated Textures and Compute Shaders
Playable prototype available upon request. Source code available upon request.
C++ GLSL OpenGL GIT

Animated Textures and Compute Shaders

As a further step in my journey into graphics programnig and shader writing I created a project for the development of animated textures. This project was created as I have a strong interest in technical art and felt pursuing a better understanding of writing GPU code capable of illustrating moving textures would be a beneficial experience. The project mainly revolved around a study into water droplets running down an objects surface and attempting to create a compute shader capable of visualising this.

  • Droplets movement - I created this effect by reducing droplet positions down the face of an objects texture with additional attributes to add realism. One notable feature is psuedo surface tension - This effect gives a reasonably

  • Data Pipeline - Rain particles are created and manipulated on the CPU giving easy access to their attributes, they are then placed inside an SSBO buffer to be accessed on a compute shader where texels are coloured based on their distance to the particles.

  • Project setup - I developed this project using C++ and the OpenGL api. I have a strong interest in graphics programing and used this project to gain more experience understanding the process of building a graphics related program and to further develop my shader writing abilities and OpenGL knowledge.


  • Future Development - Shader writing is something I have found a real interest in, continue to improve the existing rain droplet effect (visually and performance wise) and Creating new animated texture effects.
Entity Component System Engine Design (C++ using OGRE & Bullet)
Playable prototype available upon request. Source code available upon request.
C++ OGRE BULLET Cmake GIT

Entity Component System Engine Design

This project consisted of taking basic game engine infrastructure and altering the code-base to accomodate a more scalable archticture -> ECS (Entity Componenet System)

  • Architecture - I stripped the original code base to leave behind only functional code relating to game objects and replaced long inheritance trees with components. Each object in the game was assigned an entity unique identifier and held a list of components for functionality.

  • Gameplay - This project focused more on understanding game engine architecture so the gameplay was left as a simple berserk clone.


  • Future Development - I plan on extending the component list of this project and defining a more robust architecture to accomodate more complex game mechanics. I also plan on removing OGRE and implementing OpenGL where the lost functionality from OGRE will be replaced with my own work.
Python Projects
Job searcher
Prototype available upon request. Source code available upon request.
Python HTML CSS JavaScript GIT

Job searcher (Reed API & WebScraper)

I created this small project to fetch jobs (based on user input) from the website reed using the reed job searcher API in addition to a custom built webscraper. I wanted this tool to be able to effectively source relevant jobs based on input and to use the recieved data to compare the best locations for specific jobs.

  • Python - I used python to find and package job data in this project. The reed API and the webscraper locate and gather job postings from the site and pacakge them in JSON as text (storing useful metadata such as location and salary). All data comparisons and manipulations are done within the python portion of this project.

  • Visualisation - I used the python library MatPlotLib to visualise data such as average salary by job and city to produce easier to interpret data. I used a simple web approach for taking in user input and returning search results built using simple HTML, CSS and JavaScript.


  • Future Development - I plan on extending the visualisation and data approach to this project by enhancing the user side and building a more robust website (with React.js)that can be hosted and used by real-world-users. I also plan on using ML libraries like tensor flow to train models in job postings to help predict expected salaries for unlisted positions and more.
Thanks!