← Back to Projects
University

DYNAcity in Unreal Engine

I worked on an Unreal Engine version of DYNAcity that brings Beirut’s building and road geometry into an explorable city world. The project combines a C++ driving plugin, source-based neighbourhood starts, camera controls, and a synthetic traffic preview.

Technologies used

  • Unreal Engine
  • C++
  • Python
  • SUMO

Taking the city beyond the browser

The Unreal version of DYNAcity explores the same city through a different interface. A planner or researcher can inspect the model at street level, move between neighbourhood starts, and view a synthetic mobility preview. The objective is an explorable research environment with traceable source geometry.

DYNAcity’s Unreal Engine city model viewed above Beirut’s streets and buildings
Beirut in the Unreal project. Facade materials are illustrative rather than a photographic reconstruction.

Building a city world from source geometry

The implementation imports Beirut’s building and road geometry into a World Partition map. Python exporters prepare the geometry and companion source indices, while the Unreal integration manages the city world and inspection controls. Batched geometry reduces the number of individual building and road objects the editor has to manage.

Keeping source identity matters as much as rendering the scene. Imported geometry can be traced back to a source area or road instead of becoming an anonymous collection of meshes. Point-cloud previews remain optional and load on demand.

Driving depends on the collision model

A C++ plugin adds an exploration vehicle, camera states, reset controls, and neighbourhood start points. Movement uses a simple steering model with acceleration, braking, reversal, and bounded substeps. It is an arcade exploration model rather than a calibrated drivetrain or suspension simulation.

Street-level view of the DYNAcity Unreal prototype, with modelled facades and road markings
A street-level model view from the Unreal project. The streets remain a prototype representation.

One engineering problem was that visually correct roads were not necessarily usable collision surfaces. The project documentation records thin road geometry disappearing from Unreal’s automatic fallback collision. Retaining the full fallback triangles, rebuilding collision, and reloading the saved map allowed the source starts to be checked against wheel support and chassis clearance.

That repair trades additional collision geometry and memory for more faithful road contact. Passing those placement checks does not establish uninterrupted driving across the entire city.

Showing traffic without claiming a physical traffic twin

The optional SUMO connection draws synthetic traffic near the camera or driver. The simulation and player vehicle remain separate: visible traffic does not imply that simulated cars interact with the player’s physics. Facade materials, street finishes, and some environmental details are illustrative.

What still needs validation

The source includes the project descriptor, integration code, driving controls, and documented runtime checks. Current citywide frame-rate performance, long continuous routes, and some post-recovery editor states still need fresh verification. I would measure those explicitly before presenting the environment as a finished driving simulator.

City geometry: Beirut 001 by Salim al-Kadi and team. Source roads: © OpenStreetMap contributors. The screenshots show modelled geometry, not a photographic reconstruction of present-day Beirut.

Source and verification notes

Tags

ResearchDYNAcityDigital TwinsSimulation

More University projects

AI Workflow DSL overview showing a workflow program beside the lexer, generated LL(1) table, and stack parser

University

Python LP PT

AI Workflow DSL

A Python DSL and table-driven LL(1) parser for multi-agent workflows, with generated grammar docs and source-aware syntax errors.

AUBus connection screen with host and port controls
AUBus login screen with username, password, and Google sign-in Google account picker opened from the AUBus desktop client

University

Python PyQt5 TCP Sockets

AUBus Premium

A PyQt5 carpooling prototype for AUB students, backed by a threaded TCP server, SQLite ride matching, and live driver notifications.

Campus Connect OpenAPI documentation with seven controller groups

University

Java 17 Spring Boot Spring Data JPA

Campus Connect API

A Spring Boot API for university club discovery, event management, registrations, role-aware administration, and notifications.

Explore other projects

DYNAcity’s layered 3D city view looking east across the Beirut River toward Bourj Hammoud

Web

Python FA MG

DYNAcity Web Simulator

A 3D Beirut simulator for exploring street changes, traffic, pedestrian flows, and urban forecasts.