Skip to content
Guy Ginat
All work

Swipers level generation

A deterministic, network-synced generator that grows whole facilities from one seed, with a workbench designers drive.

Role
Technical Director, lead author of the level generator
Team
Panda Paw
Timeline
March to June 2026. The game was cancelled; the tech carried into CatchUp.
Stack
Unity 6, C#, Photon Fusion 2
Swipers title screen: a lobby console in a cluttered facility corridor

Swipers was Panda Paw's first game: a physics-heavy co-op heist where players raid procedurally generated facilities while a teammate guides them from the van. We pivoted to CatchUp in June 2026.

The level generator is the part I'm proudest of. It is about 43,000 lines of runtime code and 11,000 lines of editor tooling.

  1. 1. Halls, most constrained first

  2. 2. Perimeter loop corridor

  3. 3. Rooms attach to halls

  4. 4. Hallways: spanning tree plus loops, routed with A*

The diagram is a schematic of the pipeline order, not a generated level.

What I built

A network-first pipeline

The first version placed rooms and squeezed corridors through what was left, which produced mazes rather than buildings. I rewrote it top down: special halls first, most constrained first, then regular halls, perimeter loop corridors, attached rooms, and finally hallways connected by a spanning tree plus loops and routed with A*. Sixteen named stages take a level from empty grid to packaged result.

One data structure at every scale

Layouts are stored as a doubly connected edge list, where every wall is two half-edges, one for each side. The same graph, per room and level-wide, drives maze carving (depth-first, Prim and Kruskal), occlusion zones, guard hearing and pathfinding.

Deterministic multiplayer

The host sends a single integer. Every player builds identical geometry from salted random streams, and only the host spawns networked items. A failed seed retries automatically, and a curated cache holds pre-validated seeds.

Performance

Layout runs on a background thread, instantiation is chunked under an 8 ms per-frame budget, and the navmesh bakes asynchronously afterwards.

Designer control

Placement rules (near or far, required or preferred, boundary sides), weighted pools in ScriptableObjects, and a Level Workbench editor with a live 2D layout preview, a seed curator, room scaffolding, decoration tools, validation, gizmo overlays and a loot-economy simulator that runs across many seeds.

Result

It generated every level in Swipers playtests. Its data types and seed-determinism model now underpin CatchUp's world.

Next case studyLocal Multi-Control