Card images
Broccolideck includes no card art. Every card is drawn from its data, with a consistent frame per game, so every game is complete and playable as installed. When you have images of the cards, the app shows them instead of the drawings, full size on hover and on the table.
There are two ways to supply images, and they work together:
- Peer-to-peer sharing: the easy way. Turn it on in Settings and the app fetches images from other players who share theirs, checked against the game’s catalog so only a genuine, unaltered image is ever accepted. If you have the right to receive an image, this is the one switch to flip.
- An image server: a folder of images on any web server (or a mirror of a publisher’s own), named in Settings. Each game expects its own layout, described on its page: Retro Tactical Trading Cards, Woodland Creatures Worker Placement, Sci-Fi Combat Progression Deckbuilder, Vintage Space Dilemma-Solving Trading Cards, Vintage Thematic Space Wars Trading Cards.
With both on, other players are asked first; the image server supplies what no player has.
The rights
Section titled “The rights”Card images are the publishers’ work. Broccolideck gives you a way to show images you are entitled to and nothing more: it does not host any, does not point at any by default, and the catalogs only say what an image is, so that a shared one cannot be a substitute. Whether you may fetch or share an image is between you and its publisher.
Settings
Section titled “Settings”In Settings → General:
- P2P image sharing: fetch images from other players, and share this device’s with them. Off by default. Never shares in the background on a phone, or on a mobile or metered connection; downloads continue.
- Image server: one address for every game. Each game looks for its images in its own
folder there:
<server>/scr/,<server>/evdd/,<server>/soi/,<server>/stccg/,<server>/swccg/.
In each game’s own section of the settings, Image server names a server for that game alone, used as it is, which wins over the general one. The game sections also choose what to show: scans on the table, in previews, and (for the woodland game) the board.
How images are fetched
Section titled “How images are fetched”An image is one plain HTTP GET of its address; nothing else is sent. The app recognises PNG,
WebP and JPEG by their contents (the file name’s extension and the server’s content type are
not consulted) and refuses anything else or anything over 16 MiB. Redirects are followed, but
never from https to http.
An image from your server is trusted as your choice: it is kept whatever it contains, custom art included. Images from other players are accepted only when they hash to a variant the game’s catalog lists.
The cache
Section titled “The cache”Images are downloaded once and kept on the device, by content: the cache folder under your
platform’s papermagicboomer/broccolideck/ holds images/<sha256>.<png|webp|jpg> and a
images/keys.tsv that says which key (a card’s image name) each file was fetched as. In the
browser the same lives in the site’s own storage.
A key learned once is reused, so replacing an image on your server does not refresh devices
that already have it: delete the cache’s images/ folder to fetch everything afresh. An image
that could not be fetched is tried again when the server changes, when sharing is turned on, and
a minute later while sharing is on (the player who has it may have been away).
In the browser
Section titled “In the browser”The browser version fetches from the page, so an image server on another origin must allow it:
Access-Control-Allow-Origin for this site, and, because the page is cross-origin isolated,
Cross-Origin-Resource-Policy: cross-origin on the images. A server that sends neither works
for the desktop and mobile apps but not in the browser; sharing from other players works
everywhere.