Technical Lead, 3D / VR studio · 2013–2026

13 years at TSC Simulation

TSC Simulation builds operator training simulators and digital twins for the process and energy sectors. Below are pieces from products I worked on there, each with a note of what my part was.

Beyond the gallery

Systems, tools and design

A lot of my work at TSC doesn't show up in a screenshot. Alongside the pieces above, these are contributions I made across the product range.

Core systems
Licensing infrastructure in the 3D products, built on the company's existing licensing protocol
The settings manager the products relied on
The repair manager, designed and built almost from the ground up
The CharacterManager, controlling player and camera movement across output types
The date and time manager
The task system's design, which others in the team later added to
The inventory system, ported into a more modular framework
Architecture
The UserInputManager, taking input without window focus when Unity didn't allow it and feeding it through a generic interface to our scripts
The UserInputReceivers system
An input rank system
A context stack system
Systems for referencing singletons
Encapsulation in C# and Unity through clear contracts and separate assemblies
Shared code through SVN externals: first in bulk for reuse, later split up more selectively
Interaction design
Stealable selection, so collaborating users can take over an item someone else is holding
The interaction handles in Equipment Explorer
Advanced options for developers and advanced users, which I started and largely maintained
The order instructions come in during led exercises
Changing display mode mid-session
Save and load for Highview Power
A landing system for fly mode
Animation and motion
A modular, component-based animation system with decoupled abstractions
Inverse kinematics
Truck wheels and player motion calculated from recent movement
Linkage animations in Oil Pipeline and for Liberty Steel
Build, testing and tooling
Automated performance testing inside the apps, with results graphed in the app and outside it for review
Most of the 3D Jenkins work after its initial setup: scripting, process work, Unity integration, analysis, maintenance, file organisation and performance improvements
Organising SVN so modular systems stay separate
Maintaining SVN and mentoring the team in using it
Scripting in Haskell, AutoIt, Python, C++ and C#
Maths
Root finding
Interpolation
Shaft kinematics, prototyped in Haskell
Graphics
Every end-user facing icon
In-app and button graphics
Marketing materials
Map and 3D model backgrounds for the major emergency management DCS screens
Fire and gas pages for the same simulators
Laser scanning
The scanning methodology for Liberty Steel
Automated overview graphics and fly-throughs in FARO SCENE