4a41ccb600
ci / verify (push) Successful in 47s
Terrain, actors, boss and bullets are sprites now, and four sounds play off server events. 548KB total across seven files, out of 3.9GB of source packs. - src/view/art.gd holds every atlas rect and sound path in one table, copied from the 0x72 pack's own tile_list. Scattering coordinates through draw calls would make re-cutting the atlas a hunt, and a wrong rect invisible. - Bullets get one MultiMesh per kind rather than one overall: a MultiMeshInstance2D carries a single texture and each kind needs a different region of the sheet. Four draw calls, no custom shader passing UVs through per-instance data. - src/view/sfx.gd is a 16-voice round-robin pool. Bullet-hell fire rates mean sounds overlap constantly, and identical sounds landing within two frames are collapsed so a ring hitting eight bullets is a bang rather than clipping. Every sound is triggered by a server event, never a local guess, so what you hear matches what happened. Audio was converted, not copied: the pack ships 24-bit/96kHz masters averaging 2MB. Downsampled to 16-bit/44.1kHz mono, silence-trimmed, and the shoot sound hard-capped to 0.30s -- it came out at 2.03s, against a fire cooldown of 0.12s, which would have smeared held fire into noise. tests/unit/test_art.gd checks what cannot be eyeballed here: every atlas rect lands inside its texture, every animation frame of a strip fits (the last frame is what runs off the sheet, not the first), there is a sprite per bullet kind and per enemy visual, and no sound is long enough to stack badly. A wrong atlas coordinate does not error -- it silently draws the wrong pixels. Licence sources recorded in docs/ASSETS.md now that they are known. All four are free versions and four rows still say "confirm at source": free itch packs vary on credit and commercial use, and there is no credits screen yet. 155 tests (was 146). check.sh, test.sh and smoke.sh pass.
65 lines
3.3 KiB
Markdown
65 lines
3.3 KiB
Markdown
# 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.
|
|
|
|
## Packs
|
|
|
|
All four are the **free** versions. Source URLs are recorded because the packs
|
|
themselves are gitignored, so their bundled licence files are not in the repo.
|
|
|
|
| Pack | Source | In use | Licence |
|
|
| --- | --- | --- | --- |
|
|
| 0x72 Dungeon Tileset II v1.7 | https://0x72.itch.io/dungeontileset-ii | Terrain, player, enemies, boss → `assets/sprites/dungeon_tileset.png` | Confirm at source. Widely distributed as CC0 by Robert Norenberg (0x72); the bundled README is technical, not legal. |
|
|
| Fire Pixel Bullet 16x16 | https://bdragon1727.itch.io/fire-pixel-bullet-16x16 | Bullets → `assets/sprites/bullets.png` | Confirm at source (free version). |
|
|
| 750+ Effect and FX Pixel All | https://bdragon1727.itch.io/750-effect-and-fx-pixel-all | Impact effect → `assets/sprites/impact.png` | Confirm at source (free version). |
|
|
| Helton Yan — Pixel Combat | https://heltonyan.itch.io/pixelcombat | SFX → `assets/audio/sfx/*.wav` | Confirm at source (free version). |
|
|
|
|
### Not in use
|
|
|
|
`assetpacks/considering_dont_use_yet/` is the user's own "not chosen" marker and
|
|
nothing there is referenced by the game. 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.
|
|
|
|
### Still to confirm
|
|
|
|
Free itch.io packs vary: some are CC0, some require credit, some restrict
|
|
commercial use, and "free version" often carries different terms from the paid
|
|
one. Four rows above say *confirm at source* — do that before a public build,
|
|
and if any require attribution, the credits screen does not exist yet.
|
|
|
|
## 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.
|