# CANNIBAL ISLAND: asset licences (front end `cannibalisland_frontend.zip`)

Written 2026-11-09 from the exact build in the zip (`release_dist/`, 317 files: `index.html`, `main.js`, 47 images, 27 rigs + 39 rig textures, 196 audio clips, 3 fonts + 2 licence texts, `a/manifest.json`). No paid service was used for any shipped asset: **$0 total**.

## Summary

| Category | Files | Source | Licence / status |
|---|---|---|---|
| AI art (Jacob's Game Studio queue, processed by Mai) | 47 images in `a/` + 39 rig textures in `a/rig/` (glow / flash / eye layers cut from the same stills) | 43 Game Studio jobs (`cannibal/art/tools/studio_manifest.json`, `concept/tools/studio_manifest.json`), all `done`, $0. Cut-outs, keying and recolouring by our own scripts (`rigby/prep/stills.py`, `game/tools/pack_assets.py`). | Made with **Meta AI**: every studio result carries embedded XMP `publisher=Meta` + IPTC `trainedAlgorithmicMedia` (checked 2026-11-09 on `ci_banner`, `ci_tile_art`, `ci_bg_base_land`, `fc_chief`, `fc_sym_p1_mask`). This is the same provenance as MOG CITY. **Jacob accepted that risk for MOG CITY on 2026-11-07 ("the license stuff is fine"). JACOB: confirm the same decision covers CANNIBAL ISLAND.** Meta's AI Terms give no output grant, set no commercial limit and don't name gambling (see MOG's ledger). |
| Animation: Rigby2D rigs | 27 `a/rig/*.json` (94 clips) | Built in-house with the space's Rigby2D kit (`cannibal/rigby/rigs/*.py`); weighted meshes over the stills above. Runtime `src/rigby.js` is our code. Crack gate: every clip ≤ 50 px (worst 47 px, `heir_5 react_big`). | Project-owned code and data. OK. |
| Music and ambience | 5 clips (`music_base`, `music_bonus`, `music_bigwin`, `ambience_day`, `ambience_night`) | Composed and synthesised in code (`audio/tools/make_music.py`, numpy/scipy). No AI audio, no samples, no third-party music. The 10 Game Studio music jobs all failed (music type unsupported), so nothing from the studio is used. | Original work, project-owned. OK. |
| SFX and stings | 191 clips | Code synthesis (`audio/tools/dsp.py`, `make_sfx.py`). **63 clips** also layer processed Kenney samples (Casino Audio, Impact Sounds, Interface Sounds, RPG Audio). | Synthesis: project-owned. Kenney: **CC0 1.0** (public domain dedication, no attribution needed; credited anyway). OK. |
| Voice | 0 | No voice audio ships. The "phrase_*" cues are synthesised musical phrases, not speech. | n/a |
| Fonts | `fonts/InterTab-500.woff2`, `InterTab-700.woff2`, `TitanOne.woff2` | Inter (Rasmus Andersson, subset) and Titan One (Rodrigo Fuenzalida). | **SIL OFL 1.1**; `fonts/OFL-Inter.txt` and `fonts/OFL-TitanOne.txt` ship with them. OK. |
| Code | `main.js`, `index.html` | Our code, built from MOG CITY's engine, plus PixiJS (MIT) and GSAP (standard "no charge" licence, gsap.com) bundled in `main.js`. | OK (same as MOG CITY). |
| Encoding tools | n/a | ffmpeg (imageio-ffmpeg build) for mp3, Pillow for webp. | Tool licences don't cover the output. OK. |

Status counts: **OK 231** (index.html, main.js, manifest, 27 rigs, 196 audio clips, 3 fonts + 2 licence texts) · **AI art pending Jacob's confirmation 86** (47 images + 39 rig textures; MOG precedent says accept) · UNVERIFIED 0.

Full audio ledger (every clip with its Kenney layers): `cannibal/audio/LICENCES.md` in the game folder. Rig table with the gate numbers per clip: `cannibal/rigby/out/RIGS.md`.

## Release-pack files outside the zip

| File | Source |
|---|---|
| `profile/banner_1920x1080*.jpg` | Game Studio job `ci_banner` (Meta AI, as above), resized; the logo version adds `ci_logo` keyed off its lavender background. |
| `profile/logo_cutout.png` | Game Studio job `ci_logo`, chroma-keyed here. |
| `cannibalisland_tile.zip` | Game Studio jobs `ci_tile_art` (3:4 background + heir foreground, cut with rembg isnet-anime / birefnet on philip-pc, $0) and `ci_banner` (16:9). |

## Content notes (not licences, but a reviewer could ask)
- All characters are fictional and invented for this game: Thaddeus Slickworth III and the Jadeskull tribe. No real person, brand or real culture is depicted.
- The tribe is an invented masked culture (jade skull masks, feathers, invented patterns) with no real-ethnicity features or real-culture motifs; the menace is played through props and slapstick, with no gore ([217]).

## Per image (`a/*.webp`)

| File | What | Source (all Game Studio, Meta AI, $0) |
|---|---|---|
| `a/bg_base_land.webp` | background plate | Game Studio jobs `ci_bg_base_land/_port`, `ci_bg_bonus_land/_port` |
| `a/bg_base_port.webp` | background plate | Game Studio jobs `ci_bg_base_land/_port`, `ci_bg_bonus_land/_port` |
| `a/bg_bonus_land.webp` | background plate | Game Studio jobs `ci_bg_base_land/_port`, `ci_bg_bonus_land/_port` |
| `a/bg_bonus_port.webp` | background plate | Game Studio jobs `ci_bg_base_land/_port`, `ci_bg_bonus_land/_port` |
| `a/ch_chief.webp` | chief still, cut out | Game Studio jobs `fc_chief` / `fc_chief_hungry` |
| `a/ch_heir_1.webp` | heir stage still, cut out | Game Studio jobs `ci_heir_1..5` (from the `fc_heir_sheet` / `fc_heir_hero` concept) |
| `a/ch_heir_2.webp` | heir stage still, cut out | Game Studio jobs `ci_heir_1..5` (from the `fc_heir_sheet` / `fc_heir_hero` concept) |
| `a/ch_heir_3.webp` | heir stage still, cut out | Game Studio jobs `ci_heir_1..5` (from the `fc_heir_sheet` / `fc_heir_hero` concept) |
| `a/ch_heir_4.webp` | heir stage still, cut out | Game Studio jobs `ci_heir_1..5` (from the `fc_heir_sheet` / `fc_heir_hero` concept) |
| `a/ch_heir_5.webp` | heir stage still, cut out | Game Studio jobs `ci_heir_1..5` (from the `fc_heir_sheet` / `fc_heir_hero` concept) |
| `a/ch_warrior_pepper.webp` | warrior still, cut out | Game Studio job `fc_warriors` |
| `a/ch_warrior_plate.webp` | warrior still, cut out | Game Studio job `fc_warriors` |
| `a/fx_dust_1.webp` | particle sprite | Game Studio job `ci_fx_sheet` (cells keyed out by pack_assets.py) |
| `a/fx_dust_2.webp` | particle sprite | Game Studio job `ci_fx_sheet` (cells keyed out by pack_assets.py) |
| `a/fx_feather_g.webp` | particle sprite | Game Studio job `ci_fx_sheet` (cells keyed out by pack_assets.py) |
| `a/fx_feather_r.webp` | particle sprite | Game Studio job `ci_fx_sheet` (cells keyed out by pack_assets.py) |
| `a/fx_feather_t.webp` | particle sprite | Game Studio job `ci_fx_sheet` (cells keyed out by pack_assets.py) |
| `a/fx_feather_y.webp` | particle sprite | Game Studio job `ci_fx_sheet` (cells keyed out by pack_assets.py) |
| `a/fx_leaf_1.webp` | particle sprite | Game Studio job `ci_fx_sheet` (cells keyed out by pack_assets.py) |
| `a/fx_leaf_2.webp` | particle sprite | Game Studio job `ci_fx_sheet` (cells keyed out by pack_assets.py) |
| `a/fx_leaf_3.webp` | particle sprite | Game Studio job `ci_fx_sheet` (cells keyed out by pack_assets.py) |
| `a/fx_spark_1.webp` | particle sprite | Game Studio job `ci_fx_sheet` (cells keyed out by pack_assets.py) |
| `a/fx_spark_2.webp` | particle sprite | Game Studio job `ci_fx_sheet` (cells keyed out by pack_assets.py) |
| `a/gag_crowned.webp` | result card art | Game Studio jobs `ci_gag_crowned/eaten/feast` |
| `a/gag_eaten.webp` | result card art | Game Studio jobs `ci_gag_crowned/eaten/feast` |
| `a/gag_feast.webp` | result card art | Game Studio jobs `ci_gag_crowned/eaten/feast` |
| `a/gag_wishbone.webp` | result card art | Game Studio job `fc_gag_wishbone` |
| `a/sym_L1.webp` | symbol, cut out | Game Studio jobs `fc_sym_*` (mask, watch, bell, sun, wave, moon, bloom, spiral) |
| `a/sym_L2.webp` | symbol, cut out | Game Studio jobs `fc_sym_*` (mask, watch, bell, sun, wave, moon, bloom, spiral) |
| `a/sym_L3.webp` | symbol, cut out | Game Studio jobs `fc_sym_*` (mask, watch, bell, sun, wave, moon, bloom, spiral) |
| `a/sym_L4.webp` | symbol, cut out | Game Studio jobs `fc_sym_*` (mask, watch, bell, sun, wave, moon, bloom, spiral) |
| `a/sym_L5.webp` | symbol, cut out | Game Studio jobs `fc_sym_*` (mask, watch, bell, sun, wave, moon, bloom, spiral) |
| `a/sym_M_blue.webp` | orb symbol, cut out and recoloured per tier | Game Studio job `fc_orbs` |
| `a/sym_M_gold.webp` | orb symbol, cut out and recoloured per tier | Game Studio job `fc_orbs` |
| `a/sym_M_green.webp` | orb symbol, cut out and recoloured per tier | Game Studio job `fc_orbs` |
| `a/sym_M_purple.webp` | orb symbol, cut out and recoloured per tier | Game Studio job `fc_orbs` |
| `a/sym_M_red.webp` | orb symbol, cut out and recoloured per tier | Game Studio job `fc_orbs` |
| `a/sym_P1.webp` | symbol, cut out | Game Studio jobs `fc_sym_*` (mask, watch, bell, sun, wave, moon, bloom, spiral) |
| `a/sym_P2.webp` | symbol, cut out | Game Studio jobs `fc_sym_*` (mask, watch, bell, sun, wave, moon, bloom, spiral) |
| `a/sym_P3.webp` | premium symbol, cut out | Game Studio jobs `ci_sym_p3_monocle` / `fc_sym_p3_monocle` |
| `a/sym_P4.webp` | symbol, cut out | Game Studio jobs `fc_sym_*` (mask, watch, bell, sun, wave, moon, bloom, spiral) |
| `a/sym_S.webp` | TOTEM scatter, cut out | Game Studio jobs `ci_scatter` / `fc_scatter` |
| `a/ui_banner.webp` | loader / intro key art | Game Studio job `ci_banner` |
| `a/ui_frame.webp` | grid frame | Game Studio job `ci_frame` (keyed) |
| `a/ui_logo.webp` | logo | Game Studio job `ci_logo` (keyed off lavender) |
| `a/ui_plaque.webp` | FEAST plaque | Game Studio job `ci_plaque` (keyed) |
| `a/ui_tile.webp` | intro card art | Game Studio job `ci_tile_art` |
