Mahjong Cultural Tile Sets — Royal Graphics Resources "Mahjong Premium Masterpack" ==================================================================================== The PNG tile artwork under assets/mahjong/{China,India,Japan,Korea,Medieval}/ is the "Mahjong Premium Masterpack" published by Royal Graphics Resources on itch.io, purchased for use on trysolitaire.com. Product page: https://royalgraphicsresources.itch.io/mahjong-premium-masterpack Publisher: https://royalgraphicsresources.itch.io/ Purchased: $5 (itch.io, 2026) Each set ships with three subdirectories: Normal/ — 42 tile faces (one per standard mahjong tile) Selected/ — 42 pre-rendered "selected-state" variants of the same tiles Other/ — Back Tile, Blank Tile, Blank Selected Tile, Shadow Tile License terms (verbatim, from the publisher's itch.io page) ----------------------------------------------------------- YOU CAN: - Use these assets in both commercial and private projects (attribution not required but greatly appreciated) - Modify and change files in any way you like and use those files in both commercial and private projects - Use this asset pack with any Game Engine YOU CANNOT: - Resell this asset pack as a whole or any of its parts separately - Modify and then resell this asset pack as a derivative work - Redistribute this asset pack as a whole or any of its parts separately - Use this asset pack to train AI - Use this asset pack in Crypto/NFT related projects Distribution model inside trysolitaire -------------------------------------- The "no redistribution" clause is the operative restriction for a web app. Serving the raw PNGs at individually-addressable URLs would arguably let a third party reassemble the pack by walking the directory tree. To stay squarely on the "use in product" side of the line, we: 1. Keep the raw PNGs in this repo under `assets/mahjong//` as build inputs. They are NOT copied to any site's publicDir and no viteStaticCopy rule references them, so the production build (`npm run build:try-mahjong`) does not place them in dist/. 2. At build time, `scripts/build-mahjong-spritesheets.js` composes each set's 88 tiles into a single PNG atlas + a JSON manifest mapping tile names to atlas coordinates. These atlases are what's served to end users in production. 3. The runtime renderer uses CSS `background-position` on the atlas to draw each tile. Selected-state art is stacked in the atlas; the renderer shifts its background-position to pick the selected variant. Production users never receive the pack in its original form. The atlases are unambiguously "use in our product", not "redistribution of the pack". Dev-mode caveat: when a developer runs `npm run dev:mahjong` locally, Vite's dev middleware serves any file in the project root, so raw PNGs are accessible at http://localhost:5173/assets/mahjong//... This is not a production surface and only affects the developer's own machine. Attribution ----------- Credit is not required by the license but is voluntarily given on https://trysolitaire.com/credits under the "Mahjong Tile Graphics — Cultural Sets" section, linking back to the publisher's itch.io page. Compliance checklist -------------------- [x] Commercial use — site is ad-supported; license permits [x] Modification — CSS brightness filter in dark themes is permitted [x] Atlas build — raw files not individually served [x] No resale — we never offer the files as a separate download [x] No AI training — not used to train any model [x] No NFT / crypto — not used in any blockchain context [x] Attribution — credit block on /credits linking to publisher