Tutorial — Captions UI
Augmented Traveler local tutorial. Back to Unreal — Tutorials · monologue captions: Tutorial — Sequencer for Monologues · live answers: Tutorial — Conversation Client Plugin
How we show captions for everything the figure says:
- authored monologues: timed text we know in advance;
- live answers: text that arrives as it is generated.
Captions are on by default. Museums, schools and the ADA expect it, and many visitors are in noisy rooms.
Draft. Test with the UX and accessibility designer and with deaf and hard-of-hearing visitors before opening.
1. Standards we follow
| Source | What we take |
|---|---|
| WCAG 2.2 | Captions for recorded media (SC 1.2.2, Level A) and for live media (SC 1.2.4, Level AA) |
| FCC caption quality (47 CFR 79.1) | Four tests: accurate, synchronous, complete, well-placed (never covering faces) |
| DCMP Captioning Key | At most 2 lines; each caption on screen 1.33–6 s; white medium sans-serif with a shadow on a translucent box; mixed case; bottom placement; reading speed 130–160 words per minute by audience |
| BBC subtitle guidelines (secondary summary) | 2 lines; line length up to about 68% of a 16:9 width; 160–180 words per minute |
| Smithsonian Guidelines for Accessible Exhibition Design | Open (always-on) captions preferred; 70% contrast; sans-serif or simple serif |
| Meta VR accessibility guidance | In XR: about 1 m away (or half the far-field distance) or head-locked; top or bottom of the central 40°; up to 32 characters per row, 2 rows; text scale 50–200%; background box |
| W3C XR Accessibility User Requirements | Support captions, and let them be customised |
2. Our style
| Setting | Kiosk (life-size display) | Headsets | Phones / web |
|---|---|---|---|
| Position | Bottom third, beside the figure, not over the face or hands | About 1 m in front, lower field, gently follows the head | Bottom, above the controls |
| Lines | 2 max | 2 max, 32 characters per row | 2 max |
| Font | Clear sans-serif (the studio caption font), medium weight | Same, larger | Same |
| Size | Readable from 2.5 m (test on the actual screen) | Adjustable 50–200% | System text size respected |
| Colour | White or near-white on a 70–80% dark translucent box | Same | Same |
| Speaker label | "Maria Mitchell:" on the first caption of each turn; "You asked:" for the visitor's question | Same | Same |
| Sound cues | [lamp hisses], [telescope creaks] only when meaningful | Same | Same |
Period spelling: caption text follows the historian-approved script exactly, including period words. Don't modernise.
3. Authored monologues: the Subtitles and Closed Captions plugin
- Enable Subtitles and Closed Captions (Beta in 5.8).
- Make a Subtitle Asset per monologue (
SUB_<Figure>_Monologue_<NN>). Import the timed script as SRT, or type the entries (start offset and duration). - Add the subtitle track to the Level Sequence (Tutorial — Sequencer for Monologues), so captions stay locked to the audio.
- Style the plugin's display widget (a UMG TextBlock set in Project Settings) to match section 2.
- 5.8 supports per-platform display overrides; use one for headsets.
- Check timing against the audio.
- No caption under 1.33 s or over 6 s.
- Split long sentences at natural phrase breaks, never mid-name.
4. Live answers: WBP_AT_Captions
The conversation service sends caption chunks with timing (Tutorial — Conversation Client Plugin). They go to a UMG widget:
WBP_AT_Captionshas a container with up to two lines, a speaker label and a dark translucent background.- Reveal text in phrases, in time with the audio. Don't show it word by word, which is tiring to read, and don't show it before it is spoken.
- When the next phrase doesn't fit, roll up (the old line slides up and fades out over about 0.5 s).
- The visitor's question shows briefly ("You asked: …") when the transcript arrives, then clears when the answer starts.
- Refusals and redirects are captioned like any other line.
- In XR: render the widget in a Widget Component or an OpenXR stereo layer placed per section 2. Stereo layers can draw behind the scene in 5.8, which keeps captions crisp (Tutorial — OpenXR Headset Builds).
5. Settings for visitors
A small accessibility menu (kiosk corner button; headset wrist menu):
- captions on/off (default on);
- text size (3 steps);
- background opacity;
- the language, if translations exist later.
Remember the choice for the session only; reset it for the next visitor.
6. Check before opening
Sources
- W3C, WCAG 2.2 Understanding SC 1.2.2: https://www.w3.org/WAI/WCAG22/Understanding/captions-prerecorded.html
- eCFR, 47 CFR 79.1 (caption quality): https://www.ecfr.gov/current/title-47/chapter-I/subchapter-C/part-79/subpart-A/section-79.1
- DCMP Captioning Key (presentation rate; appearance): https://dcmp.org/learn/captioningkey/601 · https://dcmp.org/learn/captioningkey/597
- BBC subtitle guidelines summary (Clevercast): https://www.clevercast.com/bbc-subtitling-guidelines/ · original: https://www.bbc.co.uk/accessibility/forproducts/guides/subtitles/
- Smithsonian Guidelines for Accessible Exhibition Design (PDF): https://www.thc.texas.gov/public/upload/publications/Smithsonian Guidelines for accessible design.pdf
- Meta, VR accessibility design: https://developers.meta.com/horizon/design/accessibility/
- Meta, VRC.Quest.Accessibility.1: https://developers.meta.com/horizon/resources/vrc-quest-accessibility-1/
- W3C, XR Accessibility User Requirements: https://www.w3.org/TR/xaur/
- Epic, Subtitles and Closed Captions plugin: https://dev.epicgames.com/documentation/unreal-engine/subtitles-and-closed-captions-plugin-in-unreal-engine
- Epic, UE 5.8 release notes: https://dev.epicgames.com/documentation/unreal-engine/unreal-engine-5-8-release-notes
- Full list: Sources — 2026-09-20