Explosive traffic simulation
A low-poly Unity city built for the CrySyS PLC-hacking challenge.
While working at CrySyS1, the cybersecurity research group at my first university, I got the fun job of simulating traffic in a small city. The lab was preparing a hacking challenge targeting PLCs that controlled traffic lights, so a successful attack would cause mayhem on the roads.
I built everything in Unity2. C# scripts controlled the drivers, with driving and self-driving models designed to look realistic, and a REST API exposed the individual traffic lights for remote control. The drivers had to obey the lights unconditionally, tunnel vision and all. That was the point: faulty control logic had to lead to wacky disasters on screen.
The art was on me too, so I ended up watching a bunch of Blender Guru3 tutorials and modelling everything in a low-poly style. Far too much of that time went into trying to get the swing animation right; it wasn’t great, but it looked passable from a distance.
The CTF’s large venue, with screens dotted everywhere, added one final challenge: netcode. The whole simulation ran on a server, with each screen acting as a thin client that extrapolated from the latest state it had received.
- CrySyS: https://www.crysys.hu/↩
- Unity: https://unity.com/↩
- Blender Guru: https://www.youtube.com/@blenderguru↩