Hello! My name is Anthony. I'm currently a software engineer at Unity, and a Staffordshire University, BSc Computer Games Programming graduate.
I currently work on static analysis tooling for the Unity Editor and Runtimes, the technologies currently used in my day-to-day work are C++, C#, Python, Kubernetes, Docker, and Looker Studio. At university I specialised in using C++ to create games and game engines with DirectX, OpenGL and SDL. Other modules covered using C# for multithreaded/task-based applications and networked applications. I have a keen interest in Graphics and Engine programming.
Outside of my work, I also enjoy cooking, exercising, listening to music, and playing video games.
>> portfolio
This project was developed using DirectX11 and C++. ImGui was used for the GUI library and DirectXTK was used for the initial codebase (window handling, etc), as well as for the helper libraries included such as SimpleMath. A 15,000 word report was written alongside the development of the artefact which researched the history of rendering techniques, as well as features of ray marching. The report then analysed different options for the direction of this project followed by the decided design of the project, how it will be planned and how the project will be managed. The report then describes the implementation process of the research followed by a critical evaluation.
For testing this project, a real cornell box was built which allowed for a picture to be taken from inside the cornell box which is then recreated within the renderer in order to compare the results and determine where the renderer performs well and where the renderer requires
Video
The following video is a technical overview of the project's features.
Links
Download links and source code will be provided once the work as been graded :)
Features
VR shooting
Procedural level generation (instatiating pre-made blocks from pool)
Enemy AI
Various weapon types with different firing modes (e.g. Full & Semi Auto, Shotgun, Grenade launcher)
Various enemy types and appearances
Virtual PC for main menu
Music-reactive skybox
Steamworks integration
Online leaderboard system (via Steamworks)
Steam achievements and player stats tracking
What I learned
Street Dreams was the first game I released on Steam, so the entire process taught me a lot about how much goes into a game release, even a small game like this. Toward the end of the game's development, bug fixing was the task I spent most of my time on, as I did not want to sell something I was unhappy with, so a lot of time was spent testing and asking friends to test and report any bugs found. I also learned during the process to manage the scope of the project, which was important (and difficult to stick to when new ideas crop up) when a defined deadline needs to be met, which, in my case, was the beginning of the university year.
Links
Features
These are the features implemented by me, all features by other team members can be found by clicking here.
Working with 5 other people taught me a lot about working in a team and how important project management is. This was the biggest team I had worked with, and without constant communication, team meetings and updating our Trello board, we wouldn't have made nearly as much progress. We did encounter a few problems where people were waiting for other features to be finished before they could finish their own features, so in the future I think planning ahead and knowing which features to complete first in order to counter that would be useful.
With a larger team relying on my code, it also forced me to think about and plan the structure and readability of the code, which I hadn't necessarily had to do before. This lead to me writing much more cleaner and extensible code than I previously have in solo projects.
Hierarchical Scene Graph / Loading Scene from JSON file
Water Shader
Diffuse, Ambient and Specular Lighting
Specular and Normal mapping
Texturing
Ship Controller
Ship Bouyancy (shader visual effect)
First and Third person cameras
Skybox
Fog
Semester 2
Velocity & Acceleration
Gravity
Friction
Angular Velocity & Acceleration using Quaternions, Inertia and Torque (Rigidbody)
Narrow Phase Collision Detection (AABB vs AABB, AABB vs Sphere, Sphere vs Sphere)
Particle System
What I learned
The development of this application introduced me to using a programmable pipeline for 3D rendering (had previously only used Fixed Function). It was my first experience using DirectX, which was useful as I had only used OpenGL previously. I learned to use HLSL for writing shaders, which also taught me about how lighting is applied to objects and how image effects such as fog are achieved. Lastly, this improved my C++ and general programming skills, and the original codebase was refactored throughout the development to keep the code clean and maintainable.
Developing this application taught me about using C# sockets, networking and using threads for concurrency. I also learned about using MonoGame to create and render a game, and learned how to use Forms to create an application with GUI.
This game taught me about using unfamiliar frameworks (SDL) and taught me about general game mechanics, such as collision detection, creating a character controller that feels good to use, and saving/loading data to a file. Creating the level editor allowed me to gain experience in tools development.
It also helped me improve my C++ and general programming skills.
The gameplay is an infinite wave-base game, where slimes spawn randomly, the objective is to survive as long as possible and reach the highest score, which is then uploaded to an online leaderboard to compare with others.
Developing this game taught me about using unfamiliar frameworks (SDL, libcurl), 2D mathematics and other mechanics such as collision detection and game states. I also gained experience using C++ through this project, and learned to keep code clean.
This game gave me experience working in a group, and specifically experience working in a remote group. It also gave me experience working a professional composer and artist.
I gained valuable project management experience throughout the development of Reclaim Earth, I brought together all of the individual assets into the final project and implemented them with the mechanics.
If you'd like to contact me regarding my work, or even just to say Hello, feel free to also use the email to the right or any of the social links at the top of the page. Cheers!