# 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]]