Skip to content

Suite 666 floor-plan synthesis

Structural source of truth

id.svg is the authored structural source. scripts/svg_to_floorplan.py generates tour/floorplan.json at 1 SVG unit = 1 mm. The generated data contains suite metadata, walls, glass, pillars, doors, window dividers, a player spawn, ceiling lights, light switches, and the labeled pre-entry demo path.

The JSON does not contain rooms, room labels, furniture, workstations, people, a game table, artifacts, or navigation routes. Those current runtime features belong to a separate fictional semantic and presentation layer. They do not alter the authored floor-plan files and are not claims that historical furniture or room functions occupied those exact coordinates.

tour/src/office/shell/build.ts derives a closed footprint from the structural lines and builds one merged opaque shell for floor, ceiling, walls, pillars, sills, and door frames, plus separate glass panes for correct transparency. Door leaves and switches are interactive. Player collision tests the rendered shell and closed doors; the built-in idclip command explicitly toggles noclip.

Surface textures, living-office furniture, props, artifacts, and fictional character geometry are generated procedurally in the browser. The office uses no imported 3D model assets. Native directional shadows are disabled on Android and enabled elsewhere; distant OSM geometry remains unshadowed.

Fictional semantic overlay

tour/src/office/semantics/suite-map.ts layers nine fictional rooms, activity anchors, portals, navigation nodes, route edges, capacities, and obstacles over the reconstruction:

Semantic room Initial operational label Initial purpose
Reception Bare entrance Unassigned
West workroom Shared technical work Work
Central workroom Unfinished shared workroom Work
North passage Passage Unassigned
Project room Planning room Meeting
Art workroom Visual workroom Production
Code workroom Programming workroom Production
East studio Sound and assembly studio Production
Game room Work now, campaign on Day 7 Campaign

These names describe the fictional campaign, not historical id Software room labels. Startup validation checks room polygons against the generated footprint, anchor placement, graph connectivity, obstacle clearance, portal geometry, and each referenced structural door source. The semantic map is never written back to id.svg or tour/floorplan.json.

Room-purpose events can change the operational label and purpose during a run. The living stage projects the authoritative value onto a procedural placard for each room. The placards are therefore current simulation UI, not annotations in the historical drawing.

No walkability data is generated from the historical SVG. Autonomous actors use the separate semantic graph:

  1. A browser rule selects a known destination anchor for work, collaboration, a break, meeting, delivery, departure, or D&D.
  2. The planner finds a bounded node route and the runtime reserves destination capacity for that actor.
  3. A portal backed by a closed structural door produces an explicit door-action request; movement waits for acceptance.
  4. Rejected doors, changed portal state, blocked reservations, or changed authority trigger bounded fallback or replanning.
  5. Arrival releases the reservation and commits the authoritative anchor and room.

Movement routes, pending door actions, estimates, open structural portals, and scheduler bookkeeping are checkpointed in livingRuntime for event replay. The living stage animates those browser-authored route nodes for the five autonomous founder visuals and hired Donna. Jesse's physical position is mapped to the nearest room anchor, and focused work requires that authoritative anchor to match the task target; ordinary first-person walking remains physical input.

The living stage registers collision for six workstations, the front desk, supply and break furniture, whiteboard, review wall, build terminal, printer, game table, visible delivery/D&D props, present character visuals, and physical artifacts. Semantic route obstacles and player collision are related checks but not interchangeable: a valid route cannot grant the player noclip, and a model cannot invent either representation.

Embodied campaign layer

The procedural stage includes:

  • five autonomous founder entities and six founder workstations; Jesse remains the embodied #player rather than a duplicate character;
  • optional Donna candidate and hired visuals with an authored threshold-to-reception route;
  • front desk, supply shelf, moving boxes, coffee/fridge/break furniture, whiteboard, review wall, printer, and room placards;
  • physical campaign artifacts with browser event provenance;
  • a delivery cart whose position, package, and indicator follow the authoritative exterior-delivery status;
  • a game table and D&D kit whose planned, active, and recap state follows Day 7 session events;
  • a build terminal that reports authoritative progress/risk and unlocks the fixed 4 by 3 Relay Run only after build completion.

None of those objects is placed by provider prose. DeepSeek can propose bounded conversation/work records, but browser code chooses IDs, semantic anchors, routes, collision, dimensions, materials, and interactions.

Authored SVG data

The SVG legend consumed by scripts/svg_to_floorplan.py is:

  • black strokes: walls
  • cyan strokes: glass
  • yellow squares: pillars
  • black quarter arcs: operable doors
  • red quarter arcs: locked doors
  • orange labeled rectangles: ceiling-light circuits
  • yellow labeled ellipses: light switches
  • purple circle: player spawn
  • path labeled demo-path: closed, noclip pre-entry camera route

The demo route preserves authored line and Bezier segments and is not wall geometry, regardless of its stroke color. Other SVG elements are ignored by the generator. After changing id.svg, run:

python3 scripts/svg_to_floorplan.py
pnpm run validate:shell

The generated coordinate extent is 35.05 m square. It is authored reconstruction space, not a surveyed suite measurement. Shell topology is derived from the closed wall, glass, and door network rather than room rectangles.

Vertical model

The runtime places the suite on floor 6 of a 7-storey tower. Each storey has a 2.7 m clear height and a 0.8 m structural/services zone, giving a 3.5 m floor-to-floor pitch. The sixth-floor walking surface is 17.5 m above ground, its ceiling is 20.2 m above ground, and the roof is 24.5 m above ground.

Source evidence

Fabien Sanglard's Game Engine Black Book: Doom drawing is the main historical layout reference. It was traced from the November 1993 A Visit to id Software footage and labels Jay, Conference Room, American and Shawn, Carmack, Romero, Donna, Kitchen, Storage, Game Room, Dave, Tom/Sandy, Kevin, and Adrian. It also marks a pool table, shelves, doors, and other furnishings.

The video provides visual evidence for workstations, game-box and CD shelves, the Apple IIe, NeXT hardware, arcade machines, and office finishes. The current abstract desks, fictional names, placards, and props communicate simulation activity; they do not reproduce those historical objects, labels, people, or media files.

Earlier reconstruction passes attempted extracted room regions and CC0 model assets. Those implementations were removed when the structural shell returned to authored geometry. The living-office layer uses original abstract browser geometry rather than restoring those historical or third-party models.

Surroundings and time

scripts/osm_to_world.py generates tour/world.json from the committed Town East Tower and South Mesquite Creek OSM extracts. It preserves projected metre scale, rotates the map about 7.779 degrees to align with the authored plan, and anchors Town East Tower to the SVG extent.

tour/src/world/create-world.ts renders generated roads, sidewalks, bridges, land-use areas, buildings, creek, trees, and street lamps. tour/src/world/traffic/ derives a road graph and animates a fixed pool of up to 500 procedural 1990s vehicles while preserving OSM one-way directions. Traffic density follows the authoritative campaign minute.

The sky uses a June 25, 1993 solar path at Town East Tower, a nearby lunar track, moving stars and clouds, and fog. The living-office state supplies the only runtime minute and weather projection. Campaign Day 1 begins at 9:00 AM and normally advances one simulated minute per real second; focus, sleep, the HUD, sky, and traffic all use that same clock.

Weather condition, temperature, precipitation, wind, and visibility map into atmosphere color, sky/cloud behavior, celestial visibility, lighting, fog, and bounded procedural rain. Daily music genomes similarly project the current campaign day into the browser-authored ambient score.

Uncertainties

  • The historical drawing has no survey dimensions; current dimensions come from the authored id.svg reconstruction.
  • The sixth-floor placement follows the Suite 666 interpretation and building research, not a recovered lease plan for the original office.
  • Historical furniture marks establish that objects existed, but not enough measured geometry to place them in the current runtime.
  • Fictional semantic room polygons and anchors are engineering overlays, not recovered lease-plan or historical furniture data.

Attribution for every external tour source is maintained in docs/tour/attributions.md and displayed where required at runtime.