Game Control (LL 26.5) part 1: protocol support -- GameControlData message, GameControlEnabled feature, PERMISSION_GAME_CONTROL #1202

Closed
opened 2026-10-28 16:16:49 +00:00 by sky_line · 1 comment
Owner

LL's 26.5 viewer adds Game Control: controller and keyboard input sent to the region, so scripts get a new LSL event, game_control(key id, integer button_levels, list axes) (plus llGetGameControlMode / ModeAxes / ModeButtons). Without the protocol pieces, scripts using it never get input from Slipstream.

Scope

  • Message template (scripts/messages/message_template.msg): add GameControlData (High 33, NotTrusted, Zerocoded). Blocks:

    • AgentData (+ Packet U8, ActionMode U8)
    • Axes S16, Buttons U32
    • ModeAxes S16, ModeButtons U32

    Bump the header's High count. Keep the old GameControlInput (High 32, now deprecated upstream) unless it conflicts.

  • Prehash strings (indra/llmessage/message_prehash.{h,cpp}): GameControlData, ActionMode, Axes, ModeAxes, ModeButtons.

  • SimulatorFeatures: add a gameControlEnabled() accessor next to the existing feature accessors (indra/newview/llviewerregion.h). The viewer only ever sends on regions advertising GameControlEnabled.

  • Script permission: bit 20, PERMISSION_GAME_CONTROL ("UseGameControlInputs").

    • Extend indra/newview/llscriptruntimeperms.h (stops at 19 today) and the question dialog text in strings.xml.
    • Attachments and seated scripts get it automatically on the server; the viewer just has to render requests for it properly.
  • Script editor: the new LSL keywords (event, functions, constant) in the keywords / LSL definitions.

Not in scope

Sending input: part 2. Local controller driving and UI: part 3.

Check first

Log a few main-grid regions' SimulatorFeatures to see whether GameControlEnabled exists on Agni yet.

Policy: pin to the 26.5 GameControlData format (the protocol changed during LL's development). Writing the template entries from the spec is fine now. Copying LL code waits for 26.5 RC or release, with credit.

Research (local): research/GAME_CONTROL_2026-10-28.md. Upstream: LL viewer PR secondlife/viewer#6202 ("Game Control Alpha", merged to release/26.5 on 2026-10-17); wiki https://wiki.secondlife.com/wiki/LSL_Game_Control_Beta and https://wiki.secondlife.com/wiki/Game_control.

LL's 26.5 viewer adds **Game Control**: controller and keyboard input sent to the region, so scripts get a new LSL event, `game_control(key id, integer button_levels, list axes)` (plus llGetGameControlMode / ModeAxes / ModeButtons). Without the protocol pieces, scripts using it never get input from Slipstream. ## Scope - **Message template** (`scripts/messages/message_template.msg`): add `GameControlData` (High 33, NotTrusted, Zerocoded). Blocks: - AgentData (+ Packet U8, ActionMode U8) - Axes S16, Buttons U32 - ModeAxes S16, ModeButtons U32 Bump the header's High count. Keep the old `GameControlInput` (High 32, now deprecated upstream) unless it conflicts. - **Prehash strings** (`indra/llmessage/message_prehash.{h,cpp}`): GameControlData, ActionMode, Axes, ModeAxes, ModeButtons. - **SimulatorFeatures:** add a `gameControlEnabled()` accessor next to the existing feature accessors (`indra/newview/llviewerregion.h`). The viewer only ever sends on regions advertising `GameControlEnabled`. - **Script permission:** bit 20, `PERMISSION_GAME_CONTROL` ("UseGameControlInputs"). - Extend `indra/newview/llscriptruntimeperms.h` (stops at 19 today) and the question dialog text in strings.xml. - Attachments and seated scripts get it automatically on the server; the viewer just has to render requests for it properly. - **Script editor:** the new LSL keywords (event, functions, constant) in the keywords / LSL definitions. ## Not in scope Sending input: part 2. Local controller driving and UI: part 3. ## Check first Log a few main-grid regions' SimulatorFeatures to see whether `GameControlEnabled` exists on Agni yet. **Policy:** pin to the 26.5 `GameControlData` format (the protocol changed during LL's development). Writing the template entries from the spec is fine now. Copying LL code waits for 26.5 RC or release, with credit. Research (local): research/GAME_CONTROL_2026-10-28.md. Upstream: LL viewer PR secondlife/viewer#6202 ("Game Control Alpha", merged to release/26.5 on 2026-10-17); wiki https://wiki.secondlife.com/wiki/LSL_Game_Control_Beta and https://wiki.secondlife.com/wiki/Game_control.
sky_line added this to the Slipstream project 2026-10-28 16:16:49 +00:00
Author
Owner

Shipped in 1.5.0 Beta 5 (2026-10-29).

Shipped in **1.5.0 Beta 5** (2026-10-29).
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#1202
No description provided.