Skip to content

Peer-to-peer sharing

Players share card images with each other directly, device to device, over WebRTC data channels: the same technology browsers use for calls, here carrying files. Broccolideck’s service only introduces the players: it lists who is sharing which games and passes the connection offer and answer between two of them. The images never pass through the service, and nothing is hosted anywhere: what players have is what there is.

To use it: Settings → General → P2P image sharing. That is all. Nothing to sign in to; sharing is independent of online play and its account.

Each game ships a catalog: the name of every image it can show, and the SHA-256 of each genuine variant of it. The app asks other players for an image by those hashes and accepts only bytes that hash to one of them, checked as they arrive. So:

  • a player cannot substitute a picture for a card, altered or otherwise;
  • the app cannot be made to fetch anything that is not a catalogued card image;
  • an image you fetched from your own server that is not in the catalog (custom art) is shown to you, but is never given to others.

A device that shares is listed by the service for the games it has images of, with its displayed name, and connects directly to other players’ devices. That shows your device’s network addresses to the players it connects with, as any direct connection does, and the service sees your address to list you. The privacy policy has the details; the setting says the same in short. Turn sharing off and the listing is removed at once.

  • Sharing runs while the app is open, and stops when it is closed or put in the background on a phone.
  • It never shares on a mobile (cellular) or metered connection, and downloads continue without it.
  • Up to four other players are served at once; a connection idle for a minute is closed.
  • An image you ask for that no player has is fetched from your image server, if you named one; a request that nobody answers within twenty seconds goes there too.

Two devices that are both behind strict (symmetric) NATs cannot connect to each other directly, and there is no relay: those players fetch from their image server, or from players who can be reached. A home connection is almost always fine.