---
title: How to build a VR training scenario with a safety checklist
product: Advanced Framework Pro
version: 2.0
engine: Unreal Engine 5.8
updated: 2026-11-01
canonical: https://docs.human-codeable.com/workflows/vr-training-checklist.html
---

# How to build a VR training scenario with a safety checklist

Advanced Framework Pro covers the parts of a training scenario that are the same in every scenario: walking and teleporting, grabbing tools with proper hand poses, pressing and touching, checklists and instructions in front of the trainee, notifications, snapping parts together, and an instructor view. You write the procedure; the framework supplies the hands, the UI and the platforms. This page maps a typical scenario to the modules.

## At a glance

```
Checkpoint station actor
├─ trigger box            → FL_PawnUI › Pawn UI Add Element (checklist WBP_Base, DA_PawnUIPosition_Near)
├─ BPC_State_Boolean "Open"   → drives the barrier arm
└─ on completion          → BFL_Notifications › Show Default Notification
Tool rack:      BPC_Spawner, Spawn Class = tool with BPC_Interaction_Grip_Pickup + hand pose
Assembly step:  BPC_Connector_Anchor on the part, BPC_Anchor on the target → attach event advances
Button step:    BPC_Interaction_Overlap (+ BPC_Interaction_Select for desktop)
Level:          PDA_Level per module.   Instructor: AFM_Replication + BPC_Spectator
```

## A scenario as the framework sees it

Take a safety induction: the trainee puts on protective gear, confirms it on a checklist, passes a barrier into the work area, picks up the right tool and performs a few steps in order.

| Step in the scenario | Plugin | What you use |
|---|---|---|
| A zone that opens the checklist when entered | `AFS_UI_Pawn` | a trigger on the zone calls **Pawn UI Add Element** with the checklist widget |
| The checklist itself | `AFS_UI` | a page from the design system; a button group with checkboxes |
| Barrier, lamp, progress | `AFM_State` | boolean and float state components; the barrier arm reads them |
| "You may enter" | `AFS_UI_Notifications` | **Show Default Notification** with the success colour |
| Pick up a tool | `AFS_UX_Grip` | `BPC_Interaction_Grip_Pickup` with grip sockets and a hand pose from Hand Pose Studio |
| Tools on demand, no clutter | `AFM_Spawner` | a rack that hands out fresh copies, released ones despawn |
| Put a part in its place | `AFS_Core_Snapping` | a keyed connector and anchor; the anchor's attach event advances the step |
| Press a physical button | `AFS_UX_Overlap` | fingertip overlap, with a select interaction for desktop |
| Name the parts of a machine | `AFS_UI_Labels` | `BPC_Label_Simple` with a leader line, switched on at the step that needs it |
| Walk the site | `AFS_UX_Teleporter`, `AFS_UX_Locomotion` | teleport areas on the walkable floor |
| Several stations or modules | `AFS_Core_Loading` | one `PDA_Level` per module, a lobby in between |
| Instructor watches or joins | `AFM_Replication`, `AFM_Spectator` | a networked session; the instructor's screen on a smooth follow camera |
| Same course on desktop for refreshers | `AFS_Core_Pawn` | the desktop and mobile pawns, chosen by the level's data asset |

## How it fits together

1. Build each station as an actor with its interactions and state components. Keep the step logic on the station; the trainee's pawn knows nothing about the procedure.
2. Put instructions in pawn UI, at the near distance when the trainee must tick something, at the far distance when they only read. Use a notification for confirmations that need no answer and a popup for a decision.
3. Use snapping anchors and overlap buttons as the step sensors; their events are what advance the procedure.
4. Describe the module in a `PDA_Level` and test on desktop first, where iteration is fastest, then in VR. The content is the same.
5. For instructor-led sessions, replicate the stations and give the instructor the spectator camera.

## What the framework does not do

It has no scoring, no LMS or SCORM export and no scenario editor. Those stay in the project.

## Where to look

`Map_Examples_UI_PawnUI` is exactly the checkpoint above: a zone, a checklist, a barrier that opens. `Map_Examples_Snapping` and `Map_Examples_Spawner` cover the tool and assembly steps.
