# Bomzhara Local Art

Generated locally with the model lab on 2026-06-29.

## Jam Cards Covered

- `myindie-level10-корона.png`: add a crown.
- `myindie-level10-борода-мудрости.png`: add a bearded character.
- `myindie-level10-архивариус-мемов.png`: add a meme or easter egg.

## Final Assets

- `final/bomzhara_beard_crown_toast_card.png`: full framed key art.
- `final/bomzhara_beard_crown_toast_cutout.png`: transparent cutout.
- `final/bomzhara_beard_crown_toast_mask.png`: local cutout mask.
- `final/bomzhara_toast_meme_pose_card_v5.png`: tighter toast-meme pose based on Tim's Desktop screenshot reference.
- `final/bomzhara_toast_meme_pose_cutout.png`: transparent cutout for the tighter toast-meme pose.
- `final/bomzhara_toast_meme_pose_mask.png`: local cutout mask for the tighter toast-meme pose.

## Source Notes

- Main character base: local `sd-turbo-image`, seed `3101`.
- Crown/glass/crown-beard exploration: local `sd-turbo-image`, seeds `3102` and `3103`.
- Initial higher quality exploration: local `sdxl-image`, seed `2901`.
- Background removal: local `birefnet-cutout`.
- The toast pose is an original meme-like reference, not a celebrity likeness.
- The final crown was added by local post-processing because generated variants kept splitting the requirements across separate images.
- Follow-up pose correction used `/Users/timmarkin/Desktop/Screenshot 2026-06-29 at 18.26.22.png` as a composition reference: direct eye contact, smug toast, left foreground stem glass.
- Local SDXL/Turbo generations still failed to hit all requirements in one image, so `bomzhara_toast_meme_pose_card_v5.png` composites the existing Bomzhara crown/beard portrait with a locally generated hand crop and a hand-drawn foreground stemmed glass. No actor face pixels are used.
- 2026-06-30 variant batch generated two more local SDXL glass components and four additional card candidates:
  - `final/bomzhara_toast_variant_a2_clean_glass.png`
  - `final/bomzhara_toast_variant_b2_tight_reference.png`
  - `final/bomzhara_toast_variant_d2_huge_rim.png`
  - `final/bomzhara_toast_variant_e_face_readable.png`
  - Contact sheet: `final/bomzhara_toast_variants_contact_sheet_clean.png`
- Best current candidates from the batch are A2 for clean glass/readability and E for face readability.
- 2026-06-30 "other means" batch:
  - Tried direct ComfyUI with local `Juggernaut-X-RunDiffusion-NSFW.safetensors` and `lustifySDXLNSFWSFW_v20.safetensors`. These were stylistically different but mostly missed the exact foreground-glass pose, so they are archived under `assets/raw/`.
  - Used built-in image generation for two 2x2 concept sheets because the local exposed routes kept mangling the hand/glass relation.
  - Saved external-generation sheets:
    - `final/bomzhara_toast_builtin_contact_sheet.png`
    - `final/bomzhara_toast_builtin_cheap_contact_sheet.png`
  - Split candidates:
    - `final/bomzhara_toast_builtin_a_gritty_photo.png`
    - `final/bomzhara_toast_builtin_b_painterly.png`
    - `final/bomzhara_toast_builtin_c_grotesque.png`
    - `final/bomzhara_toast_builtin_d_noir.png`
    - `final/bomzhara_toast_builtin2_a_flash_photo.png`
    - `final/bomzhara_toast_builtin2_b_soviet_grotesque.png`
    - `final/bomzhara_toast_builtin2_c_tabloid.png`
    - `final/bomzhara_toast_builtin2_d_game_cover.png`
  - Best-of sheet: `final/bomzhara_toast_other_means_best_sheet.png`.
  - Tim picked B; cutout saved as `final/bomzhara_toast_builtin_b_painterly_cutout.png` with preview `final/bomzhara_toast_builtin_b_painterly_cutout_preview.png`.

## Room And Decoration Art

- 2026-06-30 generated with built-in image generation, then copied into the project from Codex's generated-images cache.
- Raw sources:
  - `generated/v3_room/raw/room_plate_generated.png`
  - `generated/v3_room/raw/decor_sheet_chromakey.png`
- Final runtime assets:
  - `generated/v3_room/final/room_floor.png`
  - `generated/v3_room/final/decor_crate.png`
  - `generated/v3_room/final/decor_rug.png`
  - `generated/v3_room/final/decor_bottles.png`
  - `generated/v3_room/final/decor_table.png`
  - Contact sheet: `generated/v3_room/final/decor_contact_sheet.png`
- Room prompt: grimy painterly top-down dirty room, wooden floorboards, stained plaster edges, cold blue window glow, warm weak bulb glow, empty readable center, no characters, no text.
- Decoration prompt: 2x2 chroma-key sheet with broken crate, torn rug, bottle/trash pile, cracked table and broken chair; flat `#00ff00` background; no text, characters, shadows, or floor plane.
- Post-processing: copied generated images into the project, split the 2x2 decoration sheet by quadrant, removed green chroma-key to alpha, cropped/padded each subject, and resized large cells to a max 512px box.

## Surroundings Direction Art

- 2026-07-01 generated with built-in image generation as review-only art direction. These assets were not wired into the game.
- Direction: condemned winter building / rough shelter, with a playable open center, cluttered edges, broken outside walls, cold snow boundary light, and small amber shelter warmth.
- Raw sources:
  - `generated/v4_surroundings_direction/raw/abandoned_building_map_direction.png`
  - `generated/v4_surroundings_direction/raw/abandoned_building_elements_sheet.png`
- Final review assets:
  - `generated/v4_surroundings_direction/final/abandoned_building_map_direction.png`
  - `generated/v4_surroundings_direction/final/abandoned_building_elements_sheet.png`
  - `generated/v4_surroundings_direction/final/surroundings_direction_contact_sheet.png`
- Map prompt: abandoned building used as a rough shelter, broken concrete walls, rotten wood, boarded windows, snow outside, makeshift sleeping corner, trash, radiator, stairwell, warm barrel/candle light, no characters/enemies/text.
- Element-sheet prompt: 3x3 isolated prop grid on dark charcoal with barrel fire, sleeping nest, radiator, barricade, broken window, trash pile, rotten sofa, rubble, and candle table.

## Tapok Miniboss And Player Animation Concepts

- 2026-07-01 generated with built-in image generation as review-only concept art. These assets were not wired into the game.
- Final review assets:
  - `generated/v5_tapok_player/final/tapok_miniboss_concepts.png`
  - `generated/v5_tapok_player/final/bomzhara_player_animation_concepts.png`
  - `generated/v5_tapok_player/final/tapok_player_visuals_contact_sheet.png`
- Tapok prompt: 2x2 concept sprite sheet for a booby-trapped house slipper / old shoe miniboss, worn Soviet slipper, cracked rubber sole, rusty nails, tripwire, bottle shards, small embedded mines, glowing eyes, grotesque but funny, black background, no text.
- Player prompt: 2x2 concept sheet for the Bomzhara main character with beard, crooked crown, dirty green coat, patched pants, worn boots, vodka bottle; poses are idle, walking/limping, throwing, and hurt/drunk wobble; black background, no text.

## Tapok Old Three-Stripe Sneaker Runtime Sprite

- 2026-07-03 generated locally through `sdxl-image`, seed `43211`, after Tim rejected the procedural/fantasy shoe look.
- Intent: used old black Adidas-style three-stripe street sneaker, dirty and scuffed, without readable logo text.
- Raw local model output:
  - `generated/v9_tapok_sneaker/raw/tapok_old_sneaker_sdxl.png`
  - Source model-lab file: `Shared/tools/model-lab/output/20260703_094206_sdxl_a3db1e9a.png`
- Cutout:
  - `generated/v9_tapok_sneaker/raw/tapok_old_sneaker_mask.png`
  - BiRefNet source mask: `Shared/tools/model-lab/output/20260703_094303_birefnet_34e7d52c.png`
- Runtime asset:
  - `generated/v9_tapok_sneaker/final/tapok_old_three_stripe_sneaker.png`
  - Checker preview: `generated/v9_tapok_sneaker/final/tapok_old_three_stripe_sneaker_preview.png`
- Note: sprite avoids readable Adidas wordmark/trefoil; it keeps the three-stripe sneaker silhouette for the meme readability.

## Tapok Flat Desktop-Reference Sneaker Runtime Sprite

- 2026-07-03 generated and processed locally after Tim screenshotted the desired tapok silhouette to Desktop.
- Reference:
  - Tim Desktop screenshot copied to `generated/v10_tapok_reference/raw/tim_reference_flat_shoe.png`.
  - Enlarged inspection copy: `generated/v10_tapok_reference/raw/tim_reference_flat_shoe_6x_nearest.png`.
- Intent: flat, used, low Adidas-style sneaker, dirty grey/blue palette, no yellow mono-color area, no readable logo text.
- Raw local model sources:
  - `generated/v10_tapok_reference/raw/tapok_flat_reference_seed43312_sdxl.png`
  - Source model-lab file: `Shared/tools/model-lab/output/20260703_101037_sdxl_b0db54ad.png`
  - Crop/input cleanup: `generated/v10_tapok_reference/raw/tapok_flat_reference_seed43312_crop.png`
- Cutout:
  - `generated/v10_tapok_reference/raw/tapok_flat_reference_seed43312_birefnet_mask.png`
  - `generated/v10_tapok_reference/raw/tapok_flat_reference_seed43312_birefnet_cutout.png`
  - BiRefNet source files: `Shared/tools/model-lab/output/20260703_101446_birefnet_449b351f.png` and `Shared/tools/model-lab/output/20260703_101446_birefnet_1004dd44.png`
- Runtime asset:
  - `generated/v10_tapok_reference/final/tapok_flat_old_adidas_reference.png`
  - Checker preview: `generated/v10_tapok_reference/final/tapok_flat_old_adidas_reference_preview.png`
- Notes: the generated yellow sole was remapped into dirty grey and scuffed/noised so it does not read as a bright monochrome block. The asset preserves only the three-stripe sneaker read, without wordmarks.

## Tapok Black Old Flip-Flop Runtime Sprite

- 2026-07-03 generated locally after Tim clarified the tapok should be an old black flip-flop/slipper, not a sneaker.
- Desktop screenshots used to identify the rejected red sneaker state:
  - `/Users/timmarkin/Desktop/Screenshot 2026-07-03 at 10.35.27.png`
  - `/Users/timmarkin/Desktop/Screenshot 2026-07-03 at 10.35.28.png`
- Intent: single black worn flip-flop/tapok with dirty yellow rubber sole preserved, black strap, no sneaker upper/laces, no readable logo text.
- Raw local model sources:
  - `generated/v11_tapok_black_flipflop/raw/seed43403_bottom_single_crop.png`
  - Source model-lab file: `Shared/tools/model-lab/output/20260703_104001_sdxl_3eb0a404.png`
  - Candidate/contact references: `generated/v11_tapok_black_flipflop/raw/local_flipflop_candidates_contact.png` and `generated/v11_tapok_black_flipflop/raw/candidate_crops_contact.png`
- Cutout:
  - `generated/v11_tapok_black_flipflop/raw/tapok_black_flipflop_birefnet_mask.png`
  - `generated/v11_tapok_black_flipflop/raw/tapok_black_flipflop_birefnet_cutout.png`
  - BiRefNet source files: `Shared/tools/model-lab/output/20260703_104202_birefnet_983a4259.png` and `Shared/tools/model-lab/output/20260703_104202_birefnet_8be1f89c.png`
- Runtime asset:
  - `generated/v11_tapok_black_flipflop/final/tapok_black_old_flipflop.png`
  - Checker preview: `generated/v11_tapok_black_flipflop/final/tapok_black_old_flipflop_preview.png`
- Notes: unlike the v10 rejected sneaker cleanup, the yellow sole is intentionally preserved and dirtied, not converted to grey.

## Player Walk Animation Preview

- 2026-07-01 generated with built-in image generation as a first 8-frame review animation.
- 2026-07-01 wired into gameplay as the player walk sprite at 7 fps, with procedural player art kept as fallback.
- Assets:
  - `generated/v6_player_walk_anim/final/bomzhara_walk_8frame_strip.png`: raw generated 8-frame walk/limp strip.
  - `generated/v6_player_walk_anim/final/bomzhara_walk_8frame_alpha_strip.png`: edge-connected black background removed and frames normalized for preview.
  - `generated/v6_player_walk_anim/final/bomzhara_walk_frame_01.png` through `bomzhara_walk_frame_08.png`: extracted preview frames.
- Preview page:
  - `player-animation-preview.html`
- Prompt: horizontal 8-frame walk/limp cycle strip for the same Bomzhara playable character, crown/beard/green coat/vodka bottle consistent, drunk limp, coat swing, shoulder bob, bottle counter-swing, black background, no text, no UI.

## Player Idle And Attack Animation

- 2026-07-01 generated with built-in image generation and wired into gameplay alongside the walk strip.
- Runtime assets:
  - `generated/v7_player_idle_attack/final/bomzhara_idle_8frame_strip.png`: raw generated idle strip.
  - `generated/v7_player_idle_attack/final/bomzhara_idle_8frame_alpha_strip.png`: edge-connected black background removed and frames normalized.
  - `generated/v7_player_idle_attack/final/bomzhara_idle_frame_01.png` through `bomzhara_idle_frame_08.png`: extracted idle frames.
  - `generated/v7_player_idle_attack/final/bomzhara_attack_8frame_strip.png`: raw generated bottle attack strip.
  - `generated/v7_player_idle_attack/final/bomzhara_attack_8frame_alpha_strip.png`: edge-connected black background removed and frames normalized.
  - `generated/v7_player_idle_attack/final/bomzhara_attack_frame_01.png` through `bomzhara_attack_frame_08.png`: extracted attack frames.
- Idle prompt: horizontal 8-frame idle strip for Bomzhara, ragged coat, crooked crown, cracked bottle, subtle breathing/sway, black background, no text.
- Attack prompt: horizontal 8-frame bottle attack strip for Bomzhara, ready/windup/release/follow-through/recover, black background, no text.
- Renderer notes: idle runs at 4 fps, walk remains 7 fps, attack runs at 12 fps, and the renderer crossfades between selected animation states.

## Death Screen Portrait

- 2026-07-01 generated with built-in image generation as a death-only replacement for the happy toast portrait on the `DEAD` screen.
- Runtime asset:
  - `final/bomzhara_death_broken_glass_painterly.png`
- Prompt intent: same crowned bearded Bomzhara in the existing gritty painterly portrait style, lifeless and bloodied with torn coat and broken stem glass; no happy toast, no intact glass, no text, no watermark, no exposed organs or extreme gore.

## Audio Sources

- 2026-07-01 added sampled audio from external CC0 packs instead of generated sounds.
- Detailed audio source/provenance table: `AUDIO_SOURCES.md`.
- Credits file: `../CREDITS.txt`.

## v12 Tapok Zone Salt Circle + Menu Backdrop (monotone-background removal pass)

- 2026-07-03 generated with local `sdxl-image` (model-lab route, SDXL local checkpoint) after Tim rejected every
  remaining monotone colour block in the game (yellow/grey tapok zone fills, hole marker debug lines, pickup backing shapes).
- Runtime assets:
  - `generated/v12_tapok_zone/final/tapok_zone_salt_circle.png`: armed-tapok safe zone. Salt ring generated on dark wood
    (seed 7107), luminance-keyed to alpha, streaks removed with a 7px morphological opening, cropped/padded to 512.
  - `generated/v12_menu_backdrop/final/menu_backdrop_winter_window.png`: menu background (seed 8207), moonlit frozen
    window with candle + bottles, baked 0.82 darken so menu text stays readable.
- Raw candidates (incl. rejected seeds 7101/7102/8201) under `generated/v12_tapok_zone/raw/` and `generated/v12_menu_backdrop/raw/`.
- Salt circle prompt: hand-poured ring of white salt on dark wooden floor seen directly from above, thin rough granular
  line forming an imperfect circle, tiny chalk marks, faint warm candlelight glint, pure black inside and outside, no text.
- Menu prompt: gloomy painterly night scene inside an abandoned communal flat, broken window with snowdrift and moonlight,
  single candle on a crate, vodka bottles, torn wallpaper, mostly very dark with small warm accents, no people, no text.
- Renderer notes: armed tapok zone = salt-circle sprite + thin countdown ring (new shader shape 4) that heats gold->red;
  unarmed tapok glow is clipped to the shoe sprite; enemy-hole red/blue collision-hint lines removed; pickups and floor
  decorations are sprite-only (procedural colored primitives now draw ONLY if a sprite texture is missing).

## v13 Simple Flip-Flop + Foil Shield Wrap + Belochka Squirrel (action-visuals pass)

- 2026-07-03 (second pass, Claude) generated with local `sdxl-image` after Tim rejected the v11 yellow-sole beach
  thong (Desktop reference 10.00.52 = plain old rubber slipper) and demanded zero monotone colour shapes on actions.
- Runtime assets:
  - `generated/v13_tapok_simple/final/tapok_simple_black_flipflop.png`: seed 9302, BiRefNet mask composite,
    post grime pass (blotchy fade + dust specks), tight crop aspect 2.79:1.
  - `generated/v13_foil_wrap/final/shield_foil_wrap.png`: seed 9412, empty silver/orange survival-blanket poncho
    (seed 9401 rejected: generated a face). Drawn over the player body as ПОХМЕЛЬНЫЙ ЩИТ, head stays out.
  - `generated/v13_belochka/final/belochka_white_squirrel.png`: seed 9512, white ghost squirrel, branch removed
    with region alpha cuts (seed 9501 rejected: black silhouette).
- Rejected raws preserved under each `raw/` folder.
- Renderer rules locked in this pass: damage/drink/siren feedback = tint redraw ON the sprite (auto-clipped to
  alpha); shield = foil sprite (thin ring only as missing-texture fallback); squirrel/bullets/puddles/window
  primitives = fallback-only; enemy damage ring deleted; siren = edge-gradient strobe + window light pool +
  sprite-clipped glow on real enemies (never a full-screen colour fill); shape-4 thin rings carry a constant
  pixel width via the pulse attribute (pulse = sharpness for shape 4, colour-pulse disabled there).

## v14 Tapok Reference Match (grey no-name rubber slipper)

- 2026-07-03 (third tapok pass) after Tim clarified with the meme context: the shoe is mass-produced cheap
  rubber footwear with NO branding ("тапок"/"шлепанец"), and the enhanced Desktop reference shows a GREY
  perforated rubber slipper with a dark flat sole, not a black thong.
- Runtime asset: `generated/v14_tapok_reference_match/final/tapok_grey_rubber_slipper.png`
  (sdxl-image seed 9629, BiRefNet mask composite, tight crop aspect 2.50:1; perforations keep real alpha holes).
- Rejected on the way (raws kept where useful): 9601 Crocs-like clog, 9607 perfect texture but a PAIR
  (kept in raw/), 9611 pair of mules, 9617 single but white/clean, 9621 pair again.
- Prompt that worked: "abandoned single grey rubber slipper photographed alone from the side, worn dirty cheap
  rubber, small perforation slits, dark heel opening, completely flat thin sole, utterly generic unbranded,
  grimy painterly still-life, one object only on pure black background, no pair visible, no text, no watermark".

## v15 Tapok Black Slide (final per Tim)

- 2026-07-03 (fourth tapok pass): Tim rejected the grey perforated slipper - the shoe must be a BLACK plain
  no-name rubber шлепанец (slide). Generated with sdxl-image seed 9707: single plain black rubber slide, one
  wide smooth band, open toe/heel, flat thin sole, side profile, shot on a light grey backdrop for a clean
  BiRefNet cutout (seed 9701 rejected: catalog grid of slides).
- Post: blotchy dust fade + specks + scuffs, then a relevel pass (blacks lifted to ~#2a2a2a) and a dusty rim
  light along the upper silhouette so the black rubber stays readable on the dark floor.
- Runtime asset: `generated/v15_tapok_black_slide/final/tapok_black_rubber_slide.png` (aspect 2.74:1,
  draw height r*1.48). Raws + the rejected grid kept under raw/.

## v16 Shield Mattress

- 2026-07-03: ПОХМЕЛЬНЫЙ ЩИТ visual replaced (Tim: foil is wrong, homeless people use "some pissed mattress").
- sdxl-image seed 9801 (flat stained striped mattress), BiRefNet cutout, rotated 90 degrees upright; seeds
  9807/9811/9817 rejected (texture-only / catalog / on-bedframe). Runtime asset:
  `generated/v16_shield_mattress/final/shield_piss_mattress.png` (aspect 0.31, drawn vr*3.4 x vr*6.6).
