# Asset packs and attribution The packs themselves are **not in git** (see [`assetpacks/README.md`](../assetpacks/README.md)), which means their bundled licence files are not either. This file is the record that survives. Keep it current when a pack is added or removed. ## How assets get from a pack into the game `assetpacks/` carries a `.gdignore`, so Godot skips it entirely — nothing there can be referenced from a scene or script. Files are copied into `res://assets/` in game-ready form, and only then imported. The tree is 3.9 GB and `tools/check.sh` runs `--import`, which would otherwise walk all of it every run. What is in the game today totals **548 KB** across seven files: three sprite sheets and four sounds. Sprite rects and sound paths are all declared in one place, [src/view/art.gd](../src/view/art.gd), and `tests/unit/test_art.gd` asserts every rect lands inside its texture — a wrong atlas coordinate does not error, it silently draws the wrong pixels. ## Licence findings Checked against each pack's itch.io page. **Two of the four forbid redistribution**, which is what publishing a repository containing them would be — so they are not in the repository. | Pack | Licence | Commercial | Credit | In this repo? | | --- | --- | --- | --- | --- | | [0x72 DungeonTileset II](https://0x72.itch.io/dungeontileset-ii) | **CC0 1.0** (public domain) | Yes | Not required | **Yes** — `assets/sprites/dungeon_tileset.png` | | [Helton Yan Pixel Combat](https://heltonyan.itch.io/pixelcombat) | **CC BY 4.0** | Yes | **Required** | **Yes** — `assets/audio/sfx/` | | [Fire Pixel Bullet 16x16](https://bdragon1727.itch.io/fire-pixel-bullet-16x16) | Custom | **Non-commercial only** unless you contribute | Encouraged | **No** — local only | | [750+ Effect and FX Pixel All](https://bdragon1727.itch.io/750-effect-and-fx-pixel-all) | Custom | **Non-commercial only** unless you contribute | Encouraged | **No** — local only | ### The blocking clause Both bdragon1727 packs state, verbatim: > **You cannot do:** Resell / redistribute this asset. And the paid tier of the FX pack is no better for this purpose: > You can NOT re-distribute the file, no matter how much you modify it you can > use it but not share or re-sell it. Putting those files in a public repository distributes them to everyone who clones it, which is squarely what that forbids. Paying for the commercial tier does **not** unlock it — the restriction survives payment and survives modification. So they live in `assets/local/`, which is gitignored. `Art.bullets_texture()` and `Art.impact_texture()` load them at runtime if present and return null if not; the bullet renderer falls back to a generated dot. Verified both ways: with the files present the game uses them, and with them hidden the suite still passes 156/156 and the game runs. This is also why nothing there may be `preload()`ed — `preload` resolves at compile time and would fail the build on every machine that lacks the files. ### Two obligations this creates 1. **Helton Yan's CC BY 4.0 requires attribution**, and it is not satisfied by a file in the source tree once the game ships. Players need to be able to see it. [CREDITS.md](../CREDITS.md) records it for now; an in-game credits screen is a todo. 2. **Both bdragon packs are non-commercial in their free tier.** The stated goal is a Steam release. Before that happens they need either a paid contribution to bdragon1727 (which permits commercial use but still not redistribution) or replacement with CC0 art. A CC0 replacement solves both problems at once and lets the assets go back in the repo. ### Not in use `assetpacks/considering_dont_use_yet/` is the "not chosen" marker and nothing there is referenced. It contains RF Catacombs v1.0 (public domain per its bundled `public-license.txt` — free for personal or commercial use, credit appreciated, no reselling; artwork by Szadi art), plus Tiny RPG Character Pack 02 and neo_zero demos, whose terms are unrecorded. ## Converting audio before use Helton Yan's pack is 24-bit / 96 kHz stereo — studio masters, averaging ~2 MB per file and 5 MB at the largest. That is roughly a hundred times what a game needs for a gunshot. Downsample to 16-bit / 44.1 kHz mono before copying anything into `res://assets/`. Godot imports `.wav` losslessly and keeps it in memory uncompressed for low-latency playback, so the source format is what you pay for in RAM and in export size. ## Where converted assets go `res://assets/`, which is committed and imported. See [`assets/README.md`](../assets/README.md). Art is Stage 2 in [ROADMAP.md](ROADMAP.md); everything currently on screen is drawn from primitives plus one runtime-generated dot texture.