# 2. Blockout Workflow and Metrics Part of [[ProBuilder Gray-Boxing and Landmarks]]. Prev: [[1. ProBuilder Install and Mental Model]]. Next: [[3. Weenies Landmarks and Lighting as Wayfinding]]. The gym in [[5. Gray-Box Metrics Gym]] answers "can I jump this?" This workflow answers "is this a *level*?" You still start from a `MovementMetrics` asset ([[2. Movement Metrics Asset]]). You do not eyeball a 1.8 m door. ## 2.1 Order of work 1. **Metrics first.** Height, radius, walk/run, jump height and distance, step, slope - already derived on the asset. 2. **Gym second.** If the character cannot clear an 100% jump in the gym, do not design a plaza. 3. **Plan on paper.** A top-down of rooms, a weenie, fingers, and calm spots (Level 9 mapping). A beat-chart row (part 4) if the level has a pace. 4. **Blockout in ProBuilder.** Floors and walls at real meters. Color, don't texture. 5. **Play it.** Walk, jump, look. If it looks walkable, it must be walkable - fix collision or the silhouette, not the camera. 6. **Bake a NavMesh** ([[NavMesh in Unity 6 (AI Navigation 2.x)]]) as a second opinion on reachability. 7. **Art last.** Replace pieces, keep the volumes. "Leave the training level for last" (Level 9) still applies: do not gray-box the tutorial corridor until the verbs are real. ## 2.2 A vertex-color language Agree a palette and stick to it. Vertex color is cheap and survives a screenshot in a critique. (URP samples must be imported or the colors will not shade correctly.) | Color | Meaning | Typical pieces | |---|---|---| | Mid gray | Walkable floor | Planes, plaza slabs | | Dark gray | Wall / solid | Blocking volumes | | Yellow / gold | Landmark, weenie, goal | Tower, bell, unique silhouette | | Cyan | Interact / door / key-gate | Door frames, switches | | Red | Hazard / damage | Traps, lava, low fences that hurt | | Green | Cover / climb / safe nook | Low walls, alcoves, checkpoints | | Magenta | Backstage / out of play | Kill volumes, unseen blockers | If it is yellow, the player should be able to get there or clearly understand why not. A yellow ledge they cannot reach violates "if it looks like the player can go there, then they should be able to." ## 2.3 Dimensions from metrics Use the asset, not memory. Examples for a default `MovementMetrics` (height 1.8, radius 0.3, step 0.35, jumpHeight 1.25, runSpeed 5.5): | Piece | Starting size | Why | |---|---|---| | Door / portal | Width >= 2 * radius + margin (about 1.0-1.2 m), height >= height + 0.15 | The capsule must not scrape | | Stair step | Height <= `stepHeight` if it is meant to be walked; otherwise it is a jump | `GenerateStair` step count should land on that | | Cover wall | About 0.9-1.1 m for crouch-looking cover; full height for a hard block | Silhouette is the rule | | Gap | 80 / 100 / 120% of `JumpDistance(runSpeed)` | Same language as the gym | | Ledge | <= `MaxLedge` | Derived on the asset | | Weenie | Tall enough to clear the surrounding roofline from the entrance camera | Part 3 | Helper you can call from an Editor builder: ```csharp using UnityEngine; public static class MetricsLayout { public static Vector3 DoorSize(MovementMetrics m, float depth = 0.4f, float widthMargin = 0.4f, float heightMargin = 0.15f) { return new Vector3(m.radius * 2f + widthMargin, m.height + heightMargin, depth); } public static float ComfortableDoorWidth(MovementMetrics m) => m.radius * 2f + 0.4f; } ``` When you `GenerateStair`, set `size.y` to the floor-to-floor height you actually need, pick `steps` so `size.y / steps <= m.stepHeight` for a walkable stair, and `buildSides: true` if the player could otherwise walk into the stair mesh. ## 2.4 Kitbash, don't sculpt Build a small prefab kit: 4 m wall, 4 m floor tile, stair flight, door frame, 1 m cover, a cone weenie. Stamp and tweak. This is Level 9 "re-using re-use" and the Flyweight instinct from [[Game Programming Patterns (Review)]]. Unique sculptures belong after the layout is fun. Parent the kit under a `Blockout` root so you can hide it when art arrives, and keep a `Blockout_Collision` layer if art will eventually carry its own colliders. ## 2.5 Exercise Rebuild one gym gap and one gym stair as ProBuilder pieces using only `MovementMetrics` numbers. Play them with the same controller. If they feel different from the primitive gym, your scale or collider is wrong - fix that before you design a level. ## Sources - `ShapeGenerator.GenerateStair` / `GenerateCube` (6.1.4): https://docs.unity3d.com/Packages/[email protected]/api/UnityEngine.ProBuilder.ShapeGenerator.html - [[2. Movement Metrics Asset]] - [[5. Gray-Box Metrics Gym]]