GDC Festival of Gaming
Rigid procedural dependencies cause city-wide failures whenever upstream assets shift, requiring open-world pipelines to loosen placement criteria and validate systems independently so artists can iterate without breaking neighboring districts.
AI-assisted summary of Procedurally Crafting Manhattan for Marvel's Spider-Man — original source. Check the original for full context.
Source published:
Key ideas
- Insomniac Games used an offline procedural generation pipeline targeting 80% usable content to construct Manhattan's 6 km by 3 km playable space for Marvel's Spider-Man with a studio of roughly 250 developers. (5:07)
- The game transitioned from the hexagonal streaming grid used in Sunset Overdrive to a traditional 128-meter square grid better aligned with Manhattan's real-world street grid and verticality. (66:04)
- Procedural dependencies were refactored mid-production from rigid district-by-district locks to modular precondition gates, preventing early vertical-slice demands and minor road tweaks from constantly breaking downstream art assets. (38:08)
- To respect baseline PlayStation 4 hardware limits, the city relied on dynamically lit low-resolution building impostors, keeping at most twelve high-resolution streaming zones in memory simultaneously. (20:53)
Detailed notes
## Background Published on YouTube by GDC Festival of Gaming on April 15, 2019, this presentation features Insomniac Games' Principal Technical Artist David Santiago discussing the development of Marvel's Spider-Man. According to the video description, the talk details the game's open-world pipeline and explains how procedural systems were engineered to manage iterative design and complex inter-system dependencies.
## TL;DR Faced with generating a massive, 6-by-3-kilometer recreation of Manhattan on baseline PlayStation 4 hardware, Insomniac Games implemented an offline procedural pipeline targeting 80% usable content to allow artists and designers to focus on handcrafted polish. The system managed interconnected layers including street layouts, modular building construction, traversal markup, pedestrian behaviors, and dynamic combat encounters. When early production assumptions of building the city district by district collapsed under the demands of vertical slices and cascading dependencies, the team refactored the pipeline to decouple systems, establish validation checks, and allow loose placement criteria. Through clear asset tagging, memory-conscious impostor proxies, and knowing when to let artists hand-edit outputs, the team successfully delivered a dense, interactive open world.
## Atmosphere & style The presentation carries a candid, pragmatic, and technical tone, delivered by a veteran technical artist reflecting openly on production hurdles. Santiago balances architectural diagrams and technical deep dives with self-deprecating humor about developer stress and the terrifying 'domino effect' of pipeline breakdowns. Listening to the talk feels like an intimate, behind-the-scenes post-mortem that contrasts the polished glamour of the game's E3 reveal against the gritty, trial-and-error reality of keeping an ambitious AAA procedural pipeline from collapsing under its own weight.
## Bulletin - [05:07](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=307s) Insomniac Games used an offline procedural generation pipeline targeting 80% usable content to construct Manhattan's 6 km by 3 km playable space for Marvel's Spider-Man with a studio of roughly 250 developers. - [01:06:04](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=3964s) The game transitioned from the hexagonal streaming grid used in Sunset Overdrive to a traditional 128-meter square grid better aligned with Manhattan's real-world street grid and verticality. - [38:08](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=2288s) Procedural dependencies were refactored mid-production from rigid district-by-district locks to modular precondition gates, preventing early vertical-slice demands and minor road tweaks from constantly breaking downstream art assets. - [20:53](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=1253s) To respect baseline PlayStation 4 hardware limits, the city relied on dynamically lit low-resolution building impostors, keeping at most twelve high-resolution streaming zones in memory simultaneously.
## Key takeaways - [05:07](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=307s) The open-world pipeline targeted an 80/20 balance: 80% procedural base generation to allow designers and artists the remaining production time for handcrafted polish and narrative vignettes. - [08:46](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=526s) Road and alley splines formed the root dependency of the entire city, determining sidewalks, driving lanes, seawalls, traversal markup, and building block boundaries. - [08:46](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=526s) The world was partitioned into 128-meter square streaming tiles (A01 to X48), dividing procedural ground meshes into roughly 16 separate models per tile to optimize physics performance. - [30:55](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=1855s) Direct hand-editing of procedural outputs was forbidden; artists and designers were required to make alterations through controllable input parameters or explicit art polylines. - [22:00](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=1320s) Dynamic encounters required strict spatial rules—such as rooftop jetpack crimes needing three 64 m² flat roofs within tight vertical and horizontal thresholds connected to pedestrian navigation meshes. - [23:59](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=1439s) Upstream layout modifications triggered cascading invalidations across as many as nine surrounding streaming tiles, affecting lighting bakes, building footprints, and prop dressing. - [33:38](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=2018s) The original assumption of completing the city in contiguous districts failed when vertical slices, E3 demos, and bespoke missions forced isolated tiles into high polish ahead of schedule. - [38:08](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=2288s) Dependencies were decoupled so that systems like traffic signals and street furniture could generate as soon as local vector conditions were met rather than waiting for district architectural completion. - [41:06](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=2466s) An late-introduced Act 3 overlay system altered world states city-wide, procedurally injecting barricades, garbage, and combat vignettes while shuttering storefronts without breaking bot navigation meshes. - [43:36](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=2616s) Procedural systems were designed with relaxed ballpark rules rather than over-constrained criteria, maximizing valid placement opportunities and letting artists make final manual nudges. - [46:56](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=2816s) Automated validation routines strictly adhered to high-confidence self-healing, deleting or shifting assets only when certain, and otherwise flagging low-confidence spawners as unspawned for human review. - [55:41](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=3341s) Full-world builds were executed overnight using global data caches to avoid live Perforce lock conflicts, requiring about an hour for sparse district layout data and several hours for tile generation. - [01:04:42](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=3882s) Artists maintained direct creative control over aesthetics by hand-painting vertex colors on roads to dictate surface wetness, puddle spawning, and district material responses. - [01:02:25](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=3745s) Irregular 3D traversal points and multi-level traffic nodes, such as Grand Central Terminal's elevated deck and subway underpasses, were preserved through manual spline tracing and protected from procedural overwrites.
## Detailed walkthrough ### [00:02](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=2s) Introduction and the E3 2016 Reveal
David Santiago, Principal Technical Artist at Insomniac Games specializing in procedural systems and pipelines, opens by thanking the studio, welcoming attendees to visit the Insomniac booth, and polling the audience on how many had played the game or seen its open-world content. Reflecting on the origin of the project, Santiago recalls the moment Creative Director Bryan Intihar gathered the studio to announce their next PlayStation 4 title: “I remember the moment I was told you're gonna be working on Spider-Man and I was like, 'What? Why? We're doing Spider-Man? You're kidding!'” Having previously developed procedural ground, building, and markup systems on *Sunset Overdrive*, Santiago was tasked with adapting those techniques to construct Manhattan—a vastly larger real estate footprint.
The announcement set aggressive pillars and production goals across every department. By E3 2016, public rumors had escalated fan expectations, leading to Insomniac's official teaser reveal. The trailer transitioned from an aerial shot of Manhattan down into active street traffic, pedestrians, and hot dog carts before cutting to Spider-Man swinging through the avenues: “The 2016 E3 crowd, they really erupted when we cut to the shot of Spider-Man there and then he started swinging down the city, but now for all of us at Insomniac this was real, and the quality bar—the minimum quality bar—was set.” Insomniac mandated that every demo run in real time on standard PS4 hardware. While their initial plan succeeded in delivering the reveal slice, it was not yet robust enough to handle the production challenges of the two years that followed.
- **Speaker Role:** David Santiago, Principal Technical Artist working on procedural pipelines and systems at Insomniac Games. - **Creative Leadership:** Bryan Intihar served as Creative Director, establishing the game's core pillars across departments. - **Hardware Target:** All open-world demos and assets were strictly developed and evaluated to run real-time on baseline PlayStation 4 hardware.
---
[05:07](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=307s) Scope of Manhattan and the Procedural Mandate
Santiago outlines the sheer physical and structural scale of Marvel's Manhattan. Designed as a playable space measuring roughly 6 kilometers by 3 kilometers, the island encompasses nine distinct districts: Harlem, Upper East Side, Upper West Side, Hell's Kitchen, Midtown, Chinatown, Greenwich, the Financial District, alongside Central Park and the offshore prison facilities of the Raft and Rikers Island. Achieving this level of density with a studio headcount of around 250 developers—who were simultaneously supporting multiple internal projects—made manual placement impossible.
```mermaid flowchart TD accTitle: Marvel's Manhattan World Scale Breakdown accDescr: Structural composition of the game map showing city scale, transportation network, structural architecture, and interactive content layers.
subgraph MapScale["World Footprint"] Bounds["Playable Island Space<br/>(~6 km x 3 km)"] Districts["9 Core Districts + Central Park<br/>+ The Raft & Rikers Island"] Bounds --> Districts end
subgraph Transit["Circulation Network"] Roads["544 Engineered Roads"] Alleys["1,202 Detailed Alleys"] end
subgraph Structures["Built Environment"] Blocks["3,250 Edifice Prefabs<br/>(Block-Level Structures)"] Buildings["8,300+ Distinct Buildings"] Retail["350+ Customizable Storefront Types"] Blocks --> Buildings Blocks --> Retail end
subgraph Content["Gameplay Layer"] Crimes["3,000+ Dynamic Crimes"] Vignettes["3,000+ World Vignettes"] end
Districts --> Transit Transit --> Structures Structures --> Content ```
Because hand-crafting player experiences remains a core studio value, procedural systems were not deployed as real-time runtime generators. Instead, they were authored as robust offline pipeline tools: “The goal for Spider-Man was to procedurally generate an open world early in production to give the designers and artists the rest of the remaining of our production time to polish the game and our target was 80% usable procedural content.” Starting from the ground and building tech established in *Sunset Overdrive*—where structures were blocked out procedurally but ultimately hand-crafted due to their exaggerated, stylized nature—the Spider-Man pipeline required deep automation across four planned pillars: 1. **Ground systems:** Street networks, sidewalks, terrain, curbs, grey spaces, and seawalls. 2. **Edifices and buildings:** Mass placement of structural volumes paired with integrated traversal markup. 3. **Traffic systems:** Algorithmic population paths for vehicles and pedestrian crowds. 4. **World propping:** Broad, automated scattering passes across the entirety of the map.
- **Footprint Dimensions:** Designed play space spanning approximately 6 km × 3 km. - **Infrastructure Inventory:** 544 designated roads, 1,202 alleys (predominantly fictitious to support gameplay traversal), and over 8,300 distinct buildings grouped into 3,250 edifice prefabs. - **Architectural Variation:** Over 350 uniquely customizable storefront configurations. - **Dynamic Content:** Over 3,000 crime setups and more than 3,000 ambient narrative vignettes. - **Efficiency Metric:** The procedural pipeline aimed to generate 80% of open-world content algorithmically, reserving the bulk of production schedules for manual art and design polish.
---
[08:46](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=526s) The Ground System, Modifiers, and Streaming Grid
To display the island efficiently on screen and match widescreen display ratios, Santiago notes that presentation maps orient Manhattan rotated 90 degrees with east pointing up. The entire procedural generation pipeline relies on a strict chain of downstream dependencies, with roads and alleys forming the critical root: “Step one for the ground system are roads and alleys. Roads and alleys define this city: everything is dependent on their placement, size, and lane configuration.” Splines and curves authored in the editor determine not only asphalt driving lanes, but directly compute sidewalk widths, intermediate grey spaces, traversal markup, and the continuous seawall enclosing the island perimeter.
```mermaid flowchart LR accTitle: Ground System Generation and Modifier Pipeline accDescr: Sequential flow showing how road splines generate geometry, receive modifier overrides, and get partitioned into 128-meter streaming tiles.
subgraph Inputs["1. Network Definition"] A["Road & Alley Splines<br/>(Placement, Width, Lanes)"] end
subgraph Modifiers["2. Contextual Overrides"] B["Ground Modifier Zones<br/>(Cuts, Polygons, Deforms)"] C["Design Modifier Zones<br/>(Crimes, Spawns, Bot Nav)"] end
subgraph Output["3. Geometry & Tiling"] D["Generated Streets, Sidewalks,<br/>Grey Spaces & Seawalls"] E["Square Streaming Tiles<br/>(Standard: 128 m x 128 m)"] end
A --> D B --> D C --> D D --> E ```
To prevent uniform procedural generation from overriding specific artistic and gameplay intentions, Insomniac introduced volume-based modifier zones: - **Ground Modifier Zones:** Polygons, bounding curves, or 3D volumes that dynamically cut, deform, reslope, or assign specialized materials to environmental terrain and asphalt. - **Design Modifier Zones:** Spatial volumes that modify design-centric systems, including pedestrian navigation meshes, bot density, traffic behavior, and ambient crime generation.
Rather than authoring the ground as a single, contiguous mesh, the world is sliced into modular, square streaming regions measuring 128 meters on a side. Santiago points out visible double lines within their editor grid diagrams that document the underlying scaling history and regional offsets used during development. This historical boundary tracking allowed automated validation tools to confirm that generated meshes and assets stayed strictly inside their designated streaming footprints. While almost all interior city tiles remained fixed at 128 meters, selected coastal tiles were scaled up to reduce the overall streaming tile count across the water perimeter.
[11:00](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=660s) Tile Structure and the Procedural Ground System
Outlying locations like Rikers Island and the Raft prison do not utilize streaming regions from the perspective of procedural systems because their shipping versions contain no procedural content. The rest of the world is organized around tile IDs that represent discrete map coordinates running from A01 across to X48. Each tile hierarchically contains every zone for that region's open-world content. Tucked away in the far top-right corner of the layout is a lone tile designated X48, which served as Insomniac's dedicated test region throughout the entire production of the game.
The ground itself is generated procedurally, partitioned into roughly 16 models per tile to keep geometry sizes manageable for physics calculations and runtime systems. While the base ground mesh was handled algorithmically, key areas required manual intervention. Central Park’s ground was hand-authored by artists to capture the distinct topography and character of the park within its designated footprint; these manual iterations were subsequently fed back into the procedural pipeline for seamless integration. The ground pipeline also bridges directly into the initial stages of prop placement. This pass establishes lane markings, crosswalks, district-specific road materials, and a lightweight first layer of street-level props—such as manhole covers, streetlights, traffic signals, trash cans, and trees—giving designers immediate collision and visual feedback when playtesting traversal through the city.
- Tile coordinates span from A01 to X48, with tile X48 functioning as the persistent testbed. - Each procedural ground tile is broken into roughly 16 separate models to optimize physics performance. - Remnants of Rikers Island and the Raft appeared in early debug ground meshes before both were completely handcrafted for the final game. - Early tree and prop placement ensured designers had collision obstacles to avoid while swinging during early tests.
---
[12:40](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=760s) The Building Pipeline and Traversal Markup
Buildings were authored by starting from coarse geometric primitives—boxes, cylinders, and polygonal volumes—that defined the building's outline, massing, and floor heights. Once this graybox volume was defined, the procedural building system processed the structure by instancing modular assets from various building kits directly across the exterior faces. Rooftops were handled either by sizing and tiling modular roof pieces to fit the geometry or by automatically generating a custom roof mesh whenever standard modular parts could not cleanly cover the shape. Rooftop mechanical clutter, including HVAC units and classic New York water towers, was also distributed procedurally onto building edifices during this stage.
A critical function of the building pipeline was laying down traversal markup: swing volumes, ledges, and ledge paths that enable Spider-Man's traversal mechanics. Because adjustments to street layouts frequently forced redesigns of surrounding buildings, Insomniac engineered the building tool with a dedicated "recalculate markup only" mode. If an artist heavily hand-modified a building or constructed an edifice entirely from scratch, the system could ingest that custom prefab, evaluate the geometry, and generate an optimized traversal markup network. The system joined contiguous segments together to minimize curve counts and reduce the total number of runtime markup actors. David Santiago noted two related upcoming presentations: Doug Sheahan's talk on building traversal ("Concrete Jungle Gym: Building Traversal in 'Marvel's Spider-Man'") and Ron Kuper's talk on internal tooling ("Editing with Immutable Data").
```mermaid flowchart TD accTitle: Procedural Building and Markup Pipeline accDescr: Pipeline showing how rough volumes turn into completed buildings with traversal markup.
subgraph Geometry["1. Volume & Mesh Setup"] A["Rough Primitives<br>(Boxes, Cylinders, Volumes)"] --> B["Procedural Facade System<br>(Kit Instancing)"] B --> C["Rooftop Generation<br>(Tiled Kits or Custom Mesh)"] C --> D["Edifice Props<br>(HVAC, Water Towers)"] end
subgraph Markup["2. Traversal Markup Integration"] D --> E{"Custom Building<br>or Modified?"} E -->|"Yes"| F["Recalculate Markup<br>Only Mode"] E -->|"No"| G["Standard Procedural<br>Markup Generation"] F --> H["Optimized Markup Network<br>(Merged Curves & Reduced Actors)"] G --> H end ```
---
[14:23](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=863s) Pedestrian Path Networks and Signal Phases
The road network serves as the structural foundation for procedurally generating both pedestrian and vehicular traffic. For pedestrians, the pipeline begins by placing static pedestrian volumes across sidewalk segments. These volumes establish a baseline crowd density, spawning static pedestrians who can subsequently be promoted to dynamic walkers by the simulation system. The system then constructs an interconnected network of sidewalk paths running corner-to-corner along street blocks and linking corner-to-corner across intersections via crosswalks.
Specialized path assets are then integrated into the global walking network: - Subways and bus shelters feature integrated curves requiring pedestrians to route up stairwells and navigate around shelters. - Hand-authored paths through plazas, parks, and civic spaces are stitched in seamlessly; artists simply drew curves that intersected procedural sidewalk nodes.
All integrated paths compile into gameplay-facing pedestrian traffic nodes equipped with linked traffic light phases. Pedestrians obey signal logic: when lights turn green, they walk; when lights change to yellow, they speed up and run across the street; and when lights turn red, they stop. Santiago joked about their real-world behaviors: “well, except sometimes you know, they just stopped.” Visual debug overlays color-coded traffic phases across every node, allowing engineers to verify that pedestrians approaching an intersection correctly chose whether to turn the corner down the sidewalk or cross the street.
---
[16:03](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=963s) Vehicular Road Networks and Lane Rules
Vehicular traffic utilizes a system analogous to pedestrian routing. Streets that lack hand-tuned traffic rules are assigned randomized lane templates matched to the physical width of the street, dictating lane counts, driving directions, and dedicated parking lanes. Crosswalk splines authored during the pedestrian pass serve double-duty as the official vehicle stop lines at intersections.
To populate parked cars, procedural volumes are placed along designated parking lanes. Unlike pedestrian sidewalk volumes, parking volumes must carve out dynamic exclusion zones around fire hydrants, bus stops, alley entrances, and driveway cutouts where parking is prohibited. Between intersections, the system builds directional driving paths, while intersection nodes govern which legal or desirable turns vehicles may execute:
> “And that lane on the left, which is actually the right lane going down—I don't know if it's southeast or whichever way it's going—but they have the choice of turning right into either the lanes or going across the intersection, and the other lane has no choice; they're only allowed in this traffic situation to go straight across the intersection.”
Drivable alleys are linked into the road grid as restricted, limited-use pathways. Complex intersections—such as multi-lane avenues crossing one-way streets—feature multi-phase switching where vehicles in dedicated turning lanes are held until their designated green phase permits turning across traffic lanes.
---
[18:35](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=1115s) Decor, Pedestrian Prefabs, Act 3 Debris, and Puddles
The decor pipeline encompasses street props, sidewalk furniture, decals, and dynamic pedestrian prefabs. The procedural system distributes street-level details like manholes, skid marks, tar strips, and asphalt patches, as well as vertical sidewalk elements including streetlights, hydrants, mailboxes, and trees. Pedestrian prefabs introduce ambient storytelling props with integrated actors—such as subway stairs, bus stops, hot dog carts, cab hailers, and sign spinners. When crimes or ambient encounters break out, the system overrides their idling behaviors:
> “So say people are waiting at a hot dog cart, they would wait there, and then they could be promoted to walk along the along the path or flee from a crime if necessary, so whenever there was an encounter, the pedestrians would go into a flee mode.”
Procedural rules also solved the environmental challenges of Act 3, where the city descends into chaos. The environment required dense layers of trash, barricades, and scattered debris without obstructing the navigation meshes and clearance volumes needed by fleeing pedestrians, moving vehicles, combat encounters, ambient vignettes, and narrative missions.
Santiago also addressed the community's fixation on wet surfaces with dry humor: “and I know there has been much interest in puddles in the last nine months or so.” In the shipping pipeline, procedural puddles appear where surface material wetness values cross a designated threshold guided by a random seed. During rainy conditions, these puddle meshes activate with interactive ripples and splash effects. Finally, Santiago noted that pre-production planning mandated that impostor generation be integrated directly into these procedural systems, setting up the pipeline for distant building and city representations.
[20:53](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=1253s) Imposter Generation and Whole-City Rendering
To render Manhattan at scale without exhausting runtime memory, the procedural pipeline converts the city’s vast structural content into imposters. Imposters serve as low-resolution proxy representations of every structure across the entire city. The system takes the high-resolution geometry found in the complete edifice prefabs, extracts a simplified geometric shell, and projects textures onto it to form a unified texture atlas. These imposters are then placed into designated imposter zones and packed into optimized memory containers. Because the city continually evolves, imposters must be regenerated repeatedly whenever ground geometry, structures, materials, or global lighting setups change.
Whenever a player sees an expansive vista or sweeping panoramic shot of Manhattan, nearly everything visible across the horizon consists of these imposters. The full city geometry is never loaded into memory all at once. In practice, at most twelve zones are loaded in high resolution at any given moment, and even within those twelve active zones, the majority of the geometry sits at its lowest level of detail (LOD), which closely mirrors the low-cost content of an imposter.
- Imposters are simplified structural meshes textured via atlas projection from high-resolution edifice prefabs. - Regeneration triggers automatically upon changes to ground surfaces, building meshes, materials, or scene lighting. - At maximum runtime load, only twelve zones are held in high-resolution memory simultaneously.
[22:00](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=1320s) Dynamic Encounters and Complex Spatial Rules
After less than a year of pre-production, the procedural tech team felt prepared to celebrate having solved the fundamental challenges of building open-world Manhattan. However, as David Santiago jokes, the celebration was cut short because the gameplay and design teams arrived with an entirely new set of demands: “Justice we feel like we were going to be able to handle all the challenges for the open world, the designers wanted some procedural system love so we had some new challenges.” The designers needed procedural automation for dynamic encounters, specifically placing 29 distinct crime archetypes and 25 vignette variants across the city using specialized rule sets, alongside additional world markup for newly added Spider-Man hero moves and enemy bot navigation.
To illustrate the geometric complexity involved, Santiago details the placement criteria for a rooftop jetpack crime. A procedural script had to evaluate the entire city to locate a primary rooftop providing at least 64 square meters of clear combat space. That rooftop had to be situated within 40 meters of two neighboring rooftops that also possessed 64 square meters of combat space each, with those adjacent roofs resting within a vertical tolerance of 20 meters up or down from the initial roof. Furthermore, unobstructed navigation paths had to link all three rooftops together, as well as link each roof down to the street sidewalk or back alley below. Once valid candidates were identified across the existing building configurations, the system populated the encounters to match the designer-specified crime density for each city district.
```mermaid flowchart TD accTitle: Jetpack Crime Spatial Placement Criteria accDescr: Rule set for placing rooftop jetpack encounters based on area, distance, height, and navigation paths.
subgraph Primary ["Primary Rooftop"] A["Rooftop Space (64 m² Combat Area)"] end
subgraph Neighbors ["Adjacent Rooftops"] B["Roof 2: 64 m² Area"] C["Roof 3: 64 m² Area"] end
subgraph GroundNav ["Ground Level Connections"] D["Alley / Sidewalk Navmesh"] end
A -->|"<= 40m distance (±20m elevation)"| B A -->|"<= 40m distance (±20m elevation)"| C B ---|"Unobstructed Nav Path"| C A -->|"Clear Nav Path"| D B -->|"Clear Nav Path"| D C -->|"Clear Nav Path"| D ```
[23:59](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=1439s) Cascading Dependencies Across City Systems
Handcrafting an open world alongside procedural generation exposes extreme systemic fragility because nearly every layer depends directly on the physical environment beneath it. Shifting an alley or adjusting a road curve redraws the contiguous city blocks bordered by those roadways, instantly invalidating every building, prop, and crime placed on those tiles. Encounter logic also feeds directly into physical dressing: moving a single crime can cause ripple effects across up to nine world tiles because the procedural dressing system must clear static clutter and avoid placing props where active combat will occur. Altering a building structure cascades into player traversal paths, crime encounters, baked lighting solutions, and audio acoustics.
The audio team also required dedicated procedural systems to handle the game's audio requirements. Procedural tools were built to automatically calculate and place 3D reverb volumes throughout complex urban geometry, as well as dynamically distribute crowd audio emitters across the city map. Recognizing the immense scope of this cross-discipline web, Santiago emphasizes that managing these dependencies required structured boundaries: “So if we're going to procedurally author all that content with all those dependencies and have it be handcrafted, we need to figure this out and make a pipeline.”
- Moving a single dynamic crime can invalidate prop layouts across up to nine surrounding streaming tiles. - Procedural audio systems automatically map indoor/outdoor reverb volumes and position dynamic crowd sound emitters. - Modifying street alignments forces complete regeneration of block boundaries, building footprints, and encounter markup.
[25:10](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=1510s) The Three-Phase Procedural Pipeline Architecture
To maintain stable iteration and prevent designers from breaking one another's work, Insomniac structured their open-world pipeline around three clear procedural phases designed to iterate, approve, and permanently lock assets. SideFX Houdini served as the primary digital content creation package for building and managing these production workflows, though the underlying algorithms were engine-agnostic and frequently ran through custom internal code independent of third-party software.
Phase 1 establishes world layout, where designers define road centerlines, block out raw architectural masses, define parks, and carve out core mission spaces. Phase 2 handles the bulk of procedural content authoring, generating fine-grained architectural detail, dynamic gameplay markup, and encounter distributions. Phase 3 acts as the final polish stage where procedural tools assist in game stabilization and asset cleanup. Crucially, lighting bakes and imposter generation run continuously in the background across every phase, while audio and UI datasets generate throughout Phases 2 and 3 so the game remains bootable and fully playable at all times.
```mermaid flowchart LR accTitle: Three-Phase Open World Procedural Pipeline accDescr: Pipeline showing the progression from Phase 1 layout to Phase 2 procedural generation and Phase 3 polish.
subgraph P1 ["Phase 1: Layout"] R["Road Curves & Alleys"] --> B["Building Massing Blocks"] end
subgraph P2 ["Phase 2: Bulk Generation"] M["Modular Architecture"] --> G["Encounters, Props & Nav"] end
subgraph P3 ["Phase 3: Final Polish"] POL["System Optimization & Asset Locking"] end
subgraph Continuous ["Continuous Background Processing"] IMP["Imposters & Lighting"] AUD["Audio & UI Data"] end
P1 --> P2 P2 --> P3 P1 -.-> Continuous P2 -.-> Continuous P3 -.-> Continuous ```
[26:47](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=1607s) Phase 1: Roads, Building Massing, and Dynamic Alleys
The initial incarnation of Manhattan originated from a simple Adobe Illustrator vector map that the procedural tools ingested to spawn primitive spline curves and polygon boundaries within Insomniac’s proprietary world editor. The system scattered simple rectangular boxes across designated zones to block out city skylines, reading custom vertex color values painted by designers to dictate the minimum and maximum building height variations per district. Once inside the editor, designers interacted directly with road curves, tuning road widths (measured from sidewalk edge to sidewalk edge) versus street widths (measured curb-to-curb), adjusting curb heights, and configuring driving lanes.
Initially, designers manually plotted only the primary avenues. The procedural system took responsibility for synthesizing the rest of the street grid, relying on programmatic traffic rules: “So we just told it something like we want 70% of the streets to be one-way streets and 70% of those should be one traffic lane with one parking Lane and then the system just went through the city to create workable traffic patterns.” While narrative chases and story beats later necessitated hand-authoring lane profiles on specific roads, procedural defaults generated the vast majority of Manhattan's traffic flow.
With road footprints solidified, the pipeline extruded procedural ground surfaces, converted building boundaries into modular architectural sets, and applied initial traversal markup so designers could immediately playtest web-swinging. Early testing had to account for significant movement constraints, as Spider-Man had not yet been equipped with mechanics like web zipping, parkour wall runs, or point launches. As separate buildings filled individual blocks, procedural scripts automatically generated alley curves through the interstitial spaces. These alley curves served a vital functional role beyond simple aesthetics: they provided driveable alternate paths for traffic detours when dynamic crimes blocked primary streets, while signaling procedural tools to swap out ground materials, place back-alley props, and modify local lighting and sound profiles. Phase 1 concluded once the road network and rough building footprints stabilized, providing the locked foundation necessary to advance into Phase 2.
[30:55](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=1855s) Phase Two: The Art Polyline Pass and the 80/20 Target
A fundamental ground rule governs this phase: artists and designers are strictly forbidden from hand-editing procedural outputs directly. David Santiago emphasizes that any necessary alterations must instead be driven through the controllable parameters and inputs fed into the procedural systems. Failing to follow that principle exposes the team to severe risk, because regenerating a procedural pass would simply wipe out any manual touches.
```mermaid flowchart TD accTitle: Procedural Pipeline Phase Transition Flow accDescr: Shows the progression from design zoning into two stages of modularization, ending in procedural generation and manual polish.
subgraph Phase1["Phase 1: Foundation"] A["Designer Zones & Primitives"] end
subgraph Phase2["Phase 2: Modularization Passes"] B["Stage 1: Polyline Pass<br/>Final layouts, shapes, alleys"] C["Stage 2: Architectural Styles<br/>Materials, sets & propping"] end
subgraph Phase3["Phase 3: Generation & Polish"] D["Procedural Placement<br/>(80% Completion Goal)"] E["Manual Sign-off & Hand-Crafting<br/>(Final 20% Polish)"] end
A --> B B --> C C --> D D --> E ```
Phase two introduces the "art polyline pass," where environment artists replace early designer bounding primitives with multiple polygonal volumes to refine each building's silhouette. During this step, artists also specify architectural sets and can modify or delete alley curves if a drivable lane is not appropriate, prompting an immediate recalculation of the surrounding ground surfaces. In practice, phase two is split into two distinct modularization stages: 1. *Stage 1*: Establishes structural foundations with finalized layouts and exterior shapes. 2. *Stage 2*: Focuses on swappable architectural styles, façade treatments, and initial propping.
At the conclusion of the first stage of phase two, the objective is to have pedestrians, traffic networks, vignettes, crimes, and street props proceduralized to an 80% completion target. The underlying philosophy is that procedural tools should handle four-fifths of the heavy lifting to ballpark-level accuracy, leaving art and design with only the remaining 20% of the effort traditionally required for hand placement. As Santiago illustrates, tasks that once consumed five weeks of an artist's schedule drop to a single week, or an entire week's task compresses into a single day. Once design approves and art signs off, the pipeline transitions to hand-polishing and procedural updates to downstream items such as impostors, audio, and lighting.
[33:38](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=2018s) The Domino Effect and Broken Pipeline Assumptions
The original production roadmap assumed Manhattan would be developed uniformly, sweeping across the island district by district as if each were an isolated zone. Initial steps locked down the whole-island layout, street networks, and major landmarks. The plan called for finalizing roads, generating ground geometry, and assigning neighborhoods within a district to individual environment artists who would progress through their first modularization pass in lockstep. Once a district achieved structural sign-off, procedural systems were scheduled to populate it with crimes, vignettes, and props before artists moved across the map.
```mermaid flowchart LR accTitle: The Domino Effect of Local Road Changes accDescr: Flow diagram showing how local alley and road changes propagate outward, breaking traffic, UVs, and gameplay placement.
A["Local Alley/Road Adjustment"] --> B["Traffic Network Invalidation"] B --> C["Inter-District Flow Shift"] C --> D["Multi-Tile UV Discontinuity"] D --> E["Procedural Content Invalidation<br/>(Crimes, Props, Vignettes)"] E -->|"Forces Rollback"| F["Pipeline Block 1 Reset"] ```
That smooth theoretical rollout quickly unraveled. In practice, artists sculpting a neighborhood needed to tweak alley widths and road alignments to establish local architectural flavor. Because vehicular pathing and street connectivity span across district borders, adjusting a single road or alley could invalidate traffic flows multiple districts away. Santiago reflects on the escalating cost of these dependencies: “So it leads to a domino effect of changes and that brings us all the way back to block one of the flowchart.”
Furthermore, production demands shattered the assumption of uniform progress: - E3 demos, bespoke story missions, milestone vertical slices, and narrative dioramas pulled individual tiles forward into high polish while neighboring tiles remained rough primitives. - Altering an alley width broke texture UV continuity across multi-tile building blocks. - Street modifications displaced hand-adjusted props, crimes, and gameplay vignettes. - Edge and coastal tiles, lacking primary gameplay content, were neglected and lagged far behind central zones. - New game features—such as center medians, coastal marinas, and complex rooftop elements—demanded unforeseen traversal markup and bot-navigation updates across tiles at wildly different stages of completion.
Santiago acknowledges the personal toll this breakdown took on him: “And I was personally a little bit stressed and frustrated that we kind of weren't sticking to the pipeline that that we worked on.”
[38:08](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=2288s) Restructuring: Branching Dependencies and Confidence Validation
To resolve the gridlock, team leads initiated a series of meetings spanning several weeks. Resolving the growing pains required explicit criteria for when key base geometry (such as road networks and structural shells) could be considered stable enough for downstream dependencies. The pipeline had to ensure that ongoing manual passes on art, narrative missions, or crimes would not cascade upstream and force earlier procedural passes to be run from scratch.
The breakthrough lay in decoupling the dependency chain: - **Dependency-Based Modularization**: Procedural rules were refactored so that elements run as soon as their specific preconditions are satisfied, rather than waiting for an entire district to lock. For example, traffic lights only require road vectors and sidewalk corner positions; once corner coordinates are known, signals can be placed immediately without waiting for façade propping. - **Hierarchical Separation**: Higher-order street elements with more intricate layout constraints—such as mailboxes, which must avoid alley openings, crosswalks, and bus stops—were separated into distinct prop-placement modules with their own rule gates. - **Corner-Case Handling**: Tightened spatial metrics helped definitively exclude invalid placements while accounting for non-standard geometry.
Instead of aiming for 100% flawless procedural placement out of the box, the system prioritized ensuring that 100% of the planned procedural quota made it into the game world, even if some items required manual adjustment. Santiago points out the practical benefit: “Because it's easier to try to place these 160 crimes out there and know that every people have to adjust them and put them in the right spot other than just saying, ‘Oh, I can only place 120 of them,’ and then relying on the artists and designers to count and remember that they have 40 more crimes they need to place and placing them in the appropriate areas.” The mechanism created to flag low-confidence ballpark assets eventually evolved into a city-wide validation framework used to safeguard content across the rest of the production.
[41:06](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=2466s) Bringing Order to the City: Contiguous Tiles and Late Production Overhauls
To regain control over Manhattan's immense footprint, the team had to align all departments on a single modular process. Originally, each district was intended to advance as an orderly set of contiguous tiles. As the realities of production set in, that strict requirement shifted to a far more practical mandate: just deliver any group of contiguous tiles so work could move forward. This setup allowed new procedural passes to preserve hand-authored changes by interleaving procedural generation directly with artisan designer work. Santiago notes that while this concept was far “easier said than done,” getting it established proved crucial for tackling late-stage production hurdles.
Several significant issues immediately surfaced around traversal and collision. When new building kits and storefront assets were introduced, Spider-Man ran into wall-crawling issues, requiring the procedural system to generate customized ledge path markups and wall-crawl collision meshes that matched whichever specific building kit each storefront had been attached to.
```mermaid flowchart TD accTitle: Late Production Pipeline Additions accDescr: Visualizing the integration of wall-crawl collisions, overlay zones, and audio meshes.
subgraph CollisionPass["Collision & Navigation"] A["New Storefront Assets"] --> B["Procedural Wall-Crawl Collision"] A --> C["Ledge Path Markup"] end
subgraph DynamicWorld["World States"] D["Overlay Zones"] --> E["Time of Day / Weather"] D --> F["Act 1, 2, & 3 States"] F --> G["Garbage, Vignettes, & Store Open/Close"] end
subgraph AudioEngine["Acoustic Layer"] H["Material Textures (e.g. Central Park)"] --> I["Custom Audio Collision Models"] end ```
Late in development, the team also introduced an act system utilizing overlay zones to govern world states. This architecture allowed the city to dynamically react to time of day, weather conditions, and narrative beats across Acts 1, 2, and 3. In Act 3, for instance, storefronts shuttered, streets filled with accumulated garbage and special combat vignettes, and pedestrian density changed. Santiago laid out the rapid turnaround timeline: proposed in October 2017, designed in December 2017 (right before he took off for holiday break), implemented in March 2018, and completely populated with final content well before ship. Additionally, late updates to mission spaces forced the open-world gameplay in several zones to be re-authored, and procedural tools had to generate custom audio collision models across Central Park to match the acoustic properties of the materials displayed on visual surface textures.
- Ledge path markups and wall-crawl collision had to be injected procedurally because rules differed by building kit. - The overlay zone system enabled stores to close at night or during Act 3 and altered ambient crowds and garbage vignettes. - The act overlay timeline ran from initial proposal in October 2017 to completed code implementation in March 2018. - Central Park required a procedural pass to produce custom acoustic collision meshes reflecting underlying ground materials.
---
[43:36](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=2616s) Lessons Learned: Managing Dependencies and Avoiding Over-Constraint
Reflecting on the pipeline, Santiago emphasized that while rigid development workflows are theoretically superior, open-world production demands structural flexibility. Teams must lock procedurally generated elements along with their dependencies as early as humanly possible so downstream teams can proceed without fear of invalidation. He stressed the importance of hierarchically modularizing procedural content: once traffic light placements are resolved against road geometry, that light's placement becomes fixed and serves as a dependable parent anchor for secondary props. Putting all props into a single mega-module creates an unmanageable web where every individual prop inherits every environmental dependency.
Santiago cautioned against the trap of over-defining procedural rules. Seeking flawless placement logic is counterproductive because “it supposedly takes an infinite amount of time to make the perfect system.” Strict criteria eliminate valid placements, leaving gaps across the city that force artists to populate assets entirely by hand:
> “Now you don't need to create the perfect rules to place something; first of all it takes a lot longer to make the perfect system—I think it supposedly takes an infinite amount of time to make the perfect system—and then second, if you only place something with strict criteria, you're not going to find that many locations that meet the criteria.”
Instead, loose criteria allow assets to populate roughly in place, giving human artists something tangible they can quickly nudge into position.
Furthermore, Santiago advised breaking compound dependencies into distinct operational modules. A compound dependency occurs when a single asset category relies on mutually exclusive sets of rules or branches heavily. For instance, open-world crimes can spawn either on roadways (facing traffic in the middle of a block or at an intersection) or high up on building rooftops. Rather than writing one complex module packed with branching conditionals, the roadway crimes should generate exclusively against street data, while rooftop crimes execute against architectural building data. Combining them into one module introduces unwanted cross-dependencies that propagate through neighboring assets.
- Locking procedural steps early isolates upstream changes from breaking downstream polish. - Hierarchical modularity keeps asset rulesets discrete; traffic lights finalize before decorative sidewalk props run. - Over-defining rules creates excessive constraints, and constraints directly translate to brittle dependencies. - Splitting compound placement rules (such as rooftop vs. street-level crimes) isolates the dependency chain.
---
[46:56](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=2816s) Tagging, Validation, and Procedural Self-Healing
Clear asset tagging is an absolute necessity for any non-destructive workflow. When an asset is unambiguously tagged as procedurally generated, the generation tools can wipe and regenerate it across hundreds of iterations without touching hand-placed artistic work. However, Santiago warned that pipeline loopholes can still cause breakage. If an artist details the area around a procedural asset without grouping the new props into the correct dependency hierarchy—such as scattering soda cans, cups, and pretzels on a hot dog vendor cart—a subsequent procedural regeneration that finds a better location for the cart will leave those unlinked snacks floating mid-air.
To safeguard world integrity, the procedural engine implemented automated validation routines to catch illegal geometry configurations, such as an enemy spawner embedded inside a solid building mesh without an interior. Santiago articulated the strict operational hierarchy the tools followed:
> “So we want to delete, nudge, or modify automatically only when we're absolutely certain of the result.”
If a spawner had zero utility, the tool cleanly removed it. If moving it just outside the facade satisfied the rules, it adjusted its position. But whenever the system lacked high confidence in an automated fix, it refused to guess; instead, it flagged the asset for manual artist or designer review. For dynamic gameplay elements like combat throwables and breakables, problematic assets were placed into a dormant state where they would neither build nor spawn in-game until an artist explicitly addressed them.
- Accurate tagging allows developers to regenerate content repeatedly without wiping handcrafted changes. - Placing decorative props outside the proper asset hierarchy can cause them to become disconnected or float if parent nodes shift. - Validation tools only execute automatic moves or deletions when confidence is absolute. - In ambiguous cases, spawner and crime assets were put into an unspawned state awaiting human review.
---
[47:48](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=2868s) Project Metrics, Wrap-Up, and Q&A on Artist Communication
Looking back at the project goals, Santiago expressed pride in what the procedural team accomplished. The original target was that 80% of procedural content would be ship-ready right out of the generator (or completed to 80%), leaving artists and designers with at most 20% of their traditional manual workload. The team ultimately surpassed that 80% threshold. However, Santiago was quick to dispel any illusions about extra downtime: every single hour saved by automation was immediately absorbed by further design iterations, handcrafting, and polish, meaning “there was no leisure time trying to get this out the door.”
To demonstrate how late modifications were pushed through the dependency pipeline, Santiago highlighted the road and curb infrastructure. The road curve zones were officially locked in late January 2018, yet the final procedural adjustment to the ground surface was made in late June 2018—scarcely more than two months before the game hit retail shelves.
Concluding his talk, Santiago thanked Sony Interactive Entertainment, PlayStation, Marvel Games, SideFX Software, his advisor Jeff Hanna, and his colleagues at Insomniac Games before opening the floor to questions. An audience member who worked on *We Happy Few* stepped to the microphone, noting that on their procedural project, artists struggled to understand how manual tile changes disrupted procedural generation downstream. He asked Santiago how Insomniac managed to communicate the cascading, complex consequences of procedural changes in Houdini to their art team.
- The 80% ship-ready procedural target was exceeded, but all saved time was reinvested into additional polish and handcrafted iterations. - Road curve zones were locked in late January 2018. - The final procedural pass on the ground occurred in late June 2018, just two months before release. - The Q&A opened with a question regarding Houdini pipeline education and communicating downstream dependency breaks to artists.
[51:33](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=3093s) Artist Adoption, Overrides, and Knowing When to Cut Proceduralism
David Santiago describes the cultural transition artists went through when the procedural pipeline was introduced. Initially, there was natural resistance: environment artists wanted to hand-author their buildings directly and felt hesitant about handing control over to automated systems. However, their perspective shifted dramatically as soon as they experienced the speed of the tooling. Santiago notes:
> “...as soon as they saw that they could just change a safe and then boom and it would instance all the stuff for them they're like oh oh I like this I like this...”
Artists quickly realized they could simply draw their polyline footprints to define a structure, immediately trigger the automated construction, and have it move through the entire pipeline for rapid testing. Over time, through trial and error, the team had to learn the boundaries of the pipeline: what could safely be modified, what could not, what was preserved across regenerations, and how overrides were structured across dependencies and data hierarchies. Because Insomniac had a remarkably small team working on the open world, getting everyone aligned was not overwhelmingly difficult. Santiago explains:
> “...sometimes it at some points right they would just say I'm cutting this off from procedural systems at all and I'm saying I and our system say okay fine and you I mean do you have to do everything hmm and that would be fine.”
- Artists defined polyline boundaries, which the system then used to instantiate building kits and downstream features automatically. - Team members learned when to rely on procedural workflows and when to explicitly "sever" an asset from procedural regeneration to finish it entirely by hand.
---
[53:18](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=3198s) Building Kits, LODs, and Impostor Geometry
An audience member asks about how the team handled performance and asset management across Manhattan, observing that buildings are composed of individual blocks that switch LODs independently as the player travels through the city.
Santiago explains that the procedural generation system only recognized specific, standardized "building kits" authored by the environment artists. When artists designed a kit, it was exported with mandatory pieces directly registered into the procedural system's library, alongside auxiliary pieces reserved for manual detailing and polish passes later. The procedural system itself remained relatively lean and uninformed: it only understood the core piece dimensions, specific offsets, and placement metrics based on architectural styles. It had no deeper semantic understanding of the models. Later in the process, artists were free to manually swap architectural sets or inject custom one-off assets.
Every piece of geometry in the game had to strictly adhere to LOD requirements. Santiago highlights an optimization specifically designed for the building impostor system:
> “...if there wasn't a possible lower resolution state that we didn't want to be in a standard LOD we created a special one that the imposter system would see so that when we took those prefabs of buildings and simplified them up to make a single model we would use that even more simplified geometry.”
```mermaid flowchart TD accTitle: Procedural Building Kit and Impostor Generation accDescr: Pipeline showing how environment kits feed into both runtime LODs and simplified offline impostor models. subgraph Authoring["Kit Authoring"] A["Environment Artists Author Kit"] --> B["Required Kit Pieces"] A --> C["Auxiliary Polish Pieces"] end subgraph Procedural["Procedural Engine"] B --> D["Procedural Library (Dimensions & Offsets)"] D --> E["Polyline Placement & Instancing"] end subgraph LODPipeline["LOD & Impostor Output"] E --> F["Standard Runtime LODs"] E --> G["Special Hidden LOD Geometry"] G --> H["Impostor System: Merged Prefab Mesh"] end ```
---
[55:41](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=3341s) Pipeline Regeneration Times and Overnight World Builds
Asked about iteration turnaround times—specifically whether generation could happen at runtime in the editor or required complete reloads—Santiago explains that artists had fast editor tools for local iteration. If an artist adjusted a building's polyline, they could trigger a background process to rebuild just that structure or its impostor within about a minute.
For full-scale generation, however, the immense web of asset dependencies, source-control checkout locks, and user permissions made live runtime generation impossible across the entire map. Instead, the full open world was rebuilt overnight, which was common early in development when rapid, sweeping changes were landing.
``` +------------------------------------+--------------------------+ | Pipeline Processing Pass | Approximate Duration | +------------------------------------+--------------------------+ | Ground Sparse Data Pre-Processing | ~1 hour | | Single Ground Tile (~16 models) | ~2 to 3 minutes per tile | | Entire Ground Tile Regeneration | ~5 hours total | | City-wide Placement Pass (e.g. | ~25 minutes | | crime events / world dependencies) | | +------------------------------------+--------------------------+ ```
Santiago details the complexity of the ground generation:
> “I don't know if you noticed but every single district has different materials for its asphalt and for its sidewalks that's fun and and so all that stuff there's a pre-processing a processing time of about an hour to create that sparse set of data...”
- Ground processing first created a sparse dataset describing UV continuity, layout, and district-specific street and sidewalk materials. - Each ground tile contained roughly 16 separate models, taking a couple of minutes each to process alongside associated metadata for subsequent pipeline stages. - Re-running an entire city-wide placement pass—such as placing ambient crimes—took roughly 25 minutes due to the cascade of map-wide dependencies.
---
[58:14](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=3494s) Lighting Impostors, Memory Footprints, and Strict Tile Budgets
An audience member asks about whether multiple sets of impostors were needed across different story acts or tile states, and how memory budgets were handled. Santiago explains that the team used only a single set of impostors. To handle varying times of day and environmental conditions, lighting was computed at distance: impostors were dynamically shaded in the distance using data captured from environment light probes.
Impostors were grouped into distinct spatial zones to strictly manage memory. Data was packed into contiguous blocks of memory so entire zones could be instantly dropped when the player stepped into an instanced interior. If an instanced interior contained windows looking back out into Manhattan, the engine selectively retained only the specific impostor zones visible from that vantage point.
Regarding asset budgets, Santiago confirms that every environment artist worked under hard per-tile memory limits:
> “...every tile had a fixed budget every tile has a fixed budget until we break the rules for some reason...”
When asked if artists could borrow memory from an adjacent tile that was running under budget, Santiago firmly dismissed the idea:
> “...we didn't treat it that way it's only if this has to be in this tile because a lot of gameplay actually depends on this and the open world has to be in this particular state.”
- Near final delivery, artists frequently bumped against budgets and had to make hard choices about which assets to remove. - Systems automated substantial optimization passes across collision meshes and LOD stepping to help keep tiles within target limits. - Budgets were only bent for critical, non-negotiable mission beats or open-world gameplay dependencies anchored to that exact space.
---
[01:00:13](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=3613s) Source Control, Checkout Conflicts, and Data Caches
Addressing an audience question on how the studio avoided chaotic file-locking collisions between artists and procedural generation scripts across the massive city, Santiago jokes about team members having to manually message each other to release files.
In practice, the team mitigated file lockouts by decoupling active authoring from automated passes through centralized data caches. Rather than constantly reading live working assets directly from source control, generation runs were driven by daily global data caches representing the state of the world. Artists were required to check in all their work at the end of each day so the nightly processes could run against a clean, unified baseline.
[01:01:19](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=3679s) Per-Tile Data Caching, Pipeline Dependencies, and Parallel Processing
Concluding an earlier response regarding data dependencies and automated builds, David Santiago details how the team handled checked-in assets across the open-world grid. Rather than running an active file-system watcher or Perforce daemon constantly polling for readiness, the production workflow was structured around scheduled deadlines. Assets were grabbed per tile based on their latest checked-in state. Cached data was regenerated daily or whenever updated states were required to run dependent systems.
Because the tail end of the pipeline was architected to run across tiles in parallel, the procedural generation system could seamlessly process an updated tile alongside its surrounding context. Santiago highlights how boundary conditions were reconciled: “I would process that tile and its neighboring tiles or I have that tile inherit its neighboring tiles properties right so the procedural systems would use which neighbors instead of what was originally authored in that tile just so we're all blend in.”
```mermaid flowchart TD accTitle: Tile Processing Pipeline accDescr: Perforce tile check-ins feed into cached tile states, parallel processing, and neighbor property blending.
subgraph Ingestion ["Source Data"] A["Checked-in Tile Assets"] --> B["Per-Tile Cache Generation"] end
subgraph Processing ["Parallel Processing"] B --> C["Parallel Tile Execution"] D["Neighboring Tiles"] --> C end
subgraph Resolution ["Boundary Blending"] C --> E["Inherit Neighbor Properties"] E --> F["Seamless World Streaming Tile"] end ```
[01:02:25](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=3745s) Handling Complex Traffic Intersections, Overpasses, and 3D Traversal
An audience member asks a two-part question about how the procedural systems navigated complex road layouts, such as five-way or tightly clustered intersections, as well as vertical topology like overpasses and underpasses. Santiago explains that the baseline procedural generation would attempt to resolve street networks on its own, which initially produced chaotic results: “so the system would if if it knew about the the street itself it would try to figure out a solution so you'd have cars going driving right through each other”.
To remedy traffic conflicts, a production support specialist handled cleanup tasks directly within the proprietary editor. The game’s traffic system was constrained to two simple traffic signal phases (east-west and north-south). When unconventional geometry or left-turn lanes created conflicting traffic paths across these phases, technicians would manually delete invalid paths and hand-author the desired routes. The pipeline flagged these edits as manually authored, guaranteeing that subsequent procedural passes preserved them intact.
For verticality and multi-layered roads, the system was not restricted to a 2D plane: - **Grand Central Terminal:** Utilized the elevated roadway deck around the terminal, authored by drawing a spline, applying basic naming-convention metadata, and allowing the automated pipeline to integrate it into the navigation mesh. - **Bridges:** Paths were manually traced from ground level up the bridge incline; vehicles travel up the span, loop around in the middle, and make the return trip. - **Pedestrian Underpasses:** Pedestrian navigation paths routed down subway station stairs, traversed beneath the street grid, and emerged onto the opposite sidewalk.
[01:04:42](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=3882s) Artistic Control: Vertex Painting, Road Wetness, and Lighting
Responding to a question regarding artistic rules governing color palettes, color variation, and city illumination, Santiago emphasizes: “art drives it all.” Procedural placement strictly served artistic direction rather than replacing it.
A primary example involved road surfaces and puddles. Baseline vertex colors were baked directly into the static roadway models during asset creation. Artists retained the ability to paint additional vertex color layers across the world, creating a localized color cloud that altered surface wetness, puddles, and material responses. For street-level props and surfaces, the procedural pipeline read this artist-painted vertex data and re-integrated it directly into the road geometry, ensuring full artistic control over environmental weathering. Concerning illumination, aside from procedural dressing like alleyway lighting, artistic placement rules governed the distribution of light sources across the environment.
[01:06:04](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=3964s) Grid Topology: Why Insomniac Returned from Hexagons to Square Grids
An attendee references Insomniac's previous GDC presentation on *Sunset Overdrive*, where the studio championed a hexagonal grid layout for streaming large procedural cities, and asks why *Marvel's Spider-Man* transitioned back to a traditional square grid.
Santiago clarifies the architectural rationale behind both choices: - **Hexagonal Grids (*Sunset Overdrive*):** Hexagonal layouts were originally chosen when the procedural engine relied on a pre-fabricated, modular kit of puzzle pieces to stitch roads and urban layouts together. Hex grids provided substantial rotational flexibility for snapping fixed-size road modules together seamlessly. - **Square Grids (*Marvel's Spider-Man*):** Extreme elevation shifts and verticality in Manhattan made a fixed kit of modular pieces impossible to maintain, necessitating a fully custom procedural street generation system. Furthermore, as Santiago points out: “New York sort of built on on a grid so using the grid system for streaming regions kind of just made sense that the hexes did not make sense for for doing New York City.”
The session concludes with Santiago directing attendees with lingering questions to the designated GDC wrap-up room for further discussion.
## Notable quotes > [46:56](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=2816s) We want to delete, nudge, or modify automatically only when we're absolutely certain of the result. — David Santiago
> [08:46](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=526s) Roads and alleys define this city: everything is dependent on their placement, size, and lane configuration. — David Santiago
> [43:36](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=2616s) If you only place something with strict criteria, you're not going to find that many locations that meet the criteria. — David Santiago
> [05:07](https://www.youtube.com/watch?v=4aw9uyj9MAE&t=307s) The goal for Spider-Man was to procedurally generate an open world early in production to give the designers and artists the rest of the remaining of our production time to polish the game and our target was 80% usable procedural content. — David Santiago
## Mentioned David Santiago, Bryan Intihar, Doug Sheahan, Ron Kuper, Jeff Hanna, Insomniac Games, SideFX Houdini, Adobe Illustrator, PlayStation 4, Marvel's Spider-Man, Sunset Overdrive, Game Developers Conference (GDC), Sony Interactive Entertainment, Marvel Games, We Happy Few, Perforce, Central Park, Grand Central Terminal, Manhattan, New York City
## Video description In this GDC 2019 session, Insomniac Games' David Santiago describes the open world pipeline of 'Marvel's Spider-Man' and how each procedural system was originally designed to support iterations, and dependencies.
Register for GDC: https://ubm.io/2yWXW38
Join the GDC mailing list: http://www.gdconf.com/subscribe
Follow GDC on Twitter: https://twitter.com/Official_GDC
GDC talks cover a range of developmental topics including game design, programming, audio, visual arts, business management, production, online games, and much more. We post a fresh GDC video every day. Subscribe to the channel to stay on top of regular updates, and check out GDC Vault for thousands of more in-depth talks from our archives.
[Source](https://www.youtube.com/watch?v=4aw9uyj9MAE)