DKR-R v1.0.9 - Spectators Playtest 3

INVITATIONS YOU CAN ACTUALLY USE

Lobby invitations now have Accept, Decline and Later buttons.

Accept joins from the launcher. If a game or another lobby is open, it asks
before leaving. Keep playing cancels without stopping your game. Leave and
join stops the old game normally, returns to the launcher, then joins your
friend. You don't need to copy a code or find the lobby manually.

Already-saved progress is kept. This does not save your exact position in a
race: progress since the game's last save may be lost. Local multiplayer is
stopped for everyone on that machine. Leaving an online racing place follows
the existing match departure rules; leaving as host closes the old lobby.
There is no host migration.

The app waits for the old runtime, renderer and save writers to finish before
joining. If saving or shutdown fails, it stays out of the new lobby and tells
you what happened. Invitations are checked again after returning, so an
expired invitation won't silently send you somewhere else.

Use the normal Open / Close DKR-R Menu shortcut to focus the visible invite.
The notification shows your keyboard/controller binding. A confirms inside
the prompt and B/Escape goes back. An invitation appearing never takes over
the controls, and the game waits for the response buttons to be released
before using them as racing input again.

Later hides the notification without declining it. It stays in Open Lobbies
until it expires. While you're in another lobby, the online page also lists
incoming invitations. Decline tells the sender you're not joining.

You can choose Racer or Watch Race. The destination host still decides if
spectators are allowed. An invitation cannot override that choice or bypass
mod-download/code permissions. The sender sees Accepted only once you've
actually been admitted to the lobby.

Cancel joining during shutdown stops the follow-on join, not shutdown itself.
Once the old game has stopped it isn't automatically restarted. A failed
join leaves you in the launcher so you can decide what to do next.

SPECTATORS AND TAKING TURNS

Everyone needs this exact build. Do not mix playtests.

In DKR-R Online / Host settings, turn Spectator-capable lobby on and select
Auto or Experimental Rollback. This host-only choice is remembered. Friends
choose Racer or Watch Race when joining. There are up to four racers and
eight spectators; watchers don't get a controller port.

Spectators can use All splits, Follow player or T.T.-style director. D-pad
left/right chooses a racer and C-up changes the camera. The director uses
cinematic views for original vehicles, with automatic full-screen racer
cameras when GPU custom cars are installed. Unsupported views keep the
native camera. Friends can join as spectators after a race starts.

Use the online panel to request a racing place or offer yours to a spectator.
The host approves the swap. The replacement takes over the same racer, car
and race progress after an agreed confirmed handover. The outgoing player
becomes a spectator, not an input relay. The host can hand over their racing
place but must stay connected to host the lobby.

Watching doesn't write the host's progress into your personal save, write
your personal Paks or award achievements for another player's racing.

YOUR PLAYTEST CHECKLIST

Try accepting from the launcher, an offline game, local multiplayer, another
online race and a spectator session. Check the host warning, accepting with
a controller, Later/Decline, expired/cancelled invites, modded lobbies and
failed connections. Check save progress and held buttons after cancelling.
Windows/Linux cross-play, late spectators and player swaps remain useful
checks too. Keep host/client runtime.log files if something goes wrong.

This package was compiled and statically inspected. The coding agent did
not launch the game, mods, tests or AppImage. Gameplay testing is yours.
This is a playtest, not a production release. It has not been published to
GitHub or signed for automatic updating.
