Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 26 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ different kind of module.
| `version` | no | Your own version string. Re-importing the same slug updates it. |
| `description` | no | One line, at most 300 characters. |
| `icon` | no | Where the tile lives, relative to this file — `../icons/<slug>.svg`. A path, never markup and never a URL. Without one the app shows the game's text mark. |
| `appIcon` | no | Where the game's own square app icon lives, relative to this file — `../app-icons/<slug>.webp`. A PNG or WebP, never a URL. Without one the small game pills fall back to the IGDB cover, then the game's initials. |
| `report.confirmation` | no | `opponent` (the other captain agrees) or `admin`. |
| `report.confirmTimeoutMin` | no | How long the opponent has before it goes to an admin. |
| `stats` | no | Up to 40 fields. `type` is `integer`, `decimal` or `text`; `scope` is `player` or `team`. |
Expand All @@ -86,12 +87,30 @@ tile is inlined into the admin's page, so a `<script>`, an `onload=`, a
`<foreignObject>` or a reference to another host is a refusal with a reason.
Run your SVG through SVGO first; the platform repo has the config.

## App icons

The tile is our art. The app icon is the game's own: the square icon players
know it by, the one on their phone, desktop or launcher. The app draws it in
the 20 px game pills ("What do you play?", a profile's games), where a player
has to pick out their game at a glance and a wide wordmark shrinks to a smear.

An app icon is a **square PNG or WebP, 128 × 128, at most 25 KB**. The
platform checks the bytes, not the file name — a file that is not a PNG or
WebP, is not square, is outside 32–512 px or is over 25 KB is refused on
import. Never a slice of a wordmark: if a game has no square icon, leave
`appIcon` out.

Record where every icon came from in [`app-icons/SOURCES.md`](app-icons/SOURCES.md).
Game icons are trademarks of their owners and are used only to identify the
game.

## Layout

catalog.json the game catalog: every pack, and signed code modules
index.json every pack in this repo (read by 3.0 beta instances)
packs/<slug>.json one game
icons/<slug>.svg its tile
app-icons/<slug>.webp its square app icon, and SOURCES.md

A pack names its tile rather than carrying it, so the JSON stays something a
person can read and a reviewer can diff.
Expand All @@ -100,8 +119,8 @@ person can read and a reviewer can diff.

Each entry repeats just enough for the app to draw a card before it downloads
anything: the slug, name, version, engine, a one-line description, the pack's
path, and the tile's path *relative to this file* (`icons/<slug>.svg`, without
the `../`).
path, the tile's path *relative to this file* (`icons/<slug>.svg`, without
the `../`), and the app icon's the same way (`app-icons/<slug>.webp`).

```json
{
Expand All @@ -114,7 +133,8 @@ the `../`).
"engine": "manual-report",
"description": "One line.",
"file": "packs/call-of-duty.json",
"icon": "icons/call-of-duty.svg"
"icon": "icons/call-of-duty.svg",
"appIcon": "app-icons/call-of-duty.webp"
}
]
}
Expand Down Expand Up @@ -162,8 +182,9 @@ downloads only from `https://github.com/Auto-Tournament/`.

1. Write `packs/<slug>.json`.
2. Put its tile at `icons/<slug>.svg` and point `icon` at `../icons/<slug>.svg`.
3. Add the game to `index.json` and to `packs` in `catalog.json`, with `icon` as `icons/<slug>.svg`.
4. Open a pull request.
3. If the game has a square app icon, put it at `app-icons/<slug>.webp` (128 × 128, at most 25 KB), point `appIcon` at `../app-icons/<slug>.webp`, and add a row to `app-icons/SOURCES.md`.
4. Add the game to `index.json` and to `packs` in `catalog.json`, with `icon` as `icons/<slug>.svg` (and `appIcon` as `app-icons/<slug>.webp`).
5. Open a pull request.

Please only add a game you would actually run a tournament for, with a tile
you have the right to share.
Expand Down
78 changes: 78 additions & 0 deletions app-icons/SOURCES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# App icon sources

Where every file in this folder came from. Each is the game's own square
icon — the one players see on their phone, desktop or launcher — scaled to
128 × 128 and saved as WebP (at most 25 KB). Nothing here is a slice of a
wordmark.

**Game icons are trademarks of their owners.** They are used only to
identify the game a player picks; no endorsement is implied, and a rights
holder who wants theirs removed only has to open an issue.

Sources, in order of preference — all public, no API key, nothing behind a
login:

1. **Steam client icon.** `https://api.steamcmd.net/v1/info/<appid>` →
`common.clienticon` → `https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/<appid>/<hash>.ico`;
the largest frame (256 or 512 px). The small `common.icon` JPEG is 32 px and
not used. Where the `.ico` is gone, `common.linuxclienticon` (a zip of PNGs).
2. **App Store icon** for mobile-first games. `https://itunes.apple.com/lookup?id=<id>`
→ `artworkUrl512` (requested at 256 px, PNG).
3. **Nintendo eShop square image** for Nintendo-only games — the square
picture the Switch shows for the game. Nintendo of Europe's game search
(`searching.nintendo-europe.com`), field `image_url_sq_s`.
4. Otherwise, a square icon published by the game's own store page or
Wikimedia Commons, noted per game below.

Wikidata has no square-icon statement (P2910) for any of these games, and its
logo (P154) is the wide wordmark, so it is not a source except where the logo
is itself the square icon (osu!).

| Game | File | Source | URL |
| --- | --- | --- | --- |
| age-of-empires-ii | `age-of-empires-ii.webp` | Steam client icon (app 813780, 256px frame of `common.clienticon`) | <https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/813780/7559e80083c6d4bd482aa61242300d0b32c65652.ico> |
| apex-legends | `apex-legends.webp` | Steam client icon (app 1172470, 256px frame of `common.clienticon`) | <https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1172470/8986dd626da56db5f3fe09bc1b8871739de8b00d.ico> |
| brawl-stars | `brawl-stars.webp` | App Store icon, "Brawl Stars" by Supercell Oy (iTunes Lookup id 1229016807) | <https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/ee/a7/00/eea700d3-6cec-f063-b86c-3dfd251c95bd/AppIcon-0-0-1x_U007epad-0-1-85-220.png/256x256bb.png> |
| call-of-duty | `call-of-duty.webp` | Steam client icon (app 1938090, 256px frame of `common.clienticon`) | <https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1938090/62d857e14896e4f7010ebedc8842b1e48898a18c.ico> |
| clash-royale | `clash-royale.webp` | App Store icon, "Clash Royale" by Supercell Oy (iTunes Lookup id 1053012308) | <https://is1-ssl.mzstatic.com/image/thumb/Purple211/v4/77/45/d0/7745d02a-8eac-2295-b062-73bb93e90506/AppIcon-0-0-1x_U007emarketing-0-7-0-85-220.png/256x256bb.png> |
| counter-strike-2 | `counter-strike-2.webp` | Steam client icon (app 730, 512px frame of `common.clienticon`) | <https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/730/324b323045b09bace182f928f4104dfcd93cb7f3.ico> |
| deadlock | `deadlock.webp` | Steam client icon (app 1422450, 256px frame of `common.clienticon`) | <https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1422450/d84198725616ae43a74222f559e0fe710c3bb18b.ico> |
| dota-2 | `dota-2.webp` | Steam Linux client icon (app 570, `dota_256.png` from `common.linuxclienticon`) | <https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/570/e1c520b6a98b1fed674a117e9356cdb9ddc6d40c.zip> |
| ea-sports-fc-25 | `ea-sports-fc-25.webp` | Steam client icon (app 2669320, 256px frame of `common.clienticon`) | <https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/2669320/f5ae366e7c1592e711c6f1ecb3553f1bd474d90a.ico> |
| fortnite | `fortnite.webp` | App Store icon, "Fortnite" by Epic Games Sweden AB (iTunes Lookup id 6483539426) | <https://is1-ssl.mzstatic.com/image/thumb/Purple211/v4/a0/1d/74/a01d74d6-5975-c315-7db7-faa54a254b28/AppIcon-0-0-1x_U007epad-0-1-85-220.png/256x256bb.png> |
| guilty-gear-strive | `guilty-gear-strive.webp` | Steam client icon (app 1384160, 256px frame of `common.clienticon`) | <https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1384160/9ba9925e7c37710a4e165916dd01e10c2eded18f.ico> |
| halo-infinite | `halo-infinite.webp` | Steam client icon (app 1240440, 256px frame of `common.clienticon`) | <https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/f02816fc405709ccfa88ba3afa0943a190554486.ico> |
| hearthstone | `hearthstone.webp` | App Store icon, "Hearthstone" by Blizzard Entertainment, Inc. (iTunes Lookup id 625257520) | <https://is1-ssl.mzstatic.com/image/thumb/Purple211/v4/06/ba/fc/06bafcc9-e4a7-1f5b-51fd-2687232ab434/AppIcon-1x_U007emarketing-0-8-0-85-220-0.png/256x256bb.png> |
| mario-kart-8-deluxe | `mario-kart-8-deluxe.webp` | Nintendo eShop square image (Nintendo of Europe game search, `image_url_sq_s`) | <https://www.nintendo.com/eu/media/images/11_square_images/games_18/nintendo_switch_5/SQ_NSwitch_MarioKart8Deluxe_image500w.jpg> |
| marvel-rivals | `marvel-rivals.webp` | Steam client icon (app 2767030, 256px frame of `common.clienticon`) | <https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/2767030/bd22e45404f4ed4f3c549b575e23ce76fe03fb07.ico> |
| minecraft | `minecraft.webp` | App Store icon, "Minecraft: Play with Friends!" by Mojang AB (iTunes Lookup id 479516143) | <https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/6c/04/5b/6c045bf2-3400-f6cb-37e7-30b3f945b024/AppIcon-0-0-1x_U007emarketing-0-10-0-85-220.png/256x256bb.png> |
| mobile-legends-bang-bang | `mobile-legends-bang-bang.webp` | App Store icon, "Mobile Legends: Bang Bang" by YOUNGJOY TECHNOLOGY LIMITED (iTunes Lookup id 1160056295) | <https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/d9/88/76/d9887647-00fd-09c8-8a61-c6c31a1bfe2a/AppIcon-0-0-1x_U007emarketing-0-7-0-85-220.png/256x256bb.png> |
| mortal-kombat-1 | `mortal-kombat-1.webp` | Steam client icon (app 1971870, 256px frame of `common.clienticon`) | <https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1971870/fa7894d0d339239667a8fe34af4fae43a2a9bd8c.ico> |
| osu | `osu.webp` | Wikimedia Commons, "Osu! logo 2024.png" (Wikidata Q307441, P154); the circle logo is the game's own app icon | <https://commons.wikimedia.org/wiki/Special:FilePath/Osu!%20logo%202024.png?width=256> |
| overwatch-2 | `overwatch-2.webp` | Steam client icon (app 2357570, 256px frame of `common.clienticon`) | <https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/2357570/c05905cbf26020ffefcae9b39038d9ad523e2d68.ico> |
| pubg-battlegrounds | `pubg-battlegrounds.webp` | Steam client icon (app 578080, 256px frame of `common.clienticon`) | <https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/578080/f962202b06de547cf47c156bdd7aaa5bf7f2cdbb.ico> |
| rainbow-six-siege | `rainbow-six-siege.webp` | Steam client icon (app 359550, 256px frame of `common.clienticon`) | <https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/359550/0f02b60c4e54a254f99ce6d38f16e6fadb504e54.ico> |
| rocket-league | `rocket-league.webp` | Steam client icon (app 252950, 256px frame of `common.clienticon`) | <https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/252950/3ea06e4358d60a692914fd961298de33ad4073b2.ico> |
| splatoon-3 | `splatoon-3.webp` | Nintendo eShop square image (Nintendo of Europe game search, `image_url_sq_s`) | <https://www.nintendo.com/eu/media/images/11_square_images/games_18/nintendo_switch_5/1x1_nswitch_splatoon3_old/1x1_NSwitch_Splatoon3_image500w.jpg> |
| street-fighter-6 | `street-fighter-6.webp` | Steam client icon (app 1364780, 256px frame of `common.clienticon`) | <https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1364780/1bad0a68346084e54d68a802f20aeab68c951f05.ico> |
| super-smash-bros-ultimate | `super-smash-bros-ultimate.webp` | Nintendo eShop square image (Nintendo of Europe game search, `image_url_sq_s`) | <https://www.nintendo.com/eu/media/images/11_square_images/games_18/nintendo_switch_5/SQ_NSwitch_SuperSmashBrosUltimate_02_image500w.jpg> |
| team-fortress-2 | `team-fortress-2.webp` | Steam client icon (app 440, 512px frame of `common.clienticon`) | <https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/440/f568912870a4684f9ec76277a1a404dda6bab213.ico> |
| teamfight-tactics | `teamfight-tactics.webp` | App Store icon, "TFT: Teamfight Tactics" by Riot Games (iTunes Lookup id 1480616748) | <https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/b5/ac/f9/b5acf9df-ecc7-cf86-a3c2-3912d607067f/AppIcon-0-0-1x_U007emarketing-0-8-0-85-220.png/256x256bb.png> |
| tekken-8 | `tekken-8.webp` | Steam client icon (app 1778820, 256px frame of `common.clienticon`) | <https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1778820/3ffacb2d80bbe1d77f006ce9244db1fc75ee7759.ico> |
| trackmania | `trackmania.webp` | Microsoft Store square box art, "Trackmania" (product 9N01MR5LF53S, `BoxArt`); Steam only has a 32 px icon | <https://store-images.s-microsoft.com/image/apps.3045.13929807647902137.38a53ce6-26b2-46d3-a4f5-54b363f7efcd.f838da9c-face-4bea-ad15-1f3ca55d64fd?w=256&h=256&format=png> |
| valorant | `valorant.webp` | Epic Games Store product icon (`ic1`, white V mark), cropped to the V and set on VALORANT red #FF4655 — the tile the Riot Client shows | <https://cdn2.unrealengine.com/egs-valorant-riotgames-ic1-400x400-2ccfb0dd75ae.png> |

`counter-strike-2.webp` is here for the record; the platform ships it with the
CS2 module (`client/public/games/counter-strike-2-app-icon.webp`), since CS2 is
a code module, not a pack.

## Games without an app icon

No public, key-free source has a square icon for these, so their packs have no
`appIcon` and the app falls back to the IGDB cover (when IGDB is set up), then
the game's initials:

- **Battlefield 6** — no Steam `.ico` (404), no App Store app; the Epic icon is the wordmark.
- **Chess** — a game, not a product; no one icon to use.
- **League of Legends** — not on Steam or the App Store; store listings only carry box art.
- **StarCraft II** — Battle.net only; store listings only carry box art.
Binary file added app-icons/age-of-empires-ii.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/apex-legends.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/brawl-stars.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/call-of-duty.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/clash-royale.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/counter-strike-2.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/deadlock.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/dota-2.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/ea-sports-fc-25.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/fortnite.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/guilty-gear-strive.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/halo-infinite.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/hearthstone.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/mario-kart-8-deluxe.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/marvel-rivals.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/minecraft.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/mobile-legends-bang-bang.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/mortal-kombat-1.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/osu.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/overwatch-2.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/pubg-battlegrounds.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/rainbow-six-siege.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/rocket-league.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/splatoon-3.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/street-fighter-6.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app-icons/super-smash-bros-ultimate.webp
Binary file added app-icons/team-fortress-2.webp
Binary file added app-icons/teamfight-tactics.webp
Binary file added app-icons/tekken-8.webp
Binary file added app-icons/trackmania.webp
Binary file added app-icons/valorant.webp
Loading
Loading