Skip to content

Conversation

@psalkowski
Copy link

@psalkowski psalkowski commented Jan 7, 2026

Summary

Adds Xbox split-screen (couch co-op) support, allowing multiple players to join from a single Xbox console.

Background

This feature has been requested by the community (see Reddit, #750, #1459, #2521). Previous attempts were made in #976 and #3109 but were never merged.

Implementation

Sub-client handling

  • Enabled SubClientLoginPacket processing (removed from ILLEGAL_SERIALIZER)
  • Added setupSubClientSession() in LoginEncryptionUtils to authenticate sub-clients
  • Sub-clients inherit locale and server address from parent session (not included in their JWT)

Disconnect detection

  • Added DisconnectPacket handler to properly detect when sub-client leaves split-screen
  • Sub-clients share the upstream connection with parent, so we don't close it on sub-client disconnect

Reconnect handling

  • When sub-client rejoins after disconnect, CloudburstMC reuses the same BedrockServerSession
  • We detect closed session and create a fresh GeyserSession for clean rejoin

Session tracking

  • Added parentSession field to track sub-client relationships
  • Added sessionByXuid() lookup in SessionManager

Testing

Tested on Xbox Series X with split-screen:

  • Two players joining simultaneously
  • Sub-client leaving and rejoining
  • Parent disconnecting (sub-clients also disconnect)
  • Server transfers between backend servers

Download

Binary file can be found here: https://github.com/psalkowski/Geyser/releases/download/v2.9.2-splitscreen/Geyser-Velocity-2.9.2-splitscreen.jar

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant