Twitter logo GitHub logo LinkedIn logo Envelope email icon
Hello 👋 I'm

Anthony,

a software engineer.

Anthony in London

> about

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.

  • Voxel Modelling Tool
  • Voxel Terrain Generation
  • Greedy Meshing
  • Texturing Greedy Mesh using Texture Atlas
  • Screen to World Raycasting
  • Placing Voxel Models at Mouse Position
  • Model Selection / Build Mode GUI

Team

What I learned

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.

Links

GitHub Repo

Features

Semester 1
  • 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.

Links

GitHub Repo

GitHub Repo (Physics)

Features

  • Race Car Controller
  • Radius Collision
  • Two player multiplayer game
  • TCP and UDP Packet Sending and Recieving
  • Client username
  • Profile Picture
  • Message Sending
  • Direct Messaging
  • Image Sending
  • Client List

What I learned

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.

Links

GitHub Repo

Features

  • Character Controller
  • Animation System
  • Saving/Loading custom level to file
  • 2D Axis-Aligned Bounding Box Collision
  • Two types of Enemy
  • Custom Text Renderer

What I learned

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.

Links

GitHub Repo

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.

Features

  • 3D Effect in 2D Framework
  • Character Controller
  • Animations
  • Online Leaderboard (hosted using Dreamlo)
  • Enemy AI

What I learned

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.

Links

GitHub Repo

Features

  • Shooting Mechanics
  • Inventory System
  • Multiple enemy types
  • Boss battle

What I learned

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.

Links

Download link (itch.io)

>>> contact

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!