Shield Protocol¶
Shield Protocol is an example GVA external application that demonstrates the external application interface while providing an entertaining 80s-style Breakout game for operator training and recreation.

Gameplay in action:

Overview¶
Shield Protocol is a defense-themed twist on the classic Breakout bat-and-ball game. The player operates a defense shield platform to intercept threats by bouncing a kinetic interceptor ball upward to destroy descending enemy blocks.
It showcases:
- External application registration via LDM10 DDS
- Display rendering via Qt Quick/QML
- Soft key input handling (F19=Left, F20=Right, F13=Fire, F18=Enter)
- Game state management
- AdLib-style FM synthesized sound effects for authentic 80s arcade experience
- Vector graphics rendering with Qt Quick Shapes
Gameplay¶
Objective¶
Protect your defense line by bouncing the ball off your shield to destroy the descending blocks. Clear all blocks to advance to the next wave. Don't let the ball pass your shield!
Controls¶
| Key | Function |
|---|---|
| ← / A | Move shield left |
| → / D | Move shield right |
| Space | Launch ball |
| Enter | Start game / Pause |
| Escape / P | Toggle pause |
| F / F11 | Toggle fullscreen |
HMI Soft Keys (when running as external app)¶
| Soft Key | Function |
|---|---|
| F19 (▲) | Move left |
| F20 (▼) | Move right |
| F13 (Up) | Launch ball |
| F18 (Enter) | Start / Pause |
Scoring¶
| Action | Points |
|---|---|
| Block destroyed | 10 |
| Multi-hit combo | 10 × combo multiplier |
| Wave bonus | Wave × 100 |
| Power-up collected | Varies |
Power-Ups¶
Power-ups occasionally drop from destroyed blocks:
| Power-Up | Effect |
|---|---|
| Wide Shield | Temporarily increases shield width |
| Multi-Ball | Spawns additional balls |
| Slow Ball | Reduces ball speed |
| Fast Ball | Increases ball speed |
Game Architecture¶
Application Flow¶
Class Structure¶
Running Shield Protocol¶
Standalone Mode¶
Run the game directly:
The game starts in fullscreen mode. Press F or F11 to toggle fullscreen.
With GVA HMI¶
Run the full GVA stack with Shield Protocol as an external application:
# Terminal 1: Start registry
./build/bin/registry
# Terminal 2: Start HMI (BMS functional area)
./build/bin/gva-qt6-hmi -a 8
# Terminal 3: Start Shield Protocol
./build/bin/gva-qt6-app-shield-protocol
Or use the launcher script:
When running with the HMI:
- Shield Protocol registers with the platform registry
- The HMI receives the Third_Party_Session and maps it to the BMS display area
- Use the HMI bezel buttons (F19/F20) or physical keyboard to control the game
- Game alarms appear in the HMI alarm display
Building¶
Shield Protocol is built as part of the main build:
Dependencies¶
- Qt6 Core, Gui, Qml, Quick, QuickControls2
- Qt6 Multimedia (for AdLib sound synthesis)
- LDM10 library (for DDS registration)
- AdLib Synth library (included)
DDS Topics¶
Shield Protocol publishes and subscribes to the following LDM10 topics:
Published¶
| Topic | Purpose |
|---|---|
C_Configured_Platform_With_Registry_requestResourceId |
Request resource ID |
C_Third_Party_Session |
Register display extension session |
C_Hard_Button_Label |
Set soft key labels |
C_Configured_Platform_setOperatingMode |
Set operational mode |
C_Alarm |
Game event alarms |
C_Alarm_Condition |
Alarm conditions |
Subscribed¶
| Topic | Purpose |
|---|---|
C_Registered_Platform_Resource_supplyResourceId |
Receive resource ID |
C_Hard_Button_Event |
Receive soft key events |
C_Missing_Resource_Mapping_mapDescriptor |
Role assignment |
Sound Effects¶
Shield Protocol uses the AdLib Synth library for authentic 80s-style FM synthesized sounds:
| Event | Sound |
|---|---|
| Block destroyed | Short percussive hit |
| Shield bounce | Shield activation sound |
| Ball lost | Damage/failure sound |
| Power-up collected | Rising arpeggio |
| Wave complete | Victory fanfare |
| Game over | Descending jingle |
Background music plays during gameplay using procedurally generated FM synthesis.