Sean Menzies

Senior Unreal/C++ Programmer


Project Showcase

Ealond

An indie project on a 4-person team that was a third-person, multiplayer, base-building survival game. I was responsible for combat, AI, networking.


Creature Animation

Player & AI Combat

AI Task 1

AI Task 2


Shoni Island

Leading a 12-person team on an AI-driven, city-building god game inspired by Black & White and the Sims. I was responsible for all areas of programming (AI, systems, gameplay, optimisation), as well as technical animation and technical art. I have mentored several team members in programming and Unreal Engine.

Cinematics

God Hand Movement

God Hand functionality

Camera

AI

Systems


Sachi

Senior role in the social casino industry leading a team of 3 programmers and acting as the principal project coordinator, syncing DevOps, Art, Marketing and Engineering departments in targeted sprints. In addition to gameplay and architectural responsibilities, I also set up a CI/CD pipeline with nightly automation tests, pre-merge AI code reviews and version control management.

Pixel Streaming

Integration and optimisation geared towards a pixel streaming setup from plugin integration, WebRTC communication with front-end and maintenance of online builds.

Networking

Fully responsible for well-designed, bandwidth optimised multiplayer integration both on the Unreal Engine side and Azure virtual machine setup. I wrote scripts to automate uploads, cache server-side logs, forward reports to Slack via webhooks and ensure minimal disruption to player experiences.

Integration

Worked closely with backend engineers to ensure tight integration with our dev and prod databased, writing Unreal plugins to abstract API calls into small helpers. Recently, I have even been maintaining the backend myself ensuring layers of protection remain in place and subject to regular stress testing.

CI/CD

Set up the company's CI/CD pipeline using Horde, designing integration and unit tests as well as pre-merge reports flagging any issues for review before code integration. Integrated testing across the whole tech stack for nightly health reports and optimisation opportunities.

Profiling

As we moved towards native-browser deployment, I was responsible for building device-specific profiles to ensure users from mid-range mobile to high-end desktops could run the game smoothly. Using both Unreal Insights and HUD tools, I heavily optimised texture streaming, LOD, lighting, physics, tick-rates as well as managing CPU overheads on a per-device basis.

Metahumans

Created a metahuman pipeline that merged with our CI/CD and device profiles. Using LODSync components and other arcane tricks, I managed to permit up to 15 metahumans on screen on mobile devices without noticable hitches. I also built a tool to automate retargeting of base animations to our various metahuman characters. Worked very briefly with LiveLink facial animations.

Common UI

Set up common UI including streamlined widget switching via activatable widget stacks, UI-only input configs, styles and reusable/repurposable widget classes.I've also worked with slate and the widget library in cpp to optimise UI and create custom functionality for the team.

Leadership

Set up a mentoring programme for all programmers, created an education channel and held weekly code review meetings where we would discuss best coding practices (KISS, DRY, SOLID) and deep dive into Unreal source.I also led tech meetings with potential clients to explain the tech stack and its affordances with individuals of varying technological expertise.


Code Examples

A one-day bowling game challenge made in Unreal 5.4 and C++. The project was an exercise in writing clean code based on SOLID principles, implementing a logical execution flow and demonstrating strong UI/UX design.The repo includes a README and auto installer batch file for non-programmers.

After seeing my large project suffer from Unreal's out-of-the-box significance manager, I decided to write my own multi-threaded version. It uses pre-allocated containers to reduce memory allocation calls, includes an ignored classes list, runs at modifiable intervals and is fully async. It also harnesses a custom interface to efficiently communicate with its managed objects.

As my project required frequent object searches based on a number of parameters across a large map consisting of thousands of objects, I wrote a custom Octree manager that self-organises when updated. It permits "class buckets" that allows users to access an array of a specific class of objects at 0(1). There are other customisable features such as maximum objects per quadrant and in-built tree-querying.

Non-gaming.Written in native C++ using std, boost and cmake, this project aimed to simulate a multi-threaded system to manage a number of sensors - temperature, movement and sound - and allow users to manage logging protocols and sensory response functionality using a listener-observer design pattern.


Contact