This commit is contained in:
parent
0be50b6c24
commit
2c37e7fa62
39 changed files with 410 additions and 397 deletions
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: A Unity City Simulation for a Cybersecurity Challenge
|
||||
description: A client-server Unity simulation where REST-controlled traffic lights made mistakes immediately visible through crashes.
|
||||
title: A Unity City Where Bad PLC Code Made Cars Crash
|
||||
description: A REST-controlled traffic-light sim for a cybersecurity event. Bad PLC code showed up as car crashes — the most honest feedback loop I've shipped.
|
||||
date: 2026-05-01
|
||||
projectPeriod: 'July-August 2018'
|
||||
thumbnail:
|
||||
|
|
@ -9,17 +9,17 @@ thumbnail:
|
|||
tags: ['simulation', 'systems']
|
||||
role: Simulation author
|
||||
stack: ['Unity', 'C#', 'REST API', 'Blender']
|
||||
outcome: A visual context for a PLC-focused cybersecurity challenge
|
||||
outcome: Visible consequences for an otherwise abstract PLC challenge
|
||||
audience: technical
|
||||
links: []
|
||||
---
|
||||
|
||||
I simulated a city where car crashes were more frequent than usual.
|
||||
A small city in Unity where the traffic lights were driven by a REST API. Contestants in a PLC cybersecurity event would write control logic; bad logic made cars crash, and they'd watch it happen.
|
||||
|
||||
The state of the traffic lights could be changed through a REST API. Drivers followed the instructions of those lights, so if a mistake was made, collisions appeared in the simulation. There was also support for displaying tweets on a HUD.
|
||||
Three things are worth saying about it:
|
||||
|
||||
The project was the context for a cybersecurity challenge about PLCs. Contestants could see the effect of their work immediately, as crashes.
|
||||
- **Visual feedback was the whole point.** Most security challenges punish wrong answers with a red "incorrect." This one punished them with car wrecks, and people learned faster.
|
||||
- **Server-client, all decisions on the server.** Every agent's behaviour was computed centrally and broadcast. The harder problem wasn't simulation — it was getting the broadcast to be fault-tolerant on the conference Wi-Fi without flooding it.
|
||||
- **Built it solo, including the models and animations in Blender.** Not a flex, just context for why everything's a little janky.
|
||||
|
||||
The architecture was server-client. Every decision of the agents was calculated server-side, and the real challenge was broadcasting those decisions in a fault-tolerant way on minimal bandwidth.
|
||||
|
||||
It was built in Unity with C# as the scripting language. I also made the models and animations in Blender.
|
||||
There was also a HUD overlay for tweets, which felt clever at the time and dated horribly. Skip that part.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue