#!/usr/bin/env python3 """ Kickstarter Demo - Batch Asset Generator Generates all 113 remaining assets for the demo after API quota reset """ import time from pathlib import Path # Asset generation manifest ASSETS_TO_GENERATE = { # šŸž BUG SYSTEM (24 sprites) 'bugs': { 'common': [ ('butterfly_common', 'Common butterfly, orange and black wings, flying, chibi'), ('ladybug', 'Red ladybug with black spots, cute chibi style'), ('bee', 'Yellow and black honey bee, fuzzy, chibi'), ('ant', 'Small black ant, carrying leaf, chibi'), ('firefly', 'Glowing firefly, light effect, night, chibi'), ('grasshopper', 'Green grasshopper, jumping pose, chibi'), ], 'uncommon': [ ('monarch_butterfly', 'Monarch butterfly, vibrant orange, detailed wings'), ('dragonfly', 'Dragonfly with iridescent wings, blue-green'), ('praying_mantis', 'Green praying mantis, hunting pose'), ('luna_moth', 'Pale green luna moth, large wings, nocturnal'), ('cicada', 'Brown cicada, detailed wings'), ('japanese_beetle', 'Metallic green Japanese beetle'), ], 'rare': [ ('rainbow_beetle', 'Rainbow beetle with prismatic shell, iridescent'), ('atlas_moth', 'Giant atlas moth with detailed wing patterns'), ('orchid_mantis', 'Pink and white orchid mantis, flower camouflage'), ('jewel_wasp', 'Metallic emerald green jewel wasp'), ('hercules_beetle', 'Large horned Hercules beetle, powerful'), ('blue_morpho', 'Electric blue Morpho butterfly, glowing'), ], 'legendary': [ ('golden_scarab', 'Golden scarab beetle, glowing aura, magical'), ('crystal_butterfly', 'Translucent crystal butterfly, ethereal'), ('phoenix_moth', 'Fire-themed phoenix moth, flame wings'), ('shadow_mantis', 'Dark purple shadow mantis, mysterious aura'), ('rainbow_stag_beetle', 'Rainbow prismatic stag beetle with large horns'), ('lunar_butterfly', 'Moon-glowing butterfly, silvery white'), ] }, # šŸ”Ø TOOLS (63 sprites - 10 types Ɨ 6 tiers + 3 enchanted) 'tools': { 'hoe': ['tier1_wood', 'tier2_steel', 'tier3_gold', 'tier4_emerald', 'tier5_diamond', 'tier6_ultimate'], 'watering_can': ['tier1_wood', 'tier2_steel', 'tier3_gold', 'tier4_emerald', 'tier5_diamond', 'tier6_ultimate'], 'axe': ['tier1_wood', 'tier2_steel', 'tier3_gold', 'tier4_emerald', 'tier5_diamond', 'tier6_ultimate'], 'pickaxe': ['tier1_wood', 'tier2_steel', 'tier3_gold', 'tier4_emerald', 'tier5_diamond', 'tier6_ultimate'], 'scythe': ['tier1_wood', 'tier2_steel', 'tier3_gold', 'tier4_emerald', 'tier5_diamond', 'tier6_ultimate'], 'hammer': ['tier1_wood', 'tier2_steel', 'tier3_gold', 'tier4_emerald', 'tier5_diamond', 'tier6_ultimate'], 'fishing_rod': ['tier1_wood', 'tier2_steel', 'tier3_gold', 'tier4_emerald', 'tier5_diamond', 'tier6_ultimate'], 'bug_net': ['tier1_wood', 'tier2_steel', 'tier3_gold', 'tier4_emerald', 'tier5_diamond', 'tier6_ultimate'], 'sword': ['tier1_wood', 'tier2_steel', 'tier3_gold', 'tier4_emerald', 'tier5_diamond', 'tier6_ultimate'], 'shovel': ['tier1_wood', 'tier2_steel', 'tier3_gold', 'tier4_emerald', 'tier5_diamond', 'tier6_ultimate'], }, # šŸ‘Øā€šŸ”§ IVAN BLACKSMITH (6 sprites) 'ivan_npc': [ ('ivan_portrait_64x64', 'Burly blacksmith portrait, bearded, leather apron, soot on face'), ('ivan_idle_down', 'Blacksmith standing, facing down, muscular chibi'), ('ivan_idle_up', 'Blacksmith standing, facing up'), ('ivan_idle_left', 'Blacksmith standing, facing left'), ('ivan_idle_right', 'Blacksmith standing, facing right'), ('ivan_working', 'Blacksmith hammering at anvil, work animation'), ], # šŸšļø BLACKSMITH BUILDING (8 sprites) 'blacksmith_building': [ ('ruined_32x32', 'Ruined blacksmith, collapsed roof, broken walls'), ('ruined_64x64', 'Ruined blacksmith, larger view'), ('ruined_96x96', 'Ruined blacksmith, detailed damage'), ('ruined_128x64', 'Ruined blacksmith, full building view'), ('restored_32x32', 'Restored blacksmith, sturdy, smoke from chimney'), ('restored_64x64', 'Restored blacksmith, larger view'), ('restored_96x96', 'Restored blacksmith, detailed'), ('restored_128x64', 'Restored blacksmith, full building with anvil visible'), ], # šŸ› ļø REPAIR BENCH & UI (6 sprites) 'repair_bench': [ ('bench_32x32', 'Wooden repair workbench, tools scattered'), ('bench_64x32', 'Wider repair bench with anvil'), ('anvil_icon', 'Anvil icon for UI, 32x32'), ('hammer_icon', 'Hammer icon for UI, 32x32'), ('enchant_glow_red', 'Red particle glow effect, 16x16'), ('enchant_glow_blue', 'Blue particle glow effect, 16x16'), ], # 🌾 MISSING CROPS (3 sprites) 'crops': [ ('pumpkin_winter_s2', 'Pumpkin sprout in winter, frost, cool tones'), ('pumpkin_winter_s3', 'Young pumpkin vine in winter, cold'), ('pumpkin_winter_s6', 'Ripe pumpkin in winter, frozen harvest'), ], # šŸ“¦ ITEM ICONS (3 sprites) 'items': [ ('wood_icon', 'Stack of wooden logs, brown'), ('stone_icon', 'Pile of gray rocks, stones'), ('bread_icon', 'Loaf of bread, golden brown'), ] } def generate_asset(category, name, description): """ Generate single asset using the generate_image tool NOTE: This is a TEMPLATE script. Actual generation will be done via the Gemini Agent's generate_image tool after quota reset. This script serves as the manifest and organization guide. """ print(f" šŸ“ø {category}/{name}.png - {description}") # Prompt template for Style 32 style_spec = "Style 32 Dark-Chibi Noir, 32x32px, thick black outlines, chibi proportions, top-down view, post-apocalyptic garden aesthetic, vibrant colors, centered sprite" full_prompt = f"{description}, {style_spec}" # Return prompt for agent to use return { 'name': f"{category}_{name}", 'prompt': full_prompt, 'category': category } def main(): print("=" * 60) print("šŸŽÆ KICKSTARTER DEMO - ASSET GENERATION MANIFEST") print("=" * 60) generation_list = [] total_count = 0 # 1. BUGS print("\nšŸž BUG SYSTEM:") for rarity, bugs in ASSETS_TO_GENERATE['bugs'].items(): print(f"\n {rarity.upper()}:") for bug_name, description in bugs: asset = generate_asset('bugs', f"{rarity}_{bug_name}", description) generation_list.append(asset) total_count += 1 # 2. TOOLS print("\n\nšŸ”Ø TOOL SYSTEM:") for tool_type, tiers in ASSETS_TO_GENERATE['tools'].items(): print(f"\n {tool_type.upper()}:") for tier in tiers: description = f"{tool_type} tool, {tier.replace('_', ' ')}, game icon" asset = generate_asset('tools', f"{tool_type}_{tier}", description) generation_list.append(asset) total_count += 1 # 3. IVAN BLACKSMITH print("\n\nšŸ‘Øā€šŸ”§ IVAN BLACKSMITH NPC:") for name, description in ASSETS_TO_GENERATE['ivan_npc']: asset = generate_asset('npc', name, description) generation_list.append(asset) total_count += 1 # 4. BLACKSMITH BUILDING print("\n\nšŸšļø BLACKSMITH BUILDING:") for name, description in ASSETS_TO_GENERATE['blacksmith_building']: asset = generate_asset('buildings', name, description) generation_list.append(asset) total_count += 1 # 5. REPAIR BENCH print("\n\nšŸ› ļø REPAIR BENCH & UI:") for name, description in ASSETS_TO_GENERATE['repair_bench']: asset = generate_asset('ui', name, description) generation_list.append(asset) total_count += 1 # 6. MISSING CROPS print("\n\n🌾 MISSING CROP SPRITES:") for name, description in ASSETS_TO_GENERATE['crops']: asset = generate_asset('crops', name, description) generation_list.append(asset) total_count += 1 # 7. ITEM ICONS print("\n\nšŸ“¦ ITEM ICONS:") for name, description in ASSETS_TO_GENERATE['items']: asset = generate_asset('items', name, description) generation_list.append(asset) total_count += 1 # Summary print("\n" + "=" * 60) print(f"šŸ“Š TOTAL ASSETS TO GENERATE: {total_count}") print("=" * 60) print("\nā° WAITING FOR API QUOTA RESET...") print("šŸŽÆ After reset, agent will generate all assets automatically") print("\nāœ… This manifest is ready for execution!") if __name__ == "__main__": main()