Project
Defence: Modelling & Simulation and Visualisation

- Defence
- Modelling and Simulation
- Distributed Simulation
- Systems Integration
- Real-Time Visualisation
- GIS and Mapping
- Research and Development
- C / C++
- C# / .NET Framework
- Web Technologies
Eight years spent on one thing: an in-house modelling and simulation capability. I joined as a research and development engineer and left as a senior software engineer, having spent the whole time building it and then improving it once it was in use. It was built inside a defence business, but it wasn't only used for military work. The same capability was applied to civil problems too. The simulation, the integration with other systems and the visualisation all grew up side by side, and each one shaped the other two.
Modelling and Simulation
2007 - 2015
At the heart of it was a distributed modelling and simulation product, driven by a visual programming component and designed from the start for multithreaded, multi-core and multi-processor hardware. It became central to the business's modelling and simulation work, and the team behind it won a company-wide innovation award in 2010.
It modelled military activity at several levels of detail at once. Friendly flanking forces and the hostile resistance they met could sit in the same scenario, whether you were looking at the big picture or zoomed right in. Entities were accurately geo-located, new units could be added to a scenario while it was running, and situational awareness and route planning were built on top, along with a lot more. For customers, that meant one system could be used in several ways: mission planning, training where synthetic units work alongside real ones, scenario testing, and keeping a live picture of a situation. From 2010 it was extended beyond land to cover air and sea, and to model civil authorities as well as military forces. That version was used to build scenarios for asymmetric engagements, offshore raids, incursions and civil disturbance.

Crowd Simulation
The biggest single piece of work in all this was a crowd simulation system, delivered to an international customer as a training environment for CCTV and crowd management. It combined large-scale, highly parallel crowd modelling and control with high-definition visualisation. An operator sat in a virtual control room with 7,500 cameras to choose from and watched a city-sized crowd move around. They could see how the crowd was behaving and respond to the situation as it unfolded, instead of reviewing it afterwards.
What made it unusual was the scale. Similar products at the time handled around a tenth of these numbers. Two things had to work together: a crowd model that still behaved sensibly with half a million people in it, and a renderer fast enough to put that crowd on screen and let you interact with it.
- 2.25M+
- realistic-looking individuals rendered at over 30 frames per second, on a consumer graphics card
- 500,000+
- individuals simulated moving through a complex, dynamic environment, faster than real time
- 7,500
- CCTV cameras in the virtual environment, any of them available to the operator
I worked on both sides of it. I was one of four engineers on the heavily multithreaded core framework, which we took from proof of concept to programme acceptance in a month. I helped design the distributed system the crowd model ran on, which scaled across multi-threaded and multi-core hardware, and then helped my colleagues build it. I also worked on the 3D rendering technology that drew the environment, and designed and built the system's 2D map and 3D environment views.
It won an innovation award of its own in 2012, and in 2014 it was named innovative product of the year by ESTnet, the technology network for Wales, as well as reaching the finals of the Welsh Quality Awards.


Work included:
- Design, development and evolution of a distributed modelling and simulation product, as a member of a small research and development team.
- Architecture and implementation of a scalable, highly parallel crowd simulation and control system.
- Extension of the simulation beyond the land domain into air, sea and civil authority modelling.
- Development of core framework components, and of the applications built on top of them.
- Writing efficient, stable code for multithreaded, multi-core and multi-processor hardware.
Technology Integration
2007 - 2015
A lot of the capability's value came from how easily it could connect to other things: real equipment, other simulations, and software built by other people entirely.
Connected to real military equipment, it created training environments where the equipment was real but the world around it was simulated. Synthetic units worked alongside real ones, and the simulation supplied the background activity and information traffic that makes an exercise feel busy and believable.
The same approach worked for engineering too. It was used to build synthetic environments around laboratory experiments and acceptance tests, so a system under test could be surrounded by a convincing world that didn't actually have to exist. It was also integrated with a commercial off-the-shelf virtual training environment, which made it even more useful for training and running through scenarios.
This meant working with internal and external teams, on requirements that changed as the technology moved on. There was a customer-facing side too: supporting and advising customers in the UK and Europe, and giving demonstrations for bids and proofs of concept.
Work included:
- Integration of the simulation with real military equipment, producing mixed real-and-synthetic training environments.
- Synthetic wrappers around laboratory experiments and acceptance testing environments.
- Integration with a third-party, commercial off-the-shelf virtual training environment.
- Delivery alongside internal and external teams, across a broad and changing range of requirements.
- Customer support, advice and guidance in the UK and in Europe, and customer-facing demonstrations for bid proposals and proof of concept.
Visualisation
Throughout, and my main role from 2012
Visualisation was part of the work for the whole eight years. It meant designing, building and improving the 2D and 3D visualisation components at the core of the capability, written to run efficiently on modern hardware and make full use of the graphics cards available.
Two pieces stand out. One was a fast map data display system. The map is the base layer that everything else is drawn on, so it has to be quick. The other was an in-house 3D graphics engine, built on the graphics technology of the day, which gave the capability a 3D view to go alongside the 2D one.
Underneath both was GIS and mapping work: producing, processing and managing map data for the capability and for other programmes across the business, including custom maps made to order. That used commercial GIS tools, plus an application I wrote to generate optimised map data for the capability. The off-the-shelf tools produced correct data, but not in the shape the capability needed to read it.
Nine years of game development had been nine years of getting a machine to draw a convincing world within a fixed frame budget. Drawing a synthetic environment that looks right and responds in real time is really the same problem, just in a different field.
Work included:
- Design and implementation of the 2D and 3D visualisation components at the core of the capability.
- A fast, efficient map data display system.
- Development of an in-house 3D graphics engine, using current graphics technologies and methods.
- 2D mapping and 3D environment visualisation for the crowd simulation system, including high-definition output.
- GIS and map data production, processing and management, for the capability and for other programmes across the business.
- A custom application generating optimised map data sets, used alongside commercial GIS tooling.


Technologies and tools used included:
- C++, including MFC on Windows
- C# and WPF
- Direct3D and HLSL
- Multithreaded, multi-core and multi-processor architectures
- Microsoft Visual Studio and Subversion
- PHP, JavaScript, HTML, CSS, XML and XSLT
- SQLite and MySQL
- Java and Android, with Eclipse
- ASP and SharePoint
- Maya, Blender and Adobe Photoshop
- Commercial GIS tooling, alongside in-house map data tooling
From 2016 I stayed in the same industry, but the work changed shape. Instead of building a capability inside one organisation, I was delivering applications to clients under contract. That decade has its own page.
This was full-time employment, not client work, and the organisations behind it are former employers. They aren't named here by choice, not because of any obligation, as nothing described on this page is classified or otherwise restricted. Nothing here is a statement on their behalf or an endorsement from them.
These roles also appear on the career timeline.