**Language / Langue :** [[fr:yaml:hud|FR]] | **EN**
====== HUD - Panels (YAML) ======
HUD panels (''hud:'') display persistent information on the player screen: HP, score, mini-map, countdown, and so on.
HUD panels are visible on web and desktop. On Discord and terminal they are ignored; essential information should also appear in narrative text.
===== Positions =====
* ''top'', ''bottom'', ''left'', ''right''
* ''top-left'', ''top-right'', ''bottom-left'', ''bottom-right''
===== Base Syntax =====
rooms:
- id: fight_room
hud:
position: top-right
text: |
HP: v_hp_v / v_hpmax_v
Score: v_score_v
events:
- if: ~
do: "hp.-.3"
button: "Lose 3 HP"
text: "Ouch!"
hud:
position: top-right
text: "HP: v_hp_v / v_hpmax_v"
===== Size =====
^ Key ^ Effect ^
| ''size: 30'' | 30% of the game area along the main axis: height for top/bottom, width for left/right and corners. |
| ''width: 25'' | Explicit width as a percentage. |
| ''height: 15'' | Explicit height as a percentage. |
''width:'' and ''height:'' are independent; either can be used alone. Defaults depend on the position.
On mobile, side panels become top/bottom panels, so their size controls the height.
===== Style =====
hud:
position: top-right
size: 38
background: "#1a1a2e"
text-color: "#e0e0ff"
text: "Styled HUD"
===== Conditional Text =====
vars: {hp: 10, hpmax: 10}
hud:
position: top-right
text:
- if: "v_hp_v <= 0"
text: "DEAD"
- if: "v_hp_v <= 3"
text: "CRITICAL! HP: v_hp_v"
- text: "HP: v_hp_v / v_hpmax_v"
===== Split =====
''%%[[split]]%%'' divides the panel into two zones.
hud:
position: left
width: 28
text: |
Current zone
demo_split
[[split]]
HP: v_hp_v
Score: v_score_v
===== Several panels at once =====
hud:
- position: top-left
text: "❤️ v_hp_v HP"
- position: top-right
text: "⭐ v_score_v pts"
- position: bottom-right
text: "📍 Area: v_area_v"
===== Clear HUD =====
# On a room, choice or event:
clear-hud:
- all
To clear only one corner:
clear-hud:
- top-right
===== Video inside a HUD =====
The video syntax can be used inside the text of a panel:
hud:
position: top
text:
- "((loop;muted:https://example.com/video.mp4))"
A hosted video works here too. See [[en:yaml:medias|Sounds, images and videos]].
===== Room scope (4.17) =====
**Panels remain persistent by default**, until explicitly replaced or cleared. Add ''scope: room'' to clear a panel when leaving the room where it was placed:
hud:
position: top-left
scope: room
text: The map of this room.
This works on rooms, actions, choices and events, including global interactions: ownership is assigned to the room where the panel is actually placed. An action without movement, a refresh or navigation to the same room does not clear it. Moving, using the phone's Back button or ending the game removes it. Other persistent panels remain visible.
A panel declared on the room is placed again on each entry. An interaction-created panel waits for that interaction to run again. Replaced panels are not automatically restored. Saves preserve scope and room ownership; older panels without scope retain their persistent behaviour.
In the editor, tick **Clear when leaving the room** on the panel. The box is unchecked by default. Scope is optional in [[en:yaml:modeles|inline models]] too; ''grille_2d'' requests it explicitly. French syntax: ''portee: salle''.
===== Percentage and alignment in a panel =====
Alongside ''%%[[split]]%%'', ''%%[[split:40]]%%'' gives 40% to the previous zone. The split follows the panel axis. Blocks such as ''%%[[align:center]]text[[/align]]%%'' also accept ''left'' / ''right'', ''gauche'' / ''centre'' / ''droite'', or a text variable ''t_cote_t''.
title: 'Wiki 4.17: HUD'
vars:
pv: 10
rooms:
- id: atelier
text: A chest.
hud:
position: top
text: |
[[align:center]]Map.[[/align]]
[[split:40]]
HP: v_pv_v
choices:
- command: rester
button: Stay
to: atelier