C# and Unity Developer.
Experienced in Azure and AWS Services.
![title divider](images/divider.jpg)
![underline](images/divider.jpg)
Simple Credential System (2021) - Python
![](images/simplecredentialsystem.jpg)
A credential storage and checking system (with user permissions) which contains a room area calculator. User menu options vary depending on current user credentials, and program loops until user specifies to exit. Created for a task set during Python training with AWS re/Start, where I was given 3 days to create an area calculator system that could programmatically change the contents of a file. I used the opportunity to test a user login system that could read from, and write to, txt files in a different directory. Credential Checker and Data Manager modules perform error handling and ensure all input and integral references, including directories, variable types, and credential formats, are valid.
Modular Gameplay Builder (2019) - C#, Unity
![](images/modulargameplaybuilder.jpg)
Starting in 2018 and continuing into 2019, this project was created to build on a concept for a modular gameplay builder. Using a state machine behaviour model, virtual base classes were defined that can be overridden by subclasses. The logic system was split into Conditions and Functions, which are applied to a State. These could then be read by a Motor (using Modules for additional functionality like variable declaration, raycasting, collision detection etc). With this setup, any new Condition or Function behaviour can be read by the Motor, as its base class is used as the input type. Instead of using scripts attached to an object as a component, behaviour was split into scriptable objects; YAML files that store settings specific to that instance of the behaviour. For example, the same ApplyForce function might be used for acceleration or for gravity. Creating two scriptable objects referencing the same function and storing different, user-defined variable contents in each allows for reusing code and creating complex behaviour quickly by dragging them onto States, in any order, using the Unity editor. This project is explained in more detail on GitHub.
Modular Accelerometer Control (2017) - C#, Unity
![](images/modularaccelerometer.jpg)
Started as a refactoring of an earlier Accelerometer Control project, and wanting to practise a more modular design, this project aimed to split systems up into more specialized components. A Physics Controller script was built to handle object forces, with customization options for gravity, input and rotation, along with "arcade" styled physics that apply movement calculations directly to the object transform, bypassing Unity's rigidbody forces system. The project scope then expanded to focus on building specific, focused behaviour scripts, and allowing them to be attached to an object that contains the corresponding controller type. These scripts automatically reference the controller and apply the desired behaviour, such as setting orientation, gravity direction, or performing ground detection using raycasts. This means that gameplay can be built for each object using these prebuilt behaviour scripts coupled with their respective controller, all through the Unity editor.
3D Physics Platformer (2017) - C#, Unity
![](images/earlyphysicsplatformer.jpg)
Starting in 2016 and continuing into 2017, I worked on a 3D platformer in Unity based on the physics driven gameplay found in the Sonic the Hedgehog series of games; something I've always wanted to make, and a driving factor in learning Unity. Gaining the required skills in vector math, trigonometry, and quaternions was the largest hurdle in this project, as these were things I had very limited knowledge of going in, and demanded a lot of learning. Contains GameController, PlayerController, and CameraController scripts to handle main behaviour, with auxiliary scripts like MeshController and InputManager to handle additional behaviour. This was the start of understanding the downsides of large scripts with self-contained systems, and the benefit of dedicated individual scripts with specific purposes that work together to form the larger system. More info on this project can be found on GitHub.
Accelerometer Control (2017) - C#, Unity
![](images/accelerometer.jpg)
Android project utilizing the accelerometer as input to manipulate the scene. Controller scripts for the Game, Camera and Gravity manage their respective tasks. The Game Controller handles player orientation and applying forces such as gravity and wall friction (detected using Unity's collision events). Using the Input Manager through Unity's scripting API, the accelerometer can be read as X and Y inputs. This was then combined into a Vector3. Feeding this vector into Gravity and Camera controllers, which contain behaviour utilizing it, allows for customizable tools that control the gravity direction and camera orientation based on phone rotation. A seperate mode for regular input is included, allowing a device with no accelerometer to control the scene.
Multiplayer Scaling System (2016) - C#, Unity
![](images/shooter.jpg)
One of the earliest examples of code I've written, this project was created after following Unity learning materials to create an arcade-style space shooter. Wanting to take the project much further than the materials covered, I added multiple systems to handle functionality such as; health management, adjustable weapon attributes, drop-in/drop-out multiplayer, difficulty/reward scaling (based on player amount), 'even rewards' system that equally distributes between players, and an object pooling system. More detail on these functionalities can be found on GitHub.