Back to selected work
Geospatial · Simulation · In development

Real cities, rendered as holograms.

A hybrid C# + React/TypeScript suite that ingests OpenStreetMap and elevation data, transforms it through WGS84-to-Cartesian math, and renders the result as a translucent, procedurally generated urban blueprint inside a AAA simulation engine. Standalone desktop generator and in-game mod share a single high-performance math core.

Holographic GIS blueprint suite

illustrative product mockup · Boston, MA imported via OSM Overpass

The challenge

High-performance rendering of thousands of ghost buildings — without breaking the host simulation.

Cities: Skylines 2 runs entirely on Unity's Data-Oriented Tech Stack with a hybrid HDRP rendering pipeline. Naively instantiating thousands of transparent buildings would explode draw calls and halt the simulation. The blueprint suite uses MaterialPropertyOverride at the GPU-instance level so the BatchRendererGroup still combines ghosts into single instanced draw calls — 11,000+ ghost buildings, one draw call.

A shared Burst-compiled math core handles the WGS84-to-Cartesian projection for hundreds of thousands of OSM nodes in milliseconds, generating both the in-game ghost overlay and a Colossal-format heightmap the player can import directly.

Architectural commitments

Civil engineering inside a sandbox.

Road hierarchy enforcement

Imported OSM line strings are upgraded or downgraded to maintain a valid Highway / Arterial / Collector / Local hierarchy. No local roads spliced into freeways.

Zoning intelligence with buffers

Industrial pollution and noise data from the prefab system are used to generate spatial buffers between heavy industry and residential zones — automatically.

Weighted theming engine

Architectural themes (North American / European / mixed) blend via a deterministic, coordinate-seeded weighted distribution so blueprints regenerate identically across reloads.

Ghost lifecycle via spatial hash

When the player builds over a blueprint coordinate, a DOTS system disables the ghost entity. Bulldoze it, and the ghost reappears — no destruction, just visibility toggling.

The stack

One math core, two delivery targets.

Shared core
  • .NET 9 / C#
  • Burst compiler
  • IJobParallelFor
  • WGS84 ellipsoid math
In-game mod
  • Unity DOTS / ECS
  • HDRP hybrid pipeline
  • Cohtml / React UI
  • MaterialPropertyOverride
Desktop generator
  • Photino.NET
  • React + TypeScript
  • pnpm monorepo
  • .ccmap heightmap export

Need GIS data fused with real-time visualization?

The geospatial framework underneath this project transfers cleanly to urban planning, environmental simulation, and digital-twin work.

Start the conversation