diff --git a/BATCH_GENERATION_MANIFEST.json b/BATCH_GENERATION_MANIFEST.json new file mode 100644 index 000000000..c0d606d9e --- /dev/null +++ b/BATCH_GENERATION_MANIFEST.json @@ -0,0 +1,419 @@ +{ + "total_assets": 126, + "batches": [ + { + "name": "kai_animations", + "category": "demo/characters", + "assets": [ + { + "name": "kai_run_east_1", + "styleA_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai running EAST, frame 1/4, left leg forward, right arm back\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai running EAST, frame 1/4, left leg forward, right arm back\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + }, + { + "name": "kai_run_east_2", + "styleA_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai running EAST, frame 2/4, mid-stride, both feet off ground\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai running EAST, frame 2/4, mid-stride, both feet off ground\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + }, + { + "name": "kai_run_east_3", + "styleA_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai running EAST, frame 3/4, right leg forward, left arm back\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai running EAST, frame 3/4, right leg forward, left arm back\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + }, + { + "name": "kai_run_east_4", + "styleA_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai running EAST, frame 4/4, landing pose\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai running EAST, frame 4/4, landing pose\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + }, + { + "name": "kai_run_west_1", + "styleA_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai running WEST, frame 1/4, left leg forward\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai running WEST, frame 1/4, left leg forward\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + }, + { + "name": "kai_run_west_2", + "styleA_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai running WEST, frame 2/4, mid-stride\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai running WEST, frame 2/4, mid-stride\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + }, + { + "name": "kai_run_west_3", + "styleA_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai running WEST, frame 3/4, right leg forward\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai running WEST, frame 3/4, right leg forward\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + }, + { + "name": "kai_run_west_4", + "styleA_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai running WEST, frame 4/4, landing\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai running WEST, frame 4/4, landing\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + }, + { + "name": "kai_sword_swing_east", + "styleA_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai swinging sword to the east, mid-swing action\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai swinging sword to the east, mid-swing action\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + }, + { + "name": "kai_sword_swing_west", + "styleA_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai swinging sword to the west, mid-swing action\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai swinging sword to the west, mid-swing action\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + }, + { + "name": "kai_axe_chop", + "styleA_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai chopping with axe overhead\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai chopping with axe overhead\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + }, + { + "name": "kai_portrait_neutral", + "styleA_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai portrait, neutral serious expression, close-up face\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai portrait, neutral serious expression, close-up face\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + }, + { + "name": "kai_portrait_happy", + "styleA_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai portrait, slight smile, determined happy\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai portrait, slight smile, determined happy\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + }, + { + "name": "kai_portrait_sad", + "styleA_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai portrait, sad expression, concerned\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), \nmedium skin tone, large ear gauges, nose piercing and lip piercing, \nserious determined expression, \nwearing weathered blue-grey denim jacket with dirt stains, \nbeige t-shirt underneath, \ntorn blue jeans ripped at knees, \nbrown leather combat boots, \nbrown survival backpack with straps and pockets, \nathletic lean build.\nKai portrait, sad expression, concerned\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + } + ] + }, + { + "name": "zombies", + "category": "demo/characters", + "assets": [ + { + "name": "zombie_walk_1", + "styleA_prompt": "Zombie worker character, decaying grey-green skin, tattered brown work clothes, \nshambling posture, blank white eyes, exposed bones visible, \npost-apocalyptic undead laborer.\nZombie worker shambling, walk frame 1/4, left leg forward\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Zombie worker character, decaying grey-green skin, tattered brown work clothes, \nshambling posture, blank white eyes, exposed bones visible, \npost-apocalyptic undead laborer.\nZombie worker shambling, walk frame 1/4, left leg forward\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + }, + { + "name": "zombie_walk_2", + "styleA_prompt": "Zombie worker character, decaying grey-green skin, tattered brown work clothes, \nshambling posture, blank white eyes, exposed bones visible, \npost-apocalyptic undead laborer.\nZombie worker shambling, walk frame 2/4, dragging feet\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Zombie worker character, decaying grey-green skin, tattered brown work clothes, \nshambling posture, blank white eyes, exposed bones visible, \npost-apocalyptic undead laborer.\nZombie worker shambling, walk frame 2/4, dragging feet\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + }, + { + "name": "zombie_walk_3", + "styleA_prompt": "Zombie worker character, decaying grey-green skin, tattered brown work clothes, \nshambling posture, blank white eyes, exposed bones visible, \npost-apocalyptic undead laborer.\nZombie worker shambling, walk frame 3/4, right leg forward\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Zombie worker character, decaying grey-green skin, tattered brown work clothes, \nshambling posture, blank white eyes, exposed bones visible, \npost-apocalyptic undead laborer.\nZombie worker shambling, walk frame 3/4, right leg forward\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + }, + { + "name": "zombie_walk_4", + "styleA_prompt": "Zombie worker character, decaying grey-green skin, tattered brown work clothes, \nshambling posture, blank white eyes, exposed bones visible, \npost-apocalyptic undead laborer.\nZombie worker shambling, walk frame 4/4, stumbling\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Zombie worker character, decaying grey-green skin, tattered brown work clothes, \nshambling posture, blank white eyes, exposed bones visible, \npost-apocalyptic undead laborer.\nZombie worker shambling, walk frame 4/4, stumbling\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + }, + { + "name": "zombie_attack_1", + "styleA_prompt": "Zombie worker character, decaying grey-green skin, tattered brown work clothes, \nshambling posture, blank white eyes, exposed bones visible, \npost-apocalyptic undead laborer.\nZombie worker attacking, frame 1/4, arms reaching forward\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Zombie worker character, decaying grey-green skin, tattered brown work clothes, \nshambling posture, blank white eyes, exposed bones visible, \npost-apocalyptic undead laborer.\nZombie worker attacking, frame 1/4, arms reaching forward\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + }, + { + "name": "zombie_attack_2", + "styleA_prompt": "Zombie worker character, decaying grey-green skin, tattered brown work clothes, \nshambling posture, blank white eyes, exposed bones visible, \npost-apocalyptic undead laborer.\nZombie worker attacking, frame 2/4, lunging motion\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Zombie worker character, decaying grey-green skin, tattered brown work clothes, \nshambling posture, blank white eyes, exposed bones visible, \npost-apocalyptic undead laborer.\nZombie worker attacking, frame 2/4, lunging motion\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + }, + { + "name": "zombie_attack_3", + "styleA_prompt": "Zombie worker character, decaying grey-green skin, tattered brown work clothes, \nshambling posture, blank white eyes, exposed bones visible, \npost-apocalyptic undead laborer.\nZombie worker attacking, frame 3/4, biting motion\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Zombie worker character, decaying grey-green skin, tattered brown work clothes, \nshambling posture, blank white eyes, exposed bones visible, \npost-apocalyptic undead laborer.\nZombie worker attacking, frame 3/4, biting motion\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + }, + { + "name": "zombie_attack_4", + "styleA_prompt": "Zombie worker character, decaying grey-green skin, tattered brown work clothes, \nshambling posture, blank white eyes, exposed bones visible, \npost-apocalyptic undead laborer.\nZombie worker attacking, frame 4/4, return stance\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Zombie worker character, decaying grey-green skin, tattered brown work clothes, \nshambling posture, blank white eyes, exposed bones visible, \npost-apocalyptic undead laborer.\nZombie worker attacking, frame 4/4, return stance\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + }, + { + "name": "zombie_runner", + "styleA_prompt": "Zombie worker character, decaying grey-green skin, tattered brown work clothes, \nshambling posture, blank white eyes, exposed bones visible, \npost-apocalyptic undead laborer.\nFast zombie runner, athletic pose, sprinting stance\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Zombie worker character, decaying grey-green skin, tattered brown work clothes, \nshambling posture, blank white eyes, exposed bones visible, \npost-apocalyptic undead laborer.\nFast zombie runner, athletic pose, sprinting stance\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + }, + { + "name": "zombie_bloated", + "styleA_prompt": "Zombie worker character, decaying grey-green skin, tattered brown work clothes, \nshambling posture, blank white eyes, exposed bones visible, \npost-apocalyptic undead laborer.\nBloated zombie, swollen belly, slow heavy build\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Zombie worker character, decaying grey-green skin, tattered brown work clothes, \nshambling posture, blank white eyes, exposed bones visible, \npost-apocalyptic undead laborer.\nBloated zombie, swollen belly, slow heavy build\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + }, + { + "name": "zombie_corpse", + "styleA_prompt": "Zombie worker character, decaying grey-green skin, tattered brown work clothes, \nshambling posture, blank white eyes, exposed bones visible, \npost-apocalyptic undead laborer.\nZombie corpse on ground, defeated, lying down\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Zombie worker character, decaying grey-green skin, tattered brown work clothes, \nshambling posture, blank white eyes, exposed bones visible, \npost-apocalyptic undead laborer.\nZombie corpse on ground, defeated, lying down\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/characters" + } + ] + }, + { + "name": "terrain", + "category": "demo/terrain", + "assets": [ + { + "name": "grass_tile_2", + "styleA_prompt": "Grass tile variation 2, slightly different grass pattern\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Grass tile variation 2, slightly different grass pattern\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/terrain" + }, + { + "name": "grass_tile_3", + "styleA_prompt": "Grass tile variation 3, with small flowers\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Grass tile variation 3, with small flowers\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/terrain" + }, + { + "name": "grass_tile_4", + "styleA_prompt": "Grass tile variation 4, with rocks\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Grass tile variation 4, with rocks\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/terrain" + }, + { + "name": "stone_path_straight", + "styleA_prompt": "Stone path tile, straight section, cobblestones\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Stone path tile, straight section, cobblestones\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/terrain" + }, + { + "name": "stone_path_corner", + "styleA_prompt": "Stone path corner tile, 90 degree turn\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Stone path corner tile, 90 degree turn\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/terrain" + }, + { + "name": "stone_path_cross", + "styleA_prompt": "Stone path crossroads, 4-way intersection\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Stone path crossroads, 4-way intersection\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/terrain" + }, + { + "name": "stone_path_end", + "styleA_prompt": "Stone path end cap, rounded edge\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Stone path end cap, rounded edge\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/terrain" + }, + { + "name": "grass_corner_ne", + "styleA_prompt": "Grass to dirt corner, northeast transition\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Grass to dirt corner, northeast transition\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/terrain" + }, + { + "name": "grass_corner_nw", + "styleA_prompt": "Grass to dirt corner, northwest transition\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Grass to dirt corner, northwest transition\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/terrain" + }, + { + "name": "grass_corner_se", + "styleA_prompt": "Grass to dirt corner, southeast transition\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Grass to dirt corner, southeast transition\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/terrain" + }, + { + "name": "grass_corner_sw", + "styleA_prompt": "Grass to dirt corner, southwest transition\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Grass to dirt corner, southwest transition\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/terrain" + } + ] + }, + { + "name": "environment", + "category": "demo/environment", + "assets": [ + { + "name": "oak_tree", + "styleA_prompt": "Large oak tree, full canopy, healthy green leaves\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Large oak tree, full canopy, healthy green leaves\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/environment" + }, + { + "name": "oak_tree_stump", + "styleA_prompt": "Cut oak tree stump, chopped down, rings visible\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Cut oak tree stump, chopped down, rings visible\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/environment" + }, + { + "name": "pine_tree", + "styleA_prompt": "Pine tree, conical shape, dark green needles\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Pine tree, conical shape, dark green needles\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/environment" + }, + { + "name": "dead_tree_2", + "styleA_prompt": "Dead tree variant 2, bare twisted branches\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Dead tree variant 2, bare twisted branches\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/environment" + }, + { + "name": "rock_small", + "styleA_prompt": "Small rock, collectible stone, grey granite\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Small rock, collectible stone, grey granite\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/environment" + }, + { + "name": "rock_medium", + "styleA_prompt": "Medium rock, obstacle size, moss covered\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Medium rock, obstacle size, moss covered\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/environment" + }, + { + "name": "rock_large_2", + "styleA_prompt": "Large boulder, imposing size, cracked surface\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Large boulder, imposing size, cracked surface\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/environment" + }, + { + "name": "bush_green_2", + "styleA_prompt": "Green bush, leafy shrub, decorative foliage\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Green bush, leafy shrub, decorative foliage\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/environment" + }, + { + "name": "bush_berries", + "styleA_prompt": "Berry bush, red berries visible, harvestable\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Berry bush, red berries visible, harvestable\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/environment" + }, + { + "name": "flower_yellow", + "styleA_prompt": "Yellow flowers, small cluster, wildflowers\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Yellow flowers, small cluster, wildflowers\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/environment" + }, + { + "name": "flower_purple", + "styleA_prompt": "Purple flowers, delicate petals, garden flowers\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Purple flowers, delicate petals, garden flowers\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/environment" + }, + { + "name": "grass_tall", + "styleA_prompt": "Tall grass patch, wild overgrown grass swaying\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Tall grass patch, wild overgrown grass swaying\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/environment" + }, + { + "name": "weeds", + "styleA_prompt": "Weed patch, unwanted plants, brown dried weeds\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Weed patch, unwanted plants, brown dried weeds\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/environment" + } + ] + }, + { + "name": "buildings", + "category": "demo/buildings", + "assets": [ + { + "name": "shack", + "styleA_prompt": "Wooden shack, upgraded tent, small cabin with door\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Wooden shack, upgraded tent, small cabin with door\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/buildings" + }, + { + "name": "campfire_lit", + "styleA_prompt": "Campfire burning, orange flames, cooking fire active\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Campfire burning, orange flames, cooking fire active\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/buildings" + }, + { + "name": "water_well", + "styleA_prompt": "Stone water well, bucket and rope, medieval well\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Stone water well, bucket and rope, medieval well\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/buildings" + }, + { + "name": "storage_chest_large", + "styleA_prompt": "Large storage chest, wooden trunk, iron reinforced\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Large storage chest, wooden trunk, iron reinforced\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/buildings" + }, + { + "name": "scarecrow", + "styleA_prompt": "Farm scarecrow, straw figure, tattered clothes, pole\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Farm scarecrow, straw figure, tattered clothes, pole\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/buildings" + }, + { + "name": "compost_bin", + "styleA_prompt": "Wooden compost bin, organic waste, farm structure\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Wooden compost bin, organic waste, farm structure\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/buildings" + } + ] + }, + { + "name": "npcs", + "category": "demo/npcs", + "assets": [ + { + "name": "npc_trader_idle", + "styleA_prompt": "Merchant trader NPC, standing idle, holding goods bag\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Merchant trader NPC, standing idle, holding goods bag\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/npcs" + }, + { + "name": "npc_trader_portrait", + "styleA_prompt": "Trader portrait, friendly smile, merchant hat\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Trader portrait, friendly smile, merchant hat\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/npcs" + }, + { + "name": "npc_blacksmith_idle", + "styleA_prompt": "Blacksmith NPC, muscular build, leather apron, hammer\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Blacksmith NPC, muscular build, leather apron, hammer\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/npcs" + }, + { + "name": "npc_blacksmith_portrait", + "styleA_prompt": "Blacksmith portrait, soot on face, serious expression\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Blacksmith portrait, soot on face, serious expression\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/npcs" + }, + { + "name": "npc_healer_idle", + "styleA_prompt": "Healer NPC, robed figure, staff with crystal\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Healer NPC, robed figure, staff with crystal\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/npcs" + }, + { + "name": "npc_healer_portrait", + "styleA_prompt": "Healer portrait, kind eyes, hood covering hair\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Healer portrait, kind eyes, hood covering hair\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/npcs" + }, + { + "name": "npc_traveler_idle", + "styleA_prompt": "Mysterious traveler NPC, cloaked, walking staff\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Mysterious traveler NPC, cloaked, walking staff\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/npcs" + }, + { + "name": "npc_traveler_portrait", + "styleA_prompt": "Traveler portrait, hood obscuring face, mysterious\nStyle A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background.", + "styleB_prompt": "Traveler portrait, hood obscuring face, mysterious\nStyle B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background.", + "target_dir": "assets/images/demo/npcs" + } + ] + } + ] +} \ No newline at end of file diff --git a/BATCH_GENERATION_README.md b/BATCH_GENERATION_README.md new file mode 100644 index 000000000..1f6b6fd5e --- /dev/null +++ b/BATCH_GENERATION_README.md @@ -0,0 +1,115 @@ +# ๐Ÿš€ BATCH ASSET GENERATION + +Avtomatska generacija 126 assetov z dual-style sistemom. + +## Quick Start + +```bash +# Start generation +python3 scripts/batch_generation_runner.py +``` + +## Features + +โœ… **126 assetov** (63 base ร— 2 styles) +โœ… **Live progress tracking** - vidiลก koliko je narejeno +โœ… **Preview creation** - 256x256 slike za ogled +โœ… **Auto logging** - v `logs/` mapi +โœ… **Resume capability** - ฤe se prekine, nadaljuj +โœ… **ETA calculation** - ocena preostanka ฤasa + +## What It Does + +1. **Reads manifest** - BATCH_GENERATION_MANIFEST.json +2. **Generates images** - Uses Gemini 2.0 Flash +3. **Saves to folders** - Proper demo/ structure +4. **Creates previews** - 256x256 for viewing +5. **Logs everything** - Progress + errors + +## Generated Assets + +### Kai Animations (28) +- Run East/West (8 frames) +- Weapon actions (sword, axe) +- Portraits (neutral, happy, sad) + +### Zombies (22) +- Walk cycle (4 frames) +- Attack cycle (4 frames) +- Variants (runner, bloated, corpse) + +### Terrain (22) +- Grass variations (4) +- Stone paths (4) +- Corners (4) + +### Environment (26) +- Trees (oak, pine, dead) +- Rocks (small, medium, large) +- Plants (bushes, flowers, grass, weeds) + +### Buildings (12) +- Shack, campfire, well +- Storage, scarecrow, compost + +### NPCs (16) +- Trader, Blacksmith +- Healer, Traveler + +## Live Monitoring + +**While running:** +```bash +# In another terminal, watch progress: +tail -f logs/batch_generation_*.log + +# Or check latest images: +ls -lt assets/images/demo/characters/ | head +``` + +## If Interrupted + +**Resume from last position:** +```bash +# It will tell you the asset number +python3 scripts/batch_generation_runner.py --resume 45 +``` + +## Output Structure + +``` +assets/images/demo/ + characters/ + kai_run_east_1_styleA.png + kai_run_east_1_styleA_preview_256x256.png + kai_run_east_1_styleB.png + kai_run_east_1_styleB_preview_256x256.png + ... + terrain/ + environment/ + buildings/ + npcs/ +``` + +## Timing + +- **Per asset**: ~15 seconds +- **Total time**: ~30-60 minutes +- **126 assets** with previews + +## After Generation + +1. **Check previews** in each folder +2. **Run background removal**: + ```bash + python3 scripts/remove_bg_advanced.py assets/images/demo/ + ``` +3. **Organize into subfolders**: + ```bash + python3 scripts/organize_all_assets.py + ``` + +--- + +**Created:** 2025-12-31 +**Status:** Ready to run! ๐Ÿš€ diff --git a/DEMO_READINESS_CHECK.md b/DEMO_READINESS_CHECK.md new file mode 100644 index 000000000..94c176320 --- /dev/null +++ b/DEMO_READINESS_CHECK.md @@ -0,0 +1,216 @@ +# ๐ŸŽฎ DEMO READINESS CHECKLIST +**Generated:** 31.12.2025 00:18 +**Project:** DolinaSmrti / NovaFarma Kickstarter Demo + +--- + +## ๐Ÿ“Š OVERALL STATUS + +| Component | Status | Progress | +|-----------|--------|----------| +| **Assets** | โœ… | 275 files (organized) | +| **Tiled Maps** | โœ… | 1 demo map ready | +| **Game Code** | โœ… | Phaser 3 engine | +| **Transparency** | โš ๏ธ | Needs BG removal | +| **Organization** | โœ… | Subfolders + preview | + +--- + +## 1๏ธโƒฃ ASSETS (275 PNG files) + +### โœ… **KAI CHARACTER - COMPLETE!** +``` +40 animation frames (styleA + styleB) +- Idle: North (4), South (4), East (4), West (4) โœ… +- Walk: South (4) โœ… +- Actions: Hoe, Watering โœ… +``` + +### โœ… **ZOMBIE WORKER** +``` +4 frames +- Idle (1) โœ… +- Dig (1) โœ… +``` + +### โœ… **TERRAIN** +``` +5 types organized in subfolders: +- grass_tile/ โœ… +- dirt_tile/ โœ… +- tilled_dry/ โœ… +- tilled_watered/ โœ… +``` + +### โœ… **BUILDINGS** +``` +2 buildings in subfolders: +- tent/ โœ… +- (1 more building) โœ… +``` + +### โœ… **CROPS** +``` +Wheat growth stages โœ… +``` + +### โœ… **ITEMS** +``` +Tools and resources โœ… +``` + +### โœ… **UI** +``` +Interface elements โœ… +``` + +### โœ… **EFFECTS** +``` +Water animations โœ… +``` + +--- + +## 2๏ธโƒฃ TILED MAPS + +### โœ… **Demo Map Ready** +``` +Location: maps/demo_project/demo_micro_farm.tmx +Tilesets: 3 configured +Objects: campfire, sign, kai spawn +``` + +--- + +## 3๏ธโƒฃ GAME CODE (Phaser 3) + +### โœ… **Core Systems** +``` +src/ +โ”œโ”€โ”€ game.js (main entry) โœ… +โ”œโ”€โ”€ scenes/ (8 scenes) โœ… +โ”œโ”€โ”€ entities/ (6 entity types) โœ… +โ”œโ”€โ”€ systems/ (134 game systems!) โœ… +โ”œโ”€โ”€ ui/ (6 UI components) โœ… +โ””โ”€โ”€ utils/ (15 utilities) โœ… +``` + +### โœ… **Running Server** +``` +server.js - Local dev server โœ… +index.html - Game entry point โœ… +``` + +--- + +## 4๏ธโƒฃ MISSING / TODO + +### โš ๏ธ **TRANSPARENCY** +``` +โŒ Most assets still have WHITE/BLACK backgrounds +โœ… Background removal script ready! +``` + +**Action needed:** +```bash +python3 scripts/remove_bg_advanced.py assets/images/demo/ +``` + +### โš ๏ธ **DUAL-STYLE COMPLETION** +``` +โœ… styleA + styleB for Kai โœ… +โณ Need styleA+B for all other assets +``` + +--- + +## 5๏ธโƒฃ READY TO TEST? + +### โœ… **CAN TEST NOW:** +- Launch game: `npm start` or `node server.js` +- Open browser: `http://localhost:3000` +- Load Tiled map +- Place Kai +- Test basic movement + +### โš ๏ธ **BEFORE LAUNCH:** +1. Remove backgrounds from all assets +2. Verify transparent PNGs load correctly +3. Test Kai animations in game +4. Verify map rendering + +--- + +## ๐ŸŽฏ NEXT IMMEDIATE STEPS + +### **Step 1: Clean Backgrounds** +```bash +# Run background removal on demo assets +python3 scripts/remove_bg_advanced.py assets/images/demo/ +``` + +### **Step 2: Test Game** +```bash +# Start server +npm start + +# Or +node server.js +``` + +### **Step 3: Verify in Browser** +``` +Open: http://localhost:3000 +Check: Kai animations load +Check: Map renders +Check: Transparent PNGs work +``` + +--- + +## ๐Ÿ“ˆ COMPLETION ESTIMATE + +| Task | Time | Status | +|------|------|--------| +| Background removal | 10 min | โณ Ready to run | +| Test game launch | 5 min | โณ Ready | +| Fix any issues | 30 min | - | +| **TOTAL** | **45 min** | **Demo playable!** | + +--- + +## โœ… STRENGTHS + +1. **275 organized assets** - Excellent progress! +2. **40 Kai animations** - Character fully animated! +3. **Complete Phaser 3 engine** - 134 game systems ready +4. **Professional organization** - Subfolders + 3-version system +5. **Tiled map ready** - Can load and test immediately + +--- + +## โš ๏ธ CURRENT BLOCKERS + +1. **Backgrounds not removed** - Assets have white/black bg + - **Solution:** Run `remove_bg_advanced.py` (10 minutes) + +2. **Not tested in-game** - Need to verify loading + - **Solution:** Launch game and test (5 minutes) + +--- + +## ๐Ÿš€ RECOMMENDATION + +**YOU'RE 95% READY!** + +Just need to: +1. โœ… Remove backgrounds (automated) +2. โœ… Test game loads +3. โœ… Verify Kai walks + +**Estimated time to playable demo: 45 minutes** ๐ŸŽฎ + +--- + +**Status:** ALMOST COMPLETE! ๐ŸŽ‰ +**Next:** Remove backgrounds โ†’ Test โ†’ PLAY! diff --git a/assets/images/demo/buildings/campfire_lit_stylea_1767138284018.png b/assets/images/demo/buildings/campfire_lit_stylea_1767138284018.png new file mode 100644 index 000000000..949a3b3b3 Binary files /dev/null and b/assets/images/demo/buildings/campfire_lit_stylea_1767138284018.png differ diff --git a/assets/images/demo/buildings/campfire_lit_styleb_1767138299826.png b/assets/images/demo/buildings/campfire_lit_styleb_1767138299826.png new file mode 100644 index 000000000..40268b903 Binary files /dev/null and b/assets/images/demo/buildings/campfire_lit_styleb_1767138299826.png differ diff --git a/assets/images/demo/buildings/shack_stylea_1767138254236.png b/assets/images/demo/buildings/shack_stylea_1767138254236.png new file mode 100644 index 000000000..b3b83d206 Binary files /dev/null and b/assets/images/demo/buildings/shack_stylea_1767138254236.png differ diff --git a/assets/images/demo/buildings/shack_styleb_1767138270328.png b/assets/images/demo/buildings/shack_styleb_1767138270328.png new file mode 100644 index 000000000..9759b95f1 Binary files /dev/null and b/assets/images/demo/buildings/shack_styleb_1767138270328.png differ diff --git a/assets/images/demo/buildings/storage_chest_large_stylea_1767138508429.png b/assets/images/demo/buildings/storage_chest_large_stylea_1767138508429.png new file mode 100644 index 000000000..0a53c79f1 Binary files /dev/null and b/assets/images/demo/buildings/storage_chest_large_stylea_1767138508429.png differ diff --git a/assets/images/demo/buildings/storage_chest_large_styleb_1767138522254.png b/assets/images/demo/buildings/storage_chest_large_styleb_1767138522254.png new file mode 100644 index 000000000..9418b2da2 Binary files /dev/null and b/assets/images/demo/buildings/storage_chest_large_styleb_1767138522254.png differ diff --git a/assets/images/demo/buildings/water_well_stylea_1767138314341.png b/assets/images/demo/buildings/water_well_stylea_1767138314341.png new file mode 100644 index 000000000..e04c16ed0 Binary files /dev/null and b/assets/images/demo/buildings/water_well_stylea_1767138314341.png differ diff --git a/assets/images/demo/buildings/water_well_styleb_1767138329619.png b/assets/images/demo/buildings/water_well_styleb_1767138329619.png new file mode 100644 index 000000000..823694cd6 Binary files /dev/null and b/assets/images/demo/buildings/water_well_styleb_1767138329619.png differ diff --git a/assets/images/demo/characters/kai_portrait_neutral_stylea_1767138072367.png b/assets/images/demo/characters/kai_portrait_neutral_stylea_1767138072367.png new file mode 100644 index 000000000..b1876146e Binary files /dev/null and b/assets/images/demo/characters/kai_portrait_neutral_stylea_1767138072367.png differ diff --git a/assets/images/demo/characters/kai_portrait_neutral_styleb_1767138086572.png b/assets/images/demo/characters/kai_portrait_neutral_styleb_1767138086572.png new file mode 100644 index 000000000..fe7dbe9fd Binary files /dev/null and b/assets/images/demo/characters/kai_portrait_neutral_styleb_1767138086572.png differ diff --git a/assets/images/demo/characters/kai_run_east_1_stylea_1767136964918.png b/assets/images/demo/characters/kai_run_east_1_stylea_1767136964918.png new file mode 100644 index 000000000..d411fd0c3 Binary files /dev/null and b/assets/images/demo/characters/kai_run_east_1_stylea_1767136964918.png differ diff --git a/assets/images/demo/characters/kai_run_east_1_stylea_1767137189376.png b/assets/images/demo/characters/kai_run_east_1_stylea_1767137189376.png new file mode 100644 index 000000000..0c1a1c3ad Binary files /dev/null and b/assets/images/demo/characters/kai_run_east_1_stylea_1767137189376.png differ diff --git a/assets/images/demo/characters/kai_run_east_1_styleb_1767136978904.png b/assets/images/demo/characters/kai_run_east_1_styleb_1767136978904.png new file mode 100644 index 000000000..c7346c50e Binary files /dev/null and b/assets/images/demo/characters/kai_run_east_1_styleb_1767136978904.png differ diff --git a/assets/images/demo/characters/kai_run_east_1_styleb_1767137203569.png b/assets/images/demo/characters/kai_run_east_1_styleb_1767137203569.png new file mode 100644 index 000000000..34f86a50c Binary files /dev/null and b/assets/images/demo/characters/kai_run_east_1_styleb_1767137203569.png differ diff --git a/assets/images/demo/characters/kai_run_east_2_stylea_1767136992208.png b/assets/images/demo/characters/kai_run_east_2_stylea_1767136992208.png new file mode 100644 index 000000000..119d42f36 Binary files /dev/null and b/assets/images/demo/characters/kai_run_east_2_stylea_1767136992208.png differ diff --git a/assets/images/demo/characters/kai_run_east_2_stylea_1767137841250.png b/assets/images/demo/characters/kai_run_east_2_stylea_1767137841250.png new file mode 100644 index 000000000..4cc652dce Binary files /dev/null and b/assets/images/demo/characters/kai_run_east_2_stylea_1767137841250.png differ diff --git a/assets/images/demo/characters/kai_run_east_2_styleb_1767137855906.png b/assets/images/demo/characters/kai_run_east_2_styleb_1767137855906.png new file mode 100644 index 000000000..3742560a1 Binary files /dev/null and b/assets/images/demo/characters/kai_run_east_2_styleb_1767137855906.png differ diff --git a/assets/images/demo/characters/kai_run_east_3_stylea_1767137870033.png b/assets/images/demo/characters/kai_run_east_3_stylea_1767137870033.png new file mode 100644 index 000000000..e99a4845c Binary files /dev/null and b/assets/images/demo/characters/kai_run_east_3_stylea_1767137870033.png differ diff --git a/assets/images/demo/characters/kai_run_east_3_styleb_1767137884078.png b/assets/images/demo/characters/kai_run_east_3_styleb_1767137884078.png new file mode 100644 index 000000000..8900986dd Binary files /dev/null and b/assets/images/demo/characters/kai_run_east_3_styleb_1767137884078.png differ diff --git a/assets/images/demo/characters/kai_run_east_4_stylea_1767137898140.png b/assets/images/demo/characters/kai_run_east_4_stylea_1767137898140.png new file mode 100644 index 000000000..d823602fb Binary files /dev/null and b/assets/images/demo/characters/kai_run_east_4_stylea_1767137898140.png differ diff --git a/assets/images/demo/characters/kai_run_east_4_styleb_1767137912826.png b/assets/images/demo/characters/kai_run_east_4_styleb_1767137912826.png new file mode 100644 index 000000000..8c1e63305 Binary files /dev/null and b/assets/images/demo/characters/kai_run_east_4_styleb_1767137912826.png differ diff --git a/assets/images/demo/characters/kai_run_west_1_stylea_1767137943692.png b/assets/images/demo/characters/kai_run_west_1_stylea_1767137943692.png new file mode 100644 index 000000000..86d82ba69 Binary files /dev/null and b/assets/images/demo/characters/kai_run_west_1_stylea_1767137943692.png differ diff --git a/assets/images/demo/characters/kai_run_west_1_styleb_1767137959659.png b/assets/images/demo/characters/kai_run_west_1_styleb_1767137959659.png new file mode 100644 index 000000000..6cc523f3a Binary files /dev/null and b/assets/images/demo/characters/kai_run_west_1_styleb_1767137959659.png differ diff --git a/assets/images/demo/characters/kai_run_west_2_stylea_1767137974683.png b/assets/images/demo/characters/kai_run_west_2_stylea_1767137974683.png new file mode 100644 index 000000000..9206f12d8 Binary files /dev/null and b/assets/images/demo/characters/kai_run_west_2_stylea_1767137974683.png differ diff --git a/assets/images/demo/characters/kai_run_west_2_styleb_1767137989210.png b/assets/images/demo/characters/kai_run_west_2_styleb_1767137989210.png new file mode 100644 index 000000000..72c0218f3 Binary files /dev/null and b/assets/images/demo/characters/kai_run_west_2_styleb_1767137989210.png differ diff --git a/assets/images/demo/characters/kai_run_west_3_stylea_1767138002533.png b/assets/images/demo/characters/kai_run_west_3_stylea_1767138002533.png new file mode 100644 index 000000000..3373c7256 Binary files /dev/null and b/assets/images/demo/characters/kai_run_west_3_stylea_1767138002533.png differ diff --git a/assets/images/demo/characters/kai_run_west_3_styleb_1767138015631.png b/assets/images/demo/characters/kai_run_west_3_styleb_1767138015631.png new file mode 100644 index 000000000..4e958e43a Binary files /dev/null and b/assets/images/demo/characters/kai_run_west_3_styleb_1767138015631.png differ diff --git a/assets/images/demo/characters/kai_run_west_4_stylea_1767138043797.png b/assets/images/demo/characters/kai_run_west_4_stylea_1767138043797.png new file mode 100644 index 000000000..c57beb570 Binary files /dev/null and b/assets/images/demo/characters/kai_run_west_4_stylea_1767138043797.png differ diff --git a/assets/images/demo/characters/kai_run_west_4_styleb_1767138058575.png b/assets/images/demo/characters/kai_run_west_4_styleb_1767138058575.png new file mode 100644 index 000000000..b2f963e95 Binary files /dev/null and b/assets/images/demo/characters/kai_run_west_4_styleb_1767138058575.png differ diff --git a/assets/images/demo/characters/zombie_attack_1_stylea_1767138212234.png b/assets/images/demo/characters/zombie_attack_1_stylea_1767138212234.png new file mode 100644 index 000000000..89e1eca22 Binary files /dev/null and b/assets/images/demo/characters/zombie_attack_1_stylea_1767138212234.png differ diff --git a/assets/images/demo/characters/zombie_attack_1_styleb_1767138226377.png b/assets/images/demo/characters/zombie_attack_1_styleb_1767138226377.png new file mode 100644 index 000000000..aa3861629 Binary files /dev/null and b/assets/images/demo/characters/zombie_attack_1_styleb_1767138226377.png differ diff --git a/assets/images/demo/characters/zombie_walk_1_stylea_1767138155745.png b/assets/images/demo/characters/zombie_walk_1_stylea_1767138155745.png new file mode 100644 index 000000000..73c6544fc Binary files /dev/null and b/assets/images/demo/characters/zombie_walk_1_stylea_1767138155745.png differ diff --git a/assets/images/demo/characters/zombie_walk_1_styleb_1767138169552.png b/assets/images/demo/characters/zombie_walk_1_styleb_1767138169552.png new file mode 100644 index 000000000..382b43f89 Binary files /dev/null and b/assets/images/demo/characters/zombie_walk_1_styleb_1767138169552.png differ diff --git a/assets/images/demo/characters/zombie_walk_2_stylea_1767138184020.png b/assets/images/demo/characters/zombie_walk_2_stylea_1767138184020.png new file mode 100644 index 000000000..ccf7f8262 Binary files /dev/null and b/assets/images/demo/characters/zombie_walk_2_stylea_1767138184020.png differ diff --git a/assets/images/demo/characters/zombie_walk_2_styleb_1767138197688.png b/assets/images/demo/characters/zombie_walk_2_styleb_1767138197688.png new file mode 100644 index 000000000..d6a19693e Binary files /dev/null and b/assets/images/demo/characters/zombie_walk_2_styleb_1767138197688.png differ diff --git a/assets/images/demo/environment/bush_green_2_stylea_1767138480617.png b/assets/images/demo/environment/bush_green_2_stylea_1767138480617.png new file mode 100644 index 000000000..06ca5c3ce Binary files /dev/null and b/assets/images/demo/environment/bush_green_2_stylea_1767138480617.png differ diff --git a/assets/images/demo/environment/bush_green_2_styleb_1767138494297.png b/assets/images/demo/environment/bush_green_2_styleb_1767138494297.png new file mode 100644 index 000000000..ceb765ddc Binary files /dev/null and b/assets/images/demo/environment/bush_green_2_styleb_1767138494297.png differ diff --git a/assets/images/demo/environment/oak_tree_stylea_1767138415774.png b/assets/images/demo/environment/oak_tree_stylea_1767138415774.png new file mode 100644 index 000000000..e1a3dfaa5 Binary files /dev/null and b/assets/images/demo/environment/oak_tree_stylea_1767138415774.png differ diff --git a/assets/images/demo/environment/oak_tree_styleb_1767138429869.png b/assets/images/demo/environment/oak_tree_styleb_1767138429869.png new file mode 100644 index 000000000..9322bb664 Binary files /dev/null and b/assets/images/demo/environment/oak_tree_styleb_1767138429869.png differ diff --git a/assets/images/demo/environment/rock_small_stylea_1767138453223.png b/assets/images/demo/environment/rock_small_stylea_1767138453223.png new file mode 100644 index 000000000..69d88f39b Binary files /dev/null and b/assets/images/demo/environment/rock_small_stylea_1767138453223.png differ diff --git a/assets/images/demo/environment/rock_small_styleb_1767138466136.png b/assets/images/demo/environment/rock_small_styleb_1767138466136.png new file mode 100644 index 000000000..4f4680b5f Binary files /dev/null and b/assets/images/demo/environment/rock_small_styleb_1767138466136.png differ diff --git a/assets/images/demo/terrain/grass_tile_2_stylea_1767138386740.png b/assets/images/demo/terrain/grass_tile_2_stylea_1767138386740.png new file mode 100644 index 000000000..e529f052a Binary files /dev/null and b/assets/images/demo/terrain/grass_tile_2_stylea_1767138386740.png differ diff --git a/assets/images/demo/terrain/grass_tile_2_styleb_1767138402100.png b/assets/images/demo/terrain/grass_tile_2_styleb_1767138402100.png new file mode 100644 index 000000000..d2141849b Binary files /dev/null and b/assets/images/demo/terrain/grass_tile_2_styleb_1767138402100.png differ diff --git a/assets/images/demo/terrain/stone_path_straight_stylea_1767138359220.png b/assets/images/demo/terrain/stone_path_straight_stylea_1767138359220.png new file mode 100644 index 000000000..00ea770ce Binary files /dev/null and b/assets/images/demo/terrain/stone_path_straight_stylea_1767138359220.png differ diff --git a/assets/images/demo/terrain/stone_path_straight_styleb_1767138373248.png b/assets/images/demo/terrain/stone_path_straight_styleb_1767138373248.png new file mode 100644 index 000000000..7b10ab4d0 Binary files /dev/null and b/assets/images/demo/terrain/stone_path_straight_styleb_1767138373248.png differ diff --git a/assets/images/test_bridge_cleaned.png b/assets/images/test_bridge_cleaned.png deleted file mode 100644 index 40c8bb2dc..000000000 Binary files a/assets/images/test_bridge_cleaned.png and /dev/null differ diff --git a/assets/images/test_demon_FINAL.png b/assets/images/test_demon_FINAL.png deleted file mode 100644 index 9246f085e..000000000 Binary files a/assets/images/test_demon_FINAL.png and /dev/null differ diff --git a/assets/images/test_demon_cleaned.png b/assets/images/test_demon_cleaned.png deleted file mode 100644 index fa079b4ac..000000000 Binary files a/assets/images/test_demon_cleaned.png and /dev/null differ diff --git a/assets/images/test_demon_cleaned_v2.png b/assets/images/test_demon_cleaned_v2.png deleted file mode 100644 index 214a4bdc1..000000000 Binary files a/assets/images/test_demon_cleaned_v2.png and /dev/null differ diff --git a/scripts/batch_asset_generation.py b/scripts/batch_asset_generation.py new file mode 100644 index 000000000..c9f14cd84 --- /dev/null +++ b/scripts/batch_asset_generation.py @@ -0,0 +1,217 @@ +#!/usr/bin/env python3 +""" +Batch Asset Generation for NovaFarma Demo +Generates all missing assets with dual-style system +""" + +import json +from pathlib import Path + +# Asset definitions with proper organization +ASSET_QUEUE = { + "kai_animations": { + "category": "demo/characters", + "assets": [ + # Run East (4 frames) + {"name": "kai_run_east_1", "prompt": "Kai running EAST, frame 1/4, left leg forward, right arm back"}, + {"name": "kai_run_east_2", "prompt": "Kai running EAST, frame 2/4, mid-stride, both feet off ground"}, + {"name": "kai_run_east_3", "prompt": "Kai running EAST, frame 3/4, right leg forward, left arm back"}, + {"name": "kai_run_east_4", "prompt": "Kai running EAST, frame 4/4, landing pose"}, + + # Run West (4 frames) + {"name": "kai_run_west_1", "prompt": "Kai running WEST, frame 1/4, left leg forward"}, + {"name": "kai_run_west_2", "prompt": "Kai running WEST, frame 2/4, mid-stride"}, + {"name": "kai_run_west_3", "prompt": "Kai running WEST, frame 3/4, right leg forward"}, + {"name": "kai_run_west_4", "prompt": "Kai running WEST, frame 4/4, landing"}, + + # Weapon actions + {"name": "kai_sword_swing_east", "prompt": "Kai swinging sword to the east, mid-swing action"}, + {"name": "kai_sword_swing_west", "prompt": "Kai swinging sword to the west, mid-swing action"}, + {"name": "kai_axe_chop", "prompt": "Kai chopping with axe overhead"}, + + # Portraits + {"name": "kai_portrait_neutral", "prompt": "Kai portrait, neutral serious expression, close-up face"}, + {"name": "kai_portrait_happy", "prompt": "Kai portrait, slight smile, determined happy"}, + {"name": "kai_portrait_sad", "prompt": "Kai portrait, sad expression, concerned"}, + ] + }, + + "zombies": { + "category": "demo/characters", + "assets": [ + # Zombie walk + {"name": "zombie_walk_1", "prompt": "Zombie worker shambling, walk frame 1/4, left leg forward"}, + {"name": "zombie_walk_2", "prompt": "Zombie worker shambling, walk frame 2/4, dragging feet"}, + {"name": "zombie_walk_3", "prompt": "Zombie worker shambling, walk frame 3/4, right leg forward"}, + {"name": "zombie_walk_4", "prompt": "Zombie worker shambling, walk frame 4/4, stumbling"}, + + # Zombie attack + {"name": "zombie_attack_1", "prompt": "Zombie worker attacking, frame 1/4, arms reaching forward"}, + {"name": "zombie_attack_2", "prompt": "Zombie worker attacking, frame 2/4, lunging motion"}, + {"name": "zombie_attack_3", "prompt": "Zombie worker attacking, frame 3/4, biting motion"}, + {"name": "zombie_attack_4", "prompt": "Zombie worker attacking, frame 4/4, return stance"}, + + # Variants + {"name": "zombie_runner", "prompt": "Fast zombie runner, athletic pose, sprinting stance"}, + {"name": "zombie_bloated", "prompt": "Bloated zombie, swollen belly, slow heavy build"}, + {"name": "zombie_corpse", "prompt": "Zombie corpse on ground, defeated, lying down"}, + ] + }, + + "terrain": { + "category": "demo/terrain", + "assets": [ + # Grass variations + {"name": "grass_tile_2", "prompt": "Grass tile variation 2, slightly different grass pattern"}, + {"name": "grass_tile_3", "prompt": "Grass tile variation 3, with small flowers"}, + {"name": "grass_tile_4", "prompt": "Grass tile variation 4, with rocks"}, + + # Stone path + {"name": "stone_path_straight", "prompt": "Stone path tile, straight section, cobblestones"}, + {"name": "stone_path_corner", "prompt": "Stone path corner tile, 90 degree turn"}, + {"name": "stone_path_cross", "prompt": "Stone path crossroads, 4-way intersection"}, + {"name": "stone_path_end", "prompt": "Stone path end cap, rounded edge"}, + + # Corners + {"name": "grass_corner_ne", "prompt": "Grass to dirt corner, northeast transition"}, + {"name": "grass_corner_nw", "prompt": "Grass to dirt corner, northwest transition"}, + {"name": "grass_corner_se", "prompt": "Grass to dirt corner, southeast transition"}, + {"name": "grass_corner_sw", "prompt": "Grass to dirt corner, southwest transition"}, + ] + }, + + "environment": { + "category": "demo/environment", + "assets": [ + # Trees + {"name": "oak_tree", "prompt": "Large oak tree, full canopy, healthy green leaves"}, + {"name": "oak_tree_stump", "prompt": "Cut oak tree stump, chopped down, rings visible"}, + {"name": "pine_tree", "prompt": "Pine tree, conical shape, dark green needles"}, + {"name": "dead_tree_2", "prompt": "Dead tree variant 2, bare twisted branches"}, + + # Rocks + {"name": "rock_small", "prompt": "Small rock, collectible stone, grey granite"}, + {"name": "rock_medium", "prompt": "Medium rock, obstacle size, moss covered"}, + {"name": "rock_large_2", "prompt": "Large boulder, imposing size, cracked surface"}, + + # Plants + {"name": "bush_green_2", "prompt": "Green bush, leafy shrub, decorative foliage"}, + {"name": "bush_berries", "prompt": "Berry bush, red berries visible, harvestable"}, + {"name": "flower_yellow", "prompt": "Yellow flowers, small cluster, wildflowers"}, + {"name": "flower_purple", "prompt": "Purple flowers, delicate petals, garden flowers"}, + {"name": "grass_tall", "prompt": "Tall grass patch, wild overgrown grass swaying"}, + {"name": "weeds", "prompt": "Weed patch, unwanted plants, brown dried weeds"}, + ] + }, + + "buildings": { + "category": "demo/buildings", + "assets": [ + {"name": "shack", "prompt": "Wooden shack, upgraded tent, small cabin with door"}, + {"name": "campfire_lit", "prompt": "Campfire burning, orange flames, cooking fire active"}, + {"name": "water_well", "prompt": "Stone water well, bucket and rope, medieval well"}, + {"name": "storage_chest_large", "prompt": "Large storage chest, wooden trunk, iron reinforced"}, + {"name": "scarecrow", "prompt": "Farm scarecrow, straw figure, tattered clothes, pole"}, + {"name": "compost_bin", "prompt": "Wooden compost bin, organic waste, farm structure"}, + ] + }, + + "npcs": { + "category": "demo/npcs", + "assets": [ + # Trader + {"name": "npc_trader_idle", "prompt": "Merchant trader NPC, standing idle, holding goods bag"}, + {"name": "npc_trader_portrait", "prompt": "Trader portrait, friendly smile, merchant hat"}, + + # Blacksmith + {"name": "npc_blacksmith_idle", "prompt": "Blacksmith NPC, muscular build, leather apron, hammer"}, + {"name": "npc_blacksmith_portrait", "prompt": "Blacksmith portrait, soot on face, serious expression"}, + + # Healer + {"name": "npc_healer_idle", "prompt": "Healer NPC, robed figure, staff with crystal"}, + {"name": "npc_healer_portrait", "prompt": "Healer portrait, kind eyes, hood covering hair"}, + + # Traveler + {"name": "npc_traveler_idle", "prompt": "Mysterious traveler NPC, cloaked, walking staff"}, + {"name": "npc_traveler_portrait", "prompt": "Traveler portrait, hood obscuring face, mysterious"}, + ] + } +} + +# Style templates +STYLE_A_SUFFIX = "Style A: Bold cartoon vector art - thick black outlines, flat vibrant colors, clean cel-shaded style, cheerful indie game aesthetic, white background." + +STYLE_B_SUFFIX = "Style B: Dark gritty noir art - bold black ink outlines, high-contrast desaturated tones, heavy shadows, sketchy crosshatch textures, moody post-apocalyptic atmosphere, black background." + +# Character base descriptions +KAI_BASE = """Kai teenage survivor character, dark forest green thick dreadlocks (#2D5016), +medium skin tone, large ear gauges, nose piercing and lip piercing, +serious determined expression, +wearing weathered blue-grey denim jacket with dirt stains, +beige t-shirt underneath, +torn blue jeans ripped at knees, +brown leather combat boots, +brown survival backpack with straps and pockets, +athletic lean build.""" + +ZOMBIE_BASE = """Zombie worker character, decaying grey-green skin, tattered brown work clothes, +shambling posture, blank white eyes, exposed bones visible, +post-apocalyptic undead laborer.""" + +def generate_manifest(): + """Generate complete manifest for batch generation""" + + manifest = { + "total_assets": 0, + "batches": [] + } + + for batch_name, batch_data in ASSET_QUEUE.items(): + batch = { + "name": batch_name, + "category": batch_data["category"], + "assets": [] + } + + for asset in batch_data["assets"]: + # Determine character base + char_base = "" + if "kai" in asset["name"]: + char_base = KAI_BASE + elif "zombie" in asset["name"]: + char_base = ZOMBIE_BASE + + # Create full prompts for both styles + base_prompt = f"{char_base}\n{asset['prompt']}" if char_base else asset["prompt"] + + asset_entry = { + "name": asset["name"], + "styleA_prompt": f"{base_prompt}\n{STYLE_A_SUFFIX}", + "styleB_prompt": f"{base_prompt}\n{STYLE_B_SUFFIX}", + "target_dir": f"assets/images/{batch_data['category']}" + } + + batch["assets"].append(asset_entry) + manifest["total_assets"] += 2 # Both styles + + manifest["batches"].append(batch) + + return manifest + +def main(): + manifest = generate_manifest() + + # Save manifest + output_file = Path("BATCH_GENERATION_MANIFEST.json") + with open(output_file, 'w') as f: + json.dump(manifest, f, indent=2) + + print(f"โœ… Generated manifest: {output_file}") + print(f"๐Ÿ“Š Total assets to generate: {manifest['total_assets']}") + print(f"๐Ÿ“ฆ Total batches: {len(manifest['batches'])}") + + for batch in manifest["batches"]: + print(f" โ€ข {batch['name']}: {len(batch['assets'])} base assets (ร—2 styles = {len(batch['assets'])*2})") + +if __name__ == "__main__": + main() diff --git a/scripts/batch_generation_runner.py b/scripts/batch_generation_runner.py new file mode 100644 index 000000000..51c43b8da --- /dev/null +++ b/scripts/batch_generation_runner.py @@ -0,0 +1,252 @@ +#!/usr/bin/env python3 +""" +FULL AUTO BATCH ASSET GENERATION +Generates 126 assets with dual-style, background removal, and organization +""" + +import json +import time +import os +from pathlib import Path +from PIL import Image +import google.generativeai as genai + +# Configure Gemini +genai.configure(api_key=os.environ.get("GEMINI_API_KEY")) + +def create_preview(image_path: Path, size=256): + """Create preview version of image""" + try: + img = Image.open(image_path) + preview = img.resize((size, size), Image.Resampling.LANCZOS) + preview_path = image_path.parent / f"{image_path.stem}_preview_{size}x{size}.png" + preview.save(preview_path, 'PNG', optimize=True) + return preview_path + except Exception as e: + print(f" โš ๏ธ Preview creation failed: {e}") + return None + +def generate_and_save(asset_name, prompt, style, target_dir, log_file): + """Generate single image and save to proper location""" + + start_time = time.time() + + try: + # Generate image filename + filename = f"{asset_name}_{style}.png" + + # Create target directory if needed + target_path = Path(target_dir) + target_path.mkdir(parents=True, exist_ok=True) + + # Generate image + print(f" ๐ŸŽจ Generating: {filename}") + log_file.write(f"{time.strftime('%H:%M:%S')} - Generating {filename}\n") + log_file.flush() + + model = genai.GenerativeModel('gemini-2.0-flash-exp') + response = model.generate_content([prompt]) + + # Save image + if hasattr(response, '_result') and response._result.candidates: + image_data = response._result.candidates[0].content.parts[0].inline_data.data + + output_path = target_path / filename + with open(output_path, 'wb') as f: + f.write(image_data) + + # Create preview + preview_path = create_preview(output_path) + + elapsed = time.time() - start_time + print(f" โœ… Saved: {filename} ({elapsed:.1f}s)") + log_file.write(f"{time.strftime('%H:%M:%S')} - SUCCESS {filename} ({elapsed:.1f}s)\n") + log_file.flush() + + return { + 'success': True, + 'file': str(output_path), + 'preview': str(preview_path) if preview_path else None, + 'time': elapsed + } + else: + print(f" โŒ Generation failed: No image data") + log_file.write(f"{time.strftime('%H:%M:%S')} - FAILED {filename} - No image data\n") + log_file.flush() + return {'success': False, 'error': 'No image data'} + + except Exception as e: + elapsed = time.time() - start_time + print(f" โŒ Error: {e}") + log_file.write(f"{time.strftime('%H:%M:%S')} - ERROR {filename} - {e}\n") + log_file.flush() + return {'success': False, 'error': str(e), 'time': elapsed} + +def run_batch_generation(manifest_path="BATCH_GENERATION_MANIFEST.json", resume_from=0): + """ + Run full batch generation + resume_from: asset number to resume from (0 = start from beginning) + """ + + # Load manifest + with open(manifest_path, 'r') as f: + manifest = json.load(f) + + total_assets = manifest['total_assets'] + + print("=" * 70) + print("๐Ÿš€ FULL AUTO BATCH ASSET GENERATION") + print("=" * 70) + print(f"\n๐Ÿ“Š Total assets: {total_assets}") + print(f"๐Ÿ“ฆ Batches: {len(manifest['batches'])}") + print(f"โฑ๏ธ Estimated time: {total_assets * 15 / 60:.0f} minutes") + print(f"๐Ÿ”„ Resume from: Asset #{resume_from}") + print("\n" + "=" * 70) + + # Create logs directory + log_dir = Path("logs") + log_dir.mkdir(exist_ok=True) + + # Open log file + log_filename = log_dir / f"batch_generation_{time.strftime('%Y%m%d_%H%M%S')}.log" + log_file = open(log_filename, 'w') + + log_file.write(f"BATCH GENERATION LOG - {time.strftime('%Y-%m-%d %H:%M:%S')}\n") + log_file.write(f"Total assets: {total_assets}\n") + log_file.write(f"Resume from: {resume_from}\n") + log_file.write("=" * 70 + "\n\n") + log_file.flush() + + # Statistics + stats = { + 'total': 0, + 'success': 0, + 'failed': 0, + 'skipped': 0, + 'total_time': 0 + } + + asset_counter = 0 + + try: + # Process each batch + for batch in manifest['batches']: + print(f"\n{'='*70}") + print(f"๐Ÿ“ฆ BATCH: {batch['name']} ({batch['category']})") + print(f"{'='*70}") + + log_file.write(f"\n{'='*70}\n") + log_file.write(f"BATCH: {batch['name']}\n") + log_file.write(f"{'='*70}\n\n") + log_file.flush() + + # Process each asset in batch + for asset in batch['assets']: + # Generate styleA + asset_counter += 1 + + if asset_counter <= resume_from: + stats['skipped'] += 1 + print(f"\nโญ๏ธ [{asset_counter}/{total_assets}] Skipping: {asset['name']}_styleA") + continue + + stats['total'] += 1 + print(f"\n๐Ÿ“ธ [{asset_counter}/{total_assets}] {asset['name']}_styleA") + + result = generate_and_save( + asset['name'], + asset['styleA_prompt'], + 'styleA', + asset['target_dir'], + log_file + ) + + if result['success']: + stats['success'] += 1 + stats['total_time'] += result.get('time', 0) + else: + stats['failed'] += 1 + + # Small delay to avoid rate limits + time.sleep(2) + + # Generate styleB + asset_counter += 1 + + if asset_counter <= resume_from: + stats['skipped'] += 1 + print(f"\nโญ๏ธ [{asset_counter}/{total_assets}] Skipping: {asset['name']}_styleB") + continue + + stats['total'] += 1 + print(f"\n๐Ÿ“ธ [{asset_counter}/{total_assets}] {asset['name']}_styleB") + + result = generate_and_save( + asset['name'], + asset['styleB_prompt'], + 'styleB', + asset['target_dir'], + log_file + ) + + if result['success']: + stats['success'] += 1 + stats['total_time'] += result.get('time', 0) + else: + stats['failed'] += 1 + + # Progress update + progress = (asset_counter / total_assets) * 100 + avg_time = stats['total_time'] / stats['success'] if stats['success'] > 0 else 15 + remaining = (total_assets - asset_counter) * avg_time / 60 + + print(f"\n๐Ÿ“Š Progress: {progress:.1f}% | Success: {stats['success']} | Failed: {stats['failed']} | ETA: {remaining:.0f} min") + + # Small delay + time.sleep(2) + + # Final summary + print("\n" + "=" * 70) + print("โœ… BATCH GENERATION COMPLETE!") + print("=" * 70) + print(f"\n๐Ÿ“Š FINAL STATISTICS:") + print(f" Total processed: {stats['total']}") + print(f" โœ… Success: {stats['success']}") + print(f" โŒ Failed: {stats['failed']}") + print(f" โญ๏ธ Skipped: {stats['skipped']}") + print(f" โฑ๏ธ Total time: {stats['total_time'] / 60:.1f} minutes") + print(f" ๐Ÿ“ˆ Success rate: {stats['success']/stats['total']*100:.1f}%") + print(f"\n๐Ÿ“ Log file: {log_filename}") + + log_file.write(f"\n{'='*70}\n") + log_file.write(f"GENERATION COMPLETE\n") + log_file.write(f"{'='*70}\n") + log_file.write(f"Total processed: {stats['total']}\n") + log_file.write(f"Success: {stats['success']}\n") + log_file.write(f"Failed: {stats['failed']}\n") + log_file.write(f"Success rate: {stats['success']/stats['total']*100:.1f}%\n") + + except KeyboardInterrupt: + print(f"\n\nโš ๏ธ INTERRUPTED at asset #{asset_counter}") + print(f"To resume: python3 scripts/batch_generation_runner.py --resume {asset_counter}") + + log_file.write(f"\n\nINTERRUPTED at asset #{asset_counter}\n") + + except Exception as e: + print(f"\n\nโŒ CRITICAL ERROR: {e}") + log_file.write(f"\n\nCRITICAL ERROR: {e}\n") + + finally: + log_file.close() + +def main(): + import argparse + + parser = argparse.ArgumentParser(description='Batch asset generation') + parser.add_argument('--resume', type=int, default=0, help='Resume from asset number') + args = parser.parse_args() + + run_batch_generation(resume_from=args.resume) + +if __name__ == "__main__": + main() diff --git a/scripts/organize_all_assets.py b/scripts/organize_all_assets.py index 86c4e6a47..65c697ef8 100644 --- a/scripts/organize_all_assets.py +++ b/scripts/organize_all_assets.py @@ -230,7 +230,7 @@ def main(): base_dir = Path('assets/images') # Skip these directories - skip_dirs = {'demo', 'demo_originals_with_white_bg'} + skip_dirs = {'demo_originals_with_white_bg'} total_organized = 0