DKR-R v1.0.9 - Spectators Playtest 2

Right, you can now have more than four people in a lobby without giving
everyone a controller port. There are still up to four racers, with another
eight places for spectators. This uses Quick Join and Experimental Rollback.

Everyone needs this exact build. Please do not mix it with the older detail
playtests or a release build.

GETTING A LOBBY GOING

1. In DKR-R Online / Host settings, turn Spectator-capable lobby on and use
   Auto or Experimental Rollback. Create the lobby as normal. Only the host
   controls this setting, and their choice is remembered for future lobbies.
2. Friends choose Racer or Watch Race before joining with your code. There
   is also a joining-role selector above the Open Lobbies list.
3. The host approves people as normal. Mod downloads and code permissions
   still apply. Spectators need the same ROM, build and session mods.
4. Only racers need to ready up. The host then starts the game.

While waiting, the host can use Make spectator or Make racer to change the
lineup. Making someone a racer needs a free racing place. Changing roles
clears Ready so everyone can check the new lineup.

WATCHING

Spectators have three camera choices in the online panel:

- All splits: the normal split-screen view of the match.
- Follow player: choose a racer and watch their view in full screen.
- T.T.-style director: automatically follows different racers. Original
  vehicles also get a separate cinematic camera, with fresh scenery drawing
  and static-wall checks. With GPU-rendered custom cars it uses automatic
  full-screen racer cameras instead, keeping their cars, seating and
  animations intact. Scripted or unsupported views keep the native camera.

The director never moves the racers or changes the race's camera state.

D-pad left/right selects a racer and C-up changes the camera mode. Open
the usual launcher/overlay shortcut (F1 on the keyboard) for camera and
lobby controls. Spectator buttons are not sent as racing input and a
spectator does not occupy a racing controller port.

Friends can join as spectators after a race starts. They load a confirmed
checkpoint, catch up, then watch. A slow spectator is not part of racing
input or scene-change agreements. If they fall too far behind, they request
a fresh viewing checkpoint.

TAKING TURNS WITHOUT RESTARTING

A racer can offer their place to a spectator in the online panel. A
spectator can also request a racing place. The host approves the request
under Player swaps.

The game arranges an exact confirmed handover point, checks the racing
peers agree, and brings the replacement to that state before transferring
control. There can be a short pause while that finishes.

The replacement takes over the existing racer, car and race progress.
Character and vehicle changes wait for the normal selection screens.
The outgoing racer becomes a spectator; their PC is not kept as a hidden
input relay. Old input cannot control the replacement's car.

The host can hand over their own racing place but must stay connected to
keep hosting. There is no host migration.

The host can cancel a pending swap. A timed-out swap is cancelled, and a
scene change cancels it rather than transplanting half a load.

SAVES AND PROGRESS

Watching does not install the host's save into your personal save, write
your controller Paks or award achievements for someone else's racing.
The host keeps the communal online save, Paks and course records. Joining
clients use the session's in-memory copy. Offline saves are not used as
spectator storage.

A spectator leaving does not stop racing. A required racer leaving returns
the match safely to the lobby. Closing the host closes the lobby. The host
can also return everyone to the lobby without closing it.

LOBBIES WITHOUT SPECTATORS

Turn Spectator-capable lobby off in Host settings before creating a lobby
without spectators. Friends choose Racer and join normally; there is no
capability checkbox on the join card. Choosing Watch Race cannot override
the host's choice and gives a clear message if spectators are disabled.
The older backend remains available when spectator support is off.

PLAYTEST CHECKLIST

Please try two, three and four racers, Windows/Linux cross-play, joining
spectators before and during racing, all cameras, modded tracks/characters/
cars, trophies, racer swaps, handing over the host's place and leaving
after a handover. Check personal saves and achievements stay unchanged
while watching. Keep host/client runtime.log files if something goes wrong.

This package has been compiled and inspected. The coding agent has not
launched the game, mods, tests or AppImage. Gameplay/hardware acceptance is
yours. This is a playtest, not a tested production release. It has not been
published to GitHub or signed for automatic updating.
