Knowledge-based discourse

Five GameShare patent applications were published on Xmas Day. There’s a lot of content therefore I’ll only share some highlights below. Please refer to the original docs for complete info: US20250387700, US20250387701, US20250387702, US20250387703, and US20250387704.

GameShare and GameChat integration

  • Not all users in a GameShare session need to be in the same GameChat group (img 1 below)
  • Likewise, a GameChat group can have users belong to different GameShare sessions
    • E.g., kart and poker sessions in one group (img 2)
  • Certain image streams are blocked for gameplay reasons
    • E.g., kart players can see all poker streams, but poker players can’t see other poker streams (imgs 3-4)

How GameShare transmits image stream

  • For local GameShare, the host sends an image stream to each guest directly (P2P)
  • For online GameShare, if each guest has their own screen image, the streaming is also P2P (img 1 below)
  • For online GameShare, if all guests see a common screen image:
    • When ≤3 guests, the host sends individual P2P streams (img 2)
    • When >3 guests, the host sends one stream to a GameShare server, which mediates it to all guests (img 3)

How GameShare transmits player input

  • Each guest’s control input is sent P2P to the host, not server-mediated
  • Gamepad, mouse, and motion inputs are queued every 5 ms; touch input is every 4 ms
  • For online GameShare, a guest’s control data is sent to the host immediately (avoid network delay)
  • For local GameShare, a guest’s control data queue is sent to the host once per frame time (more efficient)
    • E.g., if GameShare frame rate = 60 fps, frame time = 16.7 ms

GameShare resolution and frame rate

  • There isn’t a universal GameShare resolution or frame rate; they are set by each game
  • If GameShare resolution < host resolution, the host scales down the image before streaming it
    • E.g., resize from 1080p to 720p
  • The GameShare frame rate can be different from the host frame rate
    • E.g., host runs at 60 fps, but streams 30 fps to guests

How GameShare synchronizes gameplay

  • A “frame number” {n} is attached to each image frame and control data
  • This is a reference number not actual frame number, since the host and GameShare may have different frame rates
  • By matching the {n} of control inputs from all players, the game can synchronize gameplay despite some network delay
  • If a guest’s network delay > tolerance threshold, the game goes to the next frame without waiting for that input (last received control data may be used)

How GameShare handles V-sync

  • Conventionally, the GPU begins rendering the next frame when the screen refreshes; GameShare host also works this way
  • This can be an issue for GameShare guests, if the streamed image arrives after the rendering already started (img 1 below)
  • A GameShare guest’s GPU, however, doesn’t need to render the gameplay but only a simple image received from the host
  • So the guest device can wait to render the next frame as late as possible, thus increasing the likelihood of receiving the newest image (img 2)

[Originally posted on 2026-01-04 Pacific Time]