---
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.
date: 2026-05-01
projectPeriod: 'July-August 2018'
thumbnail:
  src: ./_assets/city-simulation.jpg
  alt: Screenshot of a Unity traffic simulation.
tags: ['simulation', 'systems']
selected: false
project: city-simulation
role: Simulation author
stack: ['Unity', 'C#', 'REST API', 'Blender']
outcome: A visual context for a PLC-focused cybersecurity challenge
audience: technical
links: []
---

I simulated a city where car crashes were more frequent than usual.

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.

The project was created as the context for a cybersecurity challenge about PLCs. With the help of this program, contestants could instantly see the effect of their work.

An exciting aspect of the project was building it with a server-client architecture. Every decision of the agents was calculated server-side. The real challenge was broadcasting these decisions in a fault-tolerant way using minimal bandwidth.

It was made with Unity using C# as the scripting language. I also made the models and animations in Blender.
