diff --git a/deploy/ARTWORK.md b/deploy/ARTWORK.md index f159a0c..46f9f84 100644 --- a/deploy/ARTWORK.md +++ b/deploy/ARTWORK.md @@ -1,46 +1,33 @@ # Cover art pipeline -## Path A: Sony TMDB icon URLs (primary, fully automatic) +How a game gets its tile. Order matters — first hit wins. -Every title lookup also queries Sony's TMDB service, which returns an -official 512x512 icon URL on Sony's CDN. The daemon sends it as -`assets.large_image` (Discord accepts external image URLs there). No -uploads, no hosting, no per-game work, works on any console. If the -service lacks the title or the network fails, the next path is tried. +## Path 1: Sony TMDB live (automatic) -## Path B: icon pack + external URLs (fallback, maintainer-hosted) +Every title lookup queries Sony's TMDB service, which returns an +official icon URL on Sony's CDN. Requires the console to reach +`tmdb.np.dl.playstation.net` — without the nanoDNS exception this +path is dead (see Troubleshooting). No uploads, no hosting, no +per-game work. -## Path A: icon pack + external URLs (recommended) +## Path 2: icon pack (fallback, maintainer-hosted) -The daemon sends `assets.large_image` as -`.png` (Discord accepts external image -URLs in asset fields). Host the pack once, e.g. in this repo: +The daemon sends `.png`. Default is +the project pack (`orbisrpc-host`); host your own by setting +`art_base_url`. `scripts/sync_icons.sh` pulls every +`/user/appmeta//icon0.png` off the PS4 over FTP (read-only) +into `config/icons/`. Missing files degrade to no image. -``` -config/icons/cusa00740.png (512x512 PNG, pulled from the console) -``` +## Path 3: uploaded Discord asset keys -`scripts/sync_icons.sh` pulls every `/user/appmeta//icon0.png` -off the PS4 over FTP (read-only) into `config/icons/`. Set -`art_base_url` in config to the hosted prefix, e.g. -`https://raw.githubusercontent.com//orbisRPC/main/config/icons/`. -Every install then shows art with zero setup. Missing files degrade to -no image. Pack hosting is a maintainer decision (game art is not ours). +Set `asset_idle` / `asset_playing` to an uploaded key to prefer that +instead — keys need no network at all. Current default +`application_id` is `1536977374795538532`. Capped at 300 assets per app. -## Path B: shared Discord application (fallback) +## Hard rule (verified on hardware) -Create an application, upload one PNG per game under Art Assets named -as the lowercase title ID, set `application_id` in config. The daemon -sends the asset key instead. Capped at 300 assets per app. - -Current default: the public PS4-Rich-Presence-for-Discord application -(zorua98741/bshar1865, ID 858345055966461973), which already hosts -per-title art. Borrowed backend, credited here: if it ever goes away, -art degrades to nothing and everything else keeps working. Replace the -default with your own app ID to own the whole chain. - -## Runtime behavior - -URL pack wins when `art_base_url` is set, uploaded keys when only -`application_id` is set, no artwork otherwise (one log notice). Missing -art never crashes anything. +Raw external URLs and dangling keys **drop the entire activity** +silently — name, timer, everything. So every URL above is resolved +through Discord's `mp:` external-assets proxy at post time, and +dangling keys are dropped, never sent. Missing art never crashes +anything; worst case is a tile with no image.