Files
novafarma/scripts/generate_assets_full.py
David Kotnik 349aa917db Dolina Smrti V6.0 - Dark Survival style pivot
MAJOR CHANGES:
- Complete art style change from anime/cute to Dark Survival
- Deleted all anime-style assets (229 files)
- New post-apocalyptic visual style: gritty, realistic, weathered

NEW ASSETS (in progress):
- kai_markovic.png + 18 animation frames (front/back/left idle/walk/work)
- Dark Survival style with pink-green dreadlocks, plugs, piercings

NEW SCRIPTS:
- generate_v6_final.py: Main V6.0 generator (413 assets registry)
- generate_assets_dark.py: Dark Survival style generator
- generate_assets_full.py: Full registry generator

REGISTRY (413 assets):
- npcs: 117 (Kai, Gronk, Viktor + animations)
- environment: 104 (18 biomes with tiles)
- items: 94 (weapons, medical, food, tools)
- buildings: 29, ui: 28, mutanti: 21, zivali: 12, bosses: 8

Style specs:
- Cinematic 2D, hand-drawn, post-apocalyptic
- Transparent backgrounds (alpha channel)
- NO anime/pixel art/voxel (negative prompt enforced)
- 32x32 tiles, 48-64px characters, 128px bosses
2025-12-28 23:18:30 +01:00

1018 lines
44 KiB
Python

#!/usr/bin/env python3
"""
DolinaSmrti FULL Master Registry - 9000+ Assets
Complete asset generation system with ComfyUI
Automatically skips existing assets
"""
import os
import json
import time
import uuid
import requests
from pathlib import Path
from typing import List, Dict
# Configuration
COMFYUI_URL = "http://127.0.0.1:8000"
OUTPUT_DIR = "/Users/davidkotnik/repos/novafarma/assets/images"
# Style prefix for 2D Stardew Valley look
STYLE_PREFIX = "Stardew Valley style, 2d game asset, flat color, clean vector art, smooth shading, cute cartoon, top-down view, game sprite, isolated on solid bright green background, "
NEGATIVE_PROMPT = "pixel art, pixelated, voxel, 3d render, realistic, photo, blurry, low quality, distorted, ugly, bad anatomy, text, watermark"
# ============================================================================
# MASTER REGISTRY - 9000+ ASSETS
# Organized by category with unique prompts
# ============================================================================
def generate_registry() -> List[Dict]:
"""Generate the complete 9000+ asset registry"""
assets = []
# ========================================================================
# 1. CHARACTERS & NPCs (~200 assets)
# ========================================================================
npcs = [
# Main Characters
("kai_protagonist", "Kai protagonist, young farmer with pink dreadlocks, athletic build, determined expression, survivor clothing"),
("ana_twin", "Ana, Kai's twin sister, pink dreadlocks, kind expression, explorer outfit"),
("grok_alpha_troll", "Grok Alpha Troll, GREEN SKIN, rainbow dreadlocks, facial piercings, graphic t-shirt"),
("susi_dachshund", "Susi the Dachshund companion, brown with darker spots, long body, floppy ears"),
# Town NPCs - Merchants
("ivan_blacksmith", "Ivan the Blacksmith, muscular build, leather apron, hammer, friendly beard"),
("marija_baker", "Marija the Baker, warm smile, chef's apron, holding bread"),
("luka_fisherman", "Luka the Fisherman, weathered face, fishing hat, rubber boots"),
("petra_herbalist", "Petra the Herbalist, elderly woman, flower crown, herb pouch"),
("janez_carpenter", "Janez the Carpenter, sawdust on clothes, measuring tape, friendly"),
("ana_tailor", "Ana the Tailor, elegant dress, measuring tape around neck, scissors"),
("matej_miner", "Matej the Miner, hard hat with lamp, pickaxe, dusty clothes"),
("nina_jeweler", "Nina the Jeweler, magnifying glass, gem loupe, precise hands"),
("tomaz_innkeeper", "Tomaz the Innkeeper, round belly, friendly mustache, apron"),
("eva_alchemist", "Eva the Alchemist, purple robes, bubbling potions, mysterious"),
# Town NPCs - Services
("mayor_franc", "Mayor Franc, formal suit, top hat, ceremonial sash"),
("doctor_vid", "Doctor Vid, white coat, stethoscope, medical bag"),
("teacher_mojca", "Teacher Mojca, glasses, books, kind expression"),
("priest_jakob", "Priest Jakob, religious robes, holy book, peaceful"),
("guard_captain", "Guard Captain, armor, sword, protective stance"),
("stable_master", "Stable Master, hay in hair, horse brush, friendly"),
# Wandering NPCs
("traveling_merchant", "Traveling Merchant, colorful wagon, exotic goods"),
("wandering_bard", "Wandering Bard, lute, feathered hat, cheerful"),
("mysterious_stranger", "Mysterious Stranger, hooded cloak, hidden face"),
("fortune_teller", "Fortune Teller, crystal ball, mystical robes, jewelry"),
("treasure_hunter", "Treasure Hunter, adventure gear, map, compass"),
]
for name, prompt in npcs:
assets.append({"cat": "npcs", "file": f"{name}.png", "prompt": prompt})
# Add variations (4 directions) for main characters
for char in ["kai", "ana", "grok"]:
for direction in ["front", "back", "left", "right"]:
for action in ["idle", "walk1", "walk2", "run1", "run2"]:
assets.append({
"cat": "npcs",
"file": f"{char}_{direction}_{action}.png",
"prompt": f"{char.title()} character sprite, {direction} facing, {action} animation frame"
})
# ========================================================================
# 2. ANIMALS - LIVESTOCK (~150 assets)
# ========================================================================
livestock = [
# Basic Farm Animals
("cow_normal", "Normal dairy cow, black and white Holstein pattern, friendly"),
("cow_brown", "Brown dairy cow, solid brown color, peaceful"),
("cow_highland", "Highland cow, long shaggy hair, horns"),
("sheep_normal", "Normal farm sheep, fluffy white wool, black face"),
("sheep_black", "Black sheep, dark wool, rare variety"),
("sheep_merino", "Merino sheep, extra fluffy premium wool"),
("chicken_white", "White chicken, red comb, pecking"),
("chicken_brown", "Brown chicken, speckled feathers"),
("chicken_rooster", "Rooster, colorful tail feathers, proud stance"),
("pig_normal", "Normal farm pig, pink, curly tail"),
("pig_spotted", "Spotted pig, black and pink patches"),
("pig_wild", "Wild boar variant, tusks, bristly hair"),
("horse_brown", "Brown riding horse, black mane"),
("horse_white", "White horse, elegant, long mane"),
("horse_black", "Black horse, powerful, shiny coat"),
("goat_normal", "Farm goat, small horns, beard"),
("goat_angora", "Angora goat, long fluffy coat"),
("duck_white", "White duck, orange beak, wadding"),
("duck_mallard", "Mallard duck, green head, colorful"),
("goose_white", "White goose, long neck, guarding"),
("turkey_normal", "Turkey, gobbler, feather display"),
("rabbit_farm", "Farm rabbit, fluffy, long ears"),
("llama_normal", "Llama, fluffy, long neck, curious"),
("alpaca_white", "White alpaca, extra fluffy, cute face"),
("donkey_grey", "Grey donkey, large ears, sturdy"),
# Mutant/Magic Variants
("cow_golden", "Golden Cow, shimmering gold hide, magical"),
("sheep_fire", "Fire Sheep, wool made of flames, glowing"),
("sheep_ice", "Ice Sheep, frozen wool, frost aura"),
("sheep_golden", "Golden Fleece Sheep, metallic gold wool"),
("chicken_phoenix", "Phoenix Chicken, fire feathers, glowing"),
("chicken_rainbow", "Rainbow Chicken, multicolor feathers"),
("chicken_three_headed", "Three-Headed Chicken, mutant, three heads"),
("pig_giant", "Giant Pig, rideable size, strong"),
("horse_undead", "Undead Horse, skeletal, ghostly mane"),
("unicorn", "Unicorn, white with rainbow mane, golden horn"),
("pegasus", "Pegasus, white horse with wings, flying"),
("golden_goose", "Golden Goose, shimmering gold, lays golden eggs"),
]
for name, prompt in livestock:
assets.append({"cat": "zivali", "file": f"{name}.png", "prompt": prompt})
# ========================================================================
# 3. ANIMALS - WILDLIFE (~200 assets)
# ========================================================================
wildlife = [
# Forest Animals
("fox_red", "Red fox, bushy tail, forest predator"),
("fox_arctic", "Arctic fox, white fur, winter variant"),
("deer_normal", "Deer, brown coat, antlers"),
("deer_doe", "Doe deer, no antlers, gentle"),
("deer_fawn", "Fawn, baby deer, spotted coat"),
("rabbit_wild", "Wild rabbit, brown fur, hopping"),
("rabbit_arctic", "Arctic hare, white fur, winter"),
("hedgehog", "Hedgehog, spiky back, small cute"),
("squirrel_red", "Red squirrel, bushy tail, acorn"),
("squirrel_grey", "Grey squirrel, common forest"),
("raccoon", "Raccoon, masked face, ringed tail"),
("skunk", "Skunk, black and white stripe"),
("opossum", "Opossum, grey, playing dead"),
("beaver", "Beaver, flat tail, dam builder"),
("otter_river", "River otter, playful, swimming"),
("badger", "Badger, black and white face, digging"),
("porcupine", "Porcupine, quills, slow moving"),
("bear_brown", "Brown bear, large, forest predator"),
("bear_black", "Black bear, smaller, foraging"),
("bear_polar", "Polar bear, white, ice biome"),
("wolf_grey", "Grey wolf, pack hunter, howling"),
("wolf_white", "White wolf, arctic variant"),
("wolf_black", "Black wolf, rare alpha"),
("moose", "Moose, large antlers, imposing"),
("elk", "Elk, antlers, majestic"),
("boar_wild", "Wild boar, tusks, aggressive"),
# Birds
("owl_barn", "Barn owl, white face, nocturnal"),
("owl_great_horned", "Great horned owl, ear tufts"),
("owl_snowy", "Snowy owl, white feathers"),
("eagle_bald", "Bald eagle, white head, powerful"),
("eagle_golden", "Golden eagle, majestic hunter"),
("hawk_red_tailed", "Red-tailed hawk, soaring"),
("falcon_peregrine", "Peregrine falcon, fastest bird"),
("crow_common", "Common crow, black, intelligent"),
("raven", "Raven, large black, ominous"),
("sparrow", "Sparrow, small brown, common"),
("robin", "Robin, red breast, friendly"),
("bluebird", "Bluebird, bright blue, cheerful"),
("cardinal", "Cardinal, red, crested"),
("woodpecker", "Woodpecker, pecking tree"),
("hummingbird", "Hummingbird, tiny, colorful"),
("peacock", "Peacock, colorful tail display"),
("swan_white", "White swan, elegant, water"),
("swan_black", "Black swan, rare, graceful"),
("pelican", "Pelican, large beak pouch"),
("flamingo", "Flamingo, pink, one leg standing"),
("parrot_green", "Green parrot, tropical"),
("parrot_macaw", "Macaw, colorful, large"),
# Insects & Small
("butterfly_monarch", "Monarch butterfly, orange wings"),
("butterfly_blue", "Blue butterfly, iridescent"),
("butterfly_yellow", "Yellow butterfly, spring"),
("bee_normal", "Honey bee, fuzzy, collecting"),
("bee_bumblebee", "Bumblebee, large fuzzy"),
("dragonfly", "Dragonfly, long body, four wings"),
("firefly", "Firefly, glowing, night"),
("ladybug", "Ladybug, red with spots"),
("grasshopper", "Grasshopper, green, jumping"),
("cricket", "Cricket, chirping, night"),
("caterpillar", "Caterpillar, striped, crawling"),
("snail", "Snail, spiral shell, slow"),
("slug", "Slug, no shell, garden"),
("worm", "Earthworm, pink, soil"),
("frog_green", "Green frog, pond, hopping"),
("frog_red", "Red frog, poisonous look"),
("toad", "Toad, warty, brown"),
("turtle_box", "Box turtle, hard shell"),
("turtle_snapping", "Snapping turtle, dangerous"),
("snake_garden", "Garden snake, harmless, green"),
("snake_rattlesnake", "Rattlesnake, dangerous, rattle"),
("lizard_green", "Green lizard, quick"),
("gecko", "Gecko, colorful, climbing"),
# Fish
("fish_bass", "Bass fish, freshwater, silver"),
("fish_trout", "Trout, spotted, freshwater"),
("fish_salmon", "Salmon, orange-pink, swimming"),
("fish_tuna", "Tuna, large ocean fish"),
("fish_cod", "Cod, white fish, common"),
("fish_mackerel", "Mackerel, striped"),
("fish_carp", "Carp, bottom feeder"),
("fish_catfish", "Catfish, whiskers, muddy"),
("fish_pike", "Pike, predator, long"),
("fish_perch", "Perch, striped, freshwater"),
("fish_goldfish", "Goldfish, orange, pet"),
("fish_koi", "Koi fish, colorful, ornamental"),
("fish_clownfish", "Clownfish, orange white stripes"),
("fish_angelfish", "Angelfish, tropical, elegant"),
("fish_pufferfish", "Pufferfish, spiky when scared"),
("fish_swordfish", "Swordfish, long nose"),
("fish_golden", "Golden Fish, legendary, sparkling"),
("shark_great_white", "Great white shark, predator"),
("shark_hammerhead", "Hammerhead shark, unique head"),
("shark_whale", "Whale shark, gentle giant"),
("ray_manta", "Manta ray, wide wings, graceful"),
("ray_stingray", "Stingray, flat, buried in sand"),
("jellyfish_normal", "Jellyfish, translucent, tentacles"),
("jellyfish_lion_mane", "Lion's mane jellyfish, large"),
("octopus", "Octopus, eight arms, intelligent"),
("squid", "Squid, tentacles, shooting ink"),
("crab_red", "Red crab, claws, sideways walk"),
("crab_blue", "Blue crab, ocean"),
("lobster", "Lobster, large claws, red"),
("shrimp", "Shrimp, small, pink"),
("starfish", "Starfish, five arms, orange"),
("seahorse", "Seahorse, curled tail, upright"),
("whale_blue", "Blue whale, largest, spouting"),
("whale_orca", "Orca, black and white"),
("dolphin", "Dolphin, playful, jumping"),
("seal", "Seal, flippered, barking"),
("walrus", "Walrus, tusks, whiskers"),
("penguin_emperor", "Emperor penguin, tuxedo"),
("penguin_little", "Little penguin, blue, small"),
]
for name, prompt in wildlife:
assets.append({"cat": "zivali", "file": f"{name}.png", "prompt": prompt})
# ========================================================================
# 4. MONSTERS & MUTANTS (~500 assets)
# ========================================================================
monsters = [
# Slimes (variations)
("slime_green", "Green slime, bouncing blob, basic"),
("slime_blue", "Blue slime, water element"),
("slime_red", "Red slime, fire element"),
("slime_yellow", "Yellow slime, electric sparks"),
("slime_purple", "Purple slime, poison element"),
("slime_black", "Black slime, shadow element"),
("slime_white", "White slime, holy element"),
("slime_rainbow", "Rainbow slime, all elements"),
("slime_metal", "Metal slime, shiny armor"),
("slime_gold", "Gold slime, rare treasure"),
("slime_king", "King Slime, GIANT with crown, boss"),
("slime_queen", "Queen Slime, tiara, elegant"),
# Zombies
("zombie_farmer", "Zombie farmer, overalls, hoe"),
("zombie_miner", "Zombie miner, hard hat, pickaxe"),
("zombie_villager", "Zombie villager, torn clothes"),
("zombie_soldier", "Zombie soldier, armor, weapon"),
("zombie_knight", "Zombie knight, full armor, sword"),
("zombie_giant", "Giant zombie, huge, powerful"),
("zombie_dog", "Zombie dog, undead hound"),
("zombie_crow", "Zombie crow, undead bird"),
# Skeletons
("skeleton_basic", "Basic skeleton, bones, rattling"),
("skeleton_warrior", "Skeleton warrior, sword shield"),
("skeleton_archer", "Skeleton archer, bow arrows"),
("skeleton_mage", "Skeleton mage, staff, robes"),
("skeleton_king", "Skeleton King, crown, boss"),
# Ghosts
("ghost_basic", "Ghost, transparent, floating"),
("ghost_lantern", "Ghost with lantern, guide"),
("ghost_wraith", "Wraith, dark ghost, dangerous"),
("ghost_banshee", "Banshee, screaming ghost"),
("ghost_poltergeist", "Poltergeist, throwing objects"),
# Goblins
("goblin_basic", "Goblin, green skin, small"),
("goblin_warrior", "Goblin warrior, crude weapons"),
("goblin_shaman", "Goblin shaman, magic staff"),
("goblin_chief", "Goblin chief, feathers, leader"),
# Orcs
("orc_basic", "Orc, green muscular, tusks"),
("orc_warrior", "Orc warrior, armor, axe"),
("orc_shaman", "Orc shaman, bones, magic"),
("orc_warlord", "Orc warlord, boss, massive"),
# Trolls
("troll_forest", "Forest troll, mossy, large"),
("troll_cave", "Cave troll, grey, club"),
("troll_ice", "Ice troll, frozen, blue"),
("troll_fire", "Fire troll, burning, red"),
# Spiders
("spider_basic", "Giant spider, eight legs, web"),
("spider_venomous", "Venomous spider, green drip"),
("spider_cave", "Cave spider, blind, pale"),
("spider_queen", "Spider Queen, huge, boss"),
# Bats
("bat_normal", "Bat, flying, echolocation"),
("bat_vampire", "Vampire bat, red eyes"),
("bat_fire", "Fire bat, flaming wings"),
("bat_giant", "Giant bat, rideable size"),
# Elementals
("elemental_fire", "Fire elemental, living flames"),
("elemental_water", "Water elemental, liquid form"),
("elemental_earth", "Earth elemental, rock body"),
("elemental_air", "Air elemental, wind form"),
("elemental_ice", "Ice elemental, frozen"),
("elemental_lightning", "Lightning elemental, sparking"),
# Golems
("golem_stone", "Stone golem, rock body, slow"),
("golem_iron", "Iron golem, metal, strong"),
("golem_crystal", "Crystal golem, gemstone body"),
("golem_wood", "Wood golem, tree-like"),
("golem_mud", "Mud golem, clay body"),
("golem_gold", "Gold golem, treasure guardian"),
# Demons
("demon_imp", "Imp, small demon, mischievous"),
("demon_fire", "Fire demon, horns, flames"),
("demon_shadow", "Shadow demon, dark, lurking"),
("demon_lord", "Demon Lord, boss, powerful"),
# Dragons
("dragon_baby", "Baby dragon, cute, small"),
("dragon_fire", "Fire dragon, red, flames"),
("dragon_ice", "Ice dragon, blue, frost"),
("dragon_earth", "Earth dragon, brown, rocky"),
("dragon_shadow", "Shadow dragon, black, deadly"),
("dragon_ancient", "Ancient dragon, boss, massive"),
# Unique Monsters
("mimic_chest", "Mimic, fake treasure chest"),
("basilisk", "Basilisk, serpent, petrifying"),
("cockatrice", "Cockatrice, chicken-dragon"),
("manticore", "Manticore, lion scorpion wings"),
("chimera", "Chimera, lion goat serpent"),
("hydra", "Hydra, multi-headed serpent"),
("phoenix", "Phoenix, fire bird, rebirth"),
("griffin", "Griffin, lion eagle"),
("hippogriff", "Hippogriff, horse eagle"),
("centaur", "Centaur, horse human"),
("minotaur", "Minotaur, bull human"),
("harpy", "Harpy, bird woman"),
("siren", "Siren, fish woman, singing"),
("medusa", "Medusa, snake hair"),
("cyclops", "Cyclops, one-eyed giant"),
("kraken", "Kraken, giant squid, boss"),
("leviathan", "Leviathan, sea serpent, boss"),
("werewolf", "Werewolf, wolf human, moonlight"),
("vampire", "Vampire, pale, fangs, cape"),
("mummy", "Mummy, bandages, ancient"),
("lich", "Lich, undead mage, powerful"),
("treant", "Treant, living tree, guardian"),
("will_o_wisp", "Will-o-wisp, floating light"),
("mushroom_monster", "Mushroom monster, walking fungus"),
("plant_monster", "Plant monster, vine creature"),
("shadow_creature", "Shadow creature, living darkness"),
]
for name, prompt in monsters:
assets.append({"cat": "mutanti", "file": f"{name}.png", "prompt": prompt})
# ========================================================================
# 5. BOSSES (~50 assets)
# ========================================================================
bosses = [
("boss_zombie_king", "Zombie King, crown rotting, massive undead ruler"),
("boss_slime_emperor", "Slime Emperor, gigantic rainbow slime"),
("boss_ancient_tree", "Ancient Tree boss, dark corrupted treant"),
("boss_dragon_elder", "Elder Dragon, ancient fire drake"),
("boss_ice_titan", "Ice Titan, frozen giant, blizzard"),
("boss_lava_lord", "Lava Lord, molten rock giant"),
("boss_shadow_master", "Shadow Master, darkness incarnate"),
("boss_crystal_guardian", "Crystal Guardian, gem golem"),
("boss_spider_empress", "Spider Empress, queen of spiders"),
("boss_kraken", "Kraken, massive sea monster"),
("boss_demon_prince", "Demon Prince, ruler of demons"),
("boss_lich_king", "Lich King, undead sorcerer"),
("boss_werewolf_alpha", "Werewolf Alpha, pack leader"),
("boss_vampire_lord", "Vampire Lord, ancient vampire"),
("boss_mummy_pharaoh", "Mummy Pharaoh, ancient ruler"),
("boss_minotaur_king", "Minotaur King, labyrinth master"),
("boss_hydra", "Hydra boss, nine-headed"),
("boss_chimera", "Chimera boss, three-headed beast"),
("boss_giant_troll", "Giant Troll, bridge guardian"),
("boss_orc_warlord", "Orc Warlord, army leader"),
("boss_goblin_king", "Goblin King, treasure hoarder"),
("boss_elemental_titan", "Elemental Titan, combined elements"),
("boss_golem_prime", "Golem Prime, ultimate golem"),
("boss_phoenix_ancient", "Ancient Phoenix, immortal fire"),
("boss_leviathan", "Leviathan, world serpent"),
]
for name, prompt in bosses:
assets.append({"cat": "bosses", "file": f"{name}.png", "prompt": prompt})
# ========================================================================
# 6. CROPS & PLANTS (~500 assets with growth stages)
# ========================================================================
# Basic crops with 4-5 growth stages each
crops_base = [
"wheat", "corn", "rice", "barley", "oats", "rye",
"potato", "carrot", "onion", "garlic", "turnip", "radish", "beet",
"tomato", "pepper", "eggplant", "cucumber", "zucchini", "pumpkin", "squash",
"lettuce", "cabbage", "spinach", "kale", "broccoli", "cauliflower",
"strawberry", "blueberry", "raspberry", "blackberry", "grape", "melon", "watermelon",
"sunflower", "tulip", "rose", "lily", "daisy", "lavender", "poppy",
"cotton", "flax", "hemp", "tobacco", "coffee", "tea", "cocoa",
"apple", "orange", "lemon", "peach", "pear", "cherry", "plum", "banana",
"pineapple", "coconut", "mango", "papaya", "kiwi", "avocado",
"hop", "ginger", "turmeric", "vanilla", "cinnamon", "pepper_black",
"chili", "jalapeno", "habanero", "ghost_pepper",
"basil", "mint", "oregano", "thyme", "rosemary", "sage", "parsley", "cilantro",
"mushroom_button", "mushroom_shiitake", "mushroom_oyster", "truffle",
]
for crop in crops_base:
# Seed packet
assets.append({
"cat": "items",
"file": f"seed_{crop}.png",
"prompt": f"{crop.replace('_', ' ').title()} seed packet, small bag with seeds"
})
# Growth stages
for stage in range(1, 5):
stage_desc = ["sprout", "growing", "maturing", "ready"][stage-1]
assets.append({
"cat": "crops",
"file": f"{crop}_stage{stage}.png",
"prompt": f"{crop.replace('_', ' ').title()} crop, {stage_desc} stage, farm plant"
})
# Harvested product
assets.append({
"cat": "items",
"file": f"harvest_{crop}.png",
"prompt": f"Harvested {crop.replace('_', ' ')}, farm produce, fresh"
})
# Trees with seasonal variants
trees = ["oak", "maple", "pine", "birch", "willow", "cherry_blossom", "apple", "orange", "lemon", "palm", "bamboo"]
seasons = ["spring", "summer", "autumn", "winter"]
for tree in trees:
for season in seasons:
assets.append({
"cat": "environment",
"file": f"tree_{tree}_{season}.png",
"prompt": f"{tree.replace('_', ' ').title()} tree in {season}, seasonal foliage"
})
# ========================================================================
# 7. ITEMS & TOOLS (~2000 assets)
# ========================================================================
# Tools with material tiers
tool_types = ["axe", "pickaxe", "hoe", "shovel", "scythe", "hammer", "sickle", "saw", "chisel"]
materials = ["wood", "stone", "copper", "iron", "steel", "gold", "diamond", "mythril", "adamantine"]
for tool in tool_types:
for material in materials:
assets.append({
"cat": "items",
"file": f"{tool}_{material}.png",
"prompt": f"{material.title()} {tool}, farming tool, {material} quality"
})
# Weapons
weapon_types = ["sword", "dagger", "spear", "axe_battle", "mace", "hammer_war", "bow", "crossbow", "staff", "wand"]
for weapon in weapon_types:
for material in materials:
assets.append({
"cat": "items",
"file": f"{weapon}_{material}.png",
"prompt": f"{material.title()} {weapon.replace('_', ' ')}, combat weapon"
})
# Armor pieces
armor_types = ["helmet", "chestplate", "leggings", "boots", "gloves", "shield"]
armor_materials = ["leather", "chainmail", "iron", "steel", "gold", "diamond", "dragon"]
for armor in armor_types:
for material in armor_materials:
assets.append({
"cat": "items",
"file": f"{armor}_{material}.png",
"prompt": f"{material.title()} {armor}, armor piece, protection"
})
# Arrows and ammo
arrow_types = ["normal", "fire", "ice", "lightning", "poison", "explosive", "healing", "silver", "gold", "diamond"]
for arrow in arrow_types:
assets.append({
"cat": "items",
"file": f"arrow_{arrow}.png",
"prompt": f"{arrow.title()} arrow, projectile, bow ammunition"
})
# Potions
potion_types = [
"health_small", "health_medium", "health_large",
"mana_small", "mana_medium", "mana_large",
"stamina", "speed", "strength", "defense",
"invisibility", "fire_resistance", "cold_resistance",
"poison_cure", "regeneration", "luck",
"night_vision", "water_breathing", "slow_fall",
]
for potion in potion_types:
assets.append({
"cat": "items",
"file": f"potion_{potion}.png",
"prompt": f"{potion.replace('_', ' ').title()} potion, glass bottle, magical liquid"
})
# Gems and minerals
gems = ["ruby", "emerald", "sapphire", "diamond", "amethyst", "topaz", "opal", "pearl", "jade", "onyx", "quartz", "obsidian"]
for gem in gems:
assets.append({
"cat": "items",
"file": f"gem_{gem}.png",
"prompt": f"{gem.title()} gemstone, sparkling jewel, valuable treasure"
})
assets.append({
"cat": "items",
"file": f"ore_{gem}.png",
"prompt": f"{gem.title()} ore, raw mineral, mining resource"
})
# Ores and metals
metals = ["copper", "iron", "gold", "silver", "platinum", "mythril", "adamantine", "titanium"]
for metal in metals:
assets.append({
"cat": "items",
"file": f"ore_{metal}.png",
"prompt": f"{metal.title()} ore, raw mineral rock"
})
assets.append({
"cat": "items",
"file": f"bar_{metal}.png",
"prompt": f"{metal.title()} bar, refined metal ingot"
})
# Food items
foods = [
"bread", "cheese", "butter", "milk", "egg", "bacon", "sausage",
"apple_pie", "cherry_pie", "pumpkin_pie", "fish_cooked", "meat_cooked",
"salad", "soup", "stew", "sandwich", "pizza", "cake", "cookie",
"jam_strawberry", "jam_blueberry", "wine_red", "wine_white", "beer", "juice",
"honey", "sugar", "flour", "salt", "pepper_spice", "oil",
]
for food in foods:
assets.append({
"cat": "items",
"file": f"food_{food}.png",
"prompt": f"{food.replace('_', ' ').title()}, prepared food item"
})
# Crafting materials
materials_craft = [
"wood_plank", "wood_stick", "stone_brick", "clay", "glass", "leather", "cloth",
"rope", "string", "nail", "screw", "gear", "spring", "chain",
"feather", "bone", "horn", "fur", "scale", "slime_gel", "ectoplasm",
"magic_dust", "fairy_dust", "dragon_scale", "unicorn_hair", "phoenix_feather",
]
for material in materials_craft:
assets.append({
"cat": "items",
"file": f"material_{material}.png",
"prompt": f"{material.replace('_', ' ').title()}, crafting material"
})
# ========================================================================
# 8. BUILDINGS & STRUCTURES (~300 assets)
# ========================================================================
buildings = [
# Farm Buildings
("barn_small", "Small barn, wooden, red roof"),
("barn_medium", "Medium barn, larger, upgraded"),
("barn_large", "Large barn, huge, maximum upgrade"),
("coop_small", "Small chicken coop, wooden"),
("coop_medium", "Medium coop, upgraded"),
("coop_large", "Large coop, deluxe"),
("silo", "Grain silo, tall cylindrical"),
("mill", "Windmill, stone base, wooden blades"),
("greenhouse", "Greenhouse, glass walls, plants inside"),
("stable_small", "Small stable, one horse"),
("stable_large", "Large stable, multiple horses"),
# Production Buildings
("blacksmith", "Blacksmith forge, anvil, fire"),
("carpenter_shop", "Carpenter workshop, sawdust"),
("tailor_shop", "Tailor shop, fabric, mannequins"),
("bakery", "Bakery building, bread sign"),
("butcher", "Butcher shop, meat hanging"),
("brewery", "Brewery, barrels, hops"),
("winery", "Winery, grapes, barrels"),
("apothecary", "Apothecary, potions, herbs"),
("jewelry_shop", "Jewelry shop, gems display"),
# Town Buildings
("house_small", "Small house, cottage style"),
("house_medium", "Medium house, two story"),
("house_large", "Large mansion, wealthy"),
("inn", "Inn, rooms sign, welcoming"),
("tavern", "Tavern, mug sign, merry"),
("general_store", "General store, various goods"),
("town_hall", "Town hall, clock tower"),
("church", "Church, steeple, peaceful"),
("school", "Schoolhouse, bell"),
("library", "Library, books, quiet"),
("museum", "Museum, artifacts"),
("hospital", "Hospital, cross sign"),
("bank", "Bank, vault, secure"),
("barracks", "Barracks, soldier"),
("watchtower", "Watchtower, tall, guard"),
# Decorative
("well_stone", "Stone well, bucket"),
("well_wood", "Wooden well, rustic"),
("fountain", "Water fountain, decorative"),
("statue_hero", "Hero statue, bronze"),
("statue_goddess", "Goddess statue, marble"),
("gazebo", "Garden gazebo, resting"),
("bridge_wood", "Wooden bridge, small"),
("bridge_stone", "Stone bridge, sturdy"),
("dock", "Wooden dock, fishing"),
("lighthouse", "Lighthouse, tall, beacon"),
# Fences and Gates
("fence_wood", "Wooden fence section"),
("fence_stone", "Stone wall section"),
("fence_iron", "Iron fence section"),
("fence_hedge", "Hedge fence section"),
("gate_wood", "Wooden gate"),
("gate_iron", "Iron gate, ornate"),
# Storage
("chest_wood", "Wooden chest, storage"),
("chest_iron", "Iron chest, secure"),
("chest_gold", "Gold chest, treasure"),
("barrel", "Wooden barrel, storage"),
("crate", "Wooden crate, shipping"),
("cabinet", "Storage cabinet, shelves"),
]
for name, prompt in buildings:
assets.append({"cat": "buildings", "file": f"{name}.png", "prompt": prompt})
# ========================================================================
# 9. ENVIRONMENT & TERRAIN (~800 assets)
# ========================================================================
terrain = [
# Ground tiles
("grass_light", "Light grass tile, lush"),
("grass_dark", "Dark grass tile, shaded"),
("grass_dry", "Dry grass tile, brown"),
("grass_snow", "Snowy grass tile"),
("dirt_path", "Dirt path tile"),
("dirt_tilled", "Tilled soil tile, farm ready"),
("stone_path", "Stone path tile"),
("cobblestone", "Cobblestone path tile"),
("sand", "Sand tile, beach"),
("gravel", "Gravel tile"),
("mud", "Mud tile, wet"),
("snow", "Snow tile, winter"),
("ice", "Ice tile, slippery"),
("water_shallow", "Shallow water tile"),
("water_deep", "Deep water tile"),
("lava", "Lava tile, glowing"),
# Nature objects
("rock_small", "Small rock, pebbles"),
("rock_medium", "Medium rock"),
("rock_large", "Large boulder"),
("rock_moss", "Mossy rock"),
("log_fallen", "Fallen log"),
("stump_old", "Old tree stump"),
("bush_green", "Green bush"),
("bush_berry", "Berry bush, fruit"),
("bush_flower", "Flowering bush"),
("grass_tall", "Tall grass, swaying"),
("reeds", "Water reeds"),
("cattails", "Cattails, pond"),
("lily_pad", "Lily pad, water"),
("coral", "Ocean coral"),
("seaweed", "Seaweed, underwater"),
# Flowers (many varieties)
("flower_red", "Red flower, bloom"),
("flower_blue", "Blue flower, bloom"),
("flower_yellow", "Yellow flower, bloom"),
("flower_purple", "Purple flower, bloom"),
("flower_white", "White flower, bloom"),
("flower_pink", "Pink flower, bloom"),
("flower_orange", "Orange flower, bloom"),
("flower_mixed", "Mixed flower patch"),
# Mushrooms
("mushroom_red", "Red mushroom, spotted"),
("mushroom_brown", "Brown mushroom, edible"),
("mushroom_blue", "Blue mushroom, magic"),
("mushroom_purple", "Purple mushroom, poisonous"),
("mushroom_glowing", "Glowing mushroom, bioluminescent"),
("mushroom_giant", "Giant mushroom"),
# Cave elements
("stalactite", "Stalactite, hanging"),
("stalagmite", "Stalagmite, ground"),
("crystal_blue", "Blue crystal formation"),
("crystal_red", "Red crystal formation"),
("crystal_green", "Green crystal formation"),
("cave_moss", "Cave moss, glowing"),
# Weather effects (decorative)
("cloud_white", "White fluffy cloud"),
("cloud_rain", "Rain cloud, dark"),
("cloud_storm", "Storm cloud, lightning"),
("rainbow", "Rainbow arc, colorful"),
("sun", "Sun, bright, cheerful"),
("moon_full", "Full moon, night"),
("moon_crescent", "Crescent moon"),
("stars", "Stars, twinkling"),
]
for name, prompt in terrain:
assets.append({"cat": "environment", "file": f"{name}.png", "prompt": prompt})
# ========================================================================
# 10. UI ELEMENTS (~200 assets)
# ========================================================================
ui_elements = [
# Buttons
("button_play", "Play button, green, arrow"),
("button_pause", "Pause button, two bars"),
("button_stop", "Stop button, square"),
("button_menu", "Menu button, hamburger"),
("button_settings", "Settings button, gear"),
("button_close", "Close button, X"),
("button_confirm", "Confirm button, checkmark"),
("button_cancel", "Cancel button, X red"),
("button_arrow_left", "Left arrow button"),
("button_arrow_right", "Right arrow button"),
("button_arrow_up", "Up arrow button"),
("button_arrow_down", "Down arrow button"),
# Icons
("icon_health", "Health icon, red heart"),
("icon_mana", "Mana icon, blue orb"),
("icon_stamina", "Stamina icon, lightning"),
("icon_gold", "Gold icon, coin stack"),
("icon_inventory", "Inventory icon, bag"),
("icon_map", "Map icon, scroll"),
("icon_quest", "Quest icon, exclamation"),
("icon_achievement", "Achievement icon, star"),
("icon_mail", "Mail icon, envelope"),
("icon_settings", "Settings icon, gear"),
("icon_save", "Save icon, floppy"),
("icon_load", "Load icon, folder"),
# Status effects
("status_poison", "Poison status, green skull"),
("status_burn", "Burn status, flames"),
("status_freeze", "Freeze status, snowflake"),
("status_stun", "Stun status, stars"),
("status_buff", "Buff status, arrow up"),
("status_debuff", "Debuff status, arrow down"),
# Frames and panels
("frame_wood", "Wooden frame border"),
("frame_stone", "Stone frame border"),
("frame_gold", "Gold frame border"),
("panel_wood", "Wooden panel background"),
("panel_parchment", "Parchment panel"),
# Cursors
("cursor_normal", "Normal cursor, pointer"),
("cursor_interact", "Interact cursor, hand"),
("cursor_attack", "Attack cursor, sword"),
("cursor_dig", "Dig cursor, shovel"),
("cursor_plant", "Plant cursor, seed"),
("cursor_water", "Water cursor, droplet"),
]
for name, prompt in ui_elements:
assets.append({"cat": "ui", "file": f"{name}.png", "prompt": prompt})
# ========================================================================
# 11. WORKSTATIONS (~100 assets)
# ========================================================================
workstations = [
("anvil", "Blacksmith anvil, metal working"),
("forge", "Forge, fire, metalworking"),
("furnace", "Stone furnace, smelting"),
("kiln", "Pottery kiln, ceramic"),
("loom", "Weaving loom, textile"),
("spinning_wheel", "Spinning wheel, wool"),
("workbench", "Carpenter workbench, tools"),
("crafting_table", "Crafting table, general"),
("alchemy_table", "Alchemy table, potions"),
("enchanting_table", "Enchanting table, magical"),
("cooking_pot", "Cooking pot, large"),
("oven", "Baking oven, bread"),
("press_wine", "Wine press, grapes"),
("press_oil", "Oil press, olives"),
("mill_flour", "Flour mill, grinding"),
("sawmill", "Sawmill, lumber"),
("tanning_rack", "Tanning rack, leather"),
("drying_rack", "Drying rack, preservation"),
("fermenter", "Fermenter, brewing"),
("distiller", "Distiller, spirits"),
("beehive", "Beehive, honey production"),
("butter_churn", "Butter churn, dairy"),
("cheese_press", "Cheese press, dairy"),
("seed_maker", "Seed maker, breeding"),
("recycler", "Recycler, materials"),
]
for name, prompt in workstations:
assets.append({"cat": "workstations", "file": f"{name}.png", "prompt": prompt})
return assets
# ============================================================================
# COMFYUI WORKFLOW FUNCTIONS
# ============================================================================
def create_workflow(prompt_text: str, output_name: str, seed: int = None) -> dict:
"""Creates a complete ComfyUI workflow"""
if seed is None:
seed = int(time.time() * 1000) % 2147483647
return {
"1": {
"class_type": "CheckpointLoaderSimple",
"inputs": {"ckpt_name": "dreamshaper_8.safetensors"}
},
"2": {
"class_type": "EmptyLatentImage",
"inputs": {"width": 512, "height": 512, "batch_size": 1}
},
"3": {
"class_type": "CLIPTextEncode",
"inputs": {"text": STYLE_PREFIX + prompt_text, "clip": ["1", 1]}
},
"4": {
"class_type": "CLIPTextEncode",
"inputs": {"text": NEGATIVE_PROMPT, "clip": ["1", 1]}
},
"5": {
"class_type": "KSampler",
"inputs": {
"seed": seed, "steps": 30, "cfg": 7.5,
"sampler_name": "euler_ancestral", "scheduler": "karras",
"denoise": 1.0, "model": ["1", 0],
"positive": ["3", 0], "negative": ["4", 0], "latent_image": ["2", 0]
}
},
"6": {
"class_type": "VAEDecode",
"inputs": {"samples": ["5", 0], "vae": ["1", 2]}
},
"7": {
"class_type": "SaveImage",
"inputs": {"filename_prefix": output_name, "images": ["6", 0]}
}
}
def queue_prompt(workflow: dict) -> str:
"""Send workflow to ComfyUI"""
try:
response = requests.post(f"{COMFYUI_URL}/prompt",
json={"prompt": workflow, "client_id": f"antigravity_{uuid.uuid4().hex[:8]}"})
return response.json().get("prompt_id")
except Exception as e:
return None
def wait_for_completion(prompt_id: str, timeout: int = 300) -> bool:
"""Wait for generation to complete"""
start = time.time()
while time.time() - start < timeout:
try:
response = requests.get(f"{COMFYUI_URL}/history/{prompt_id}")
if prompt_id in response.json() and response.json()[prompt_id].get("outputs"):
return True
except:
pass
time.sleep(2)
return False
def download_image(prompt_id: str, output_path: Path) -> bool:
"""Download generated image"""
try:
history = requests.get(f"{COMFYUI_URL}/history/{prompt_id}").json()
for node_output in history.get(prompt_id, {}).get("outputs", {}).values():
for img in node_output.get("images", []):
params = {"filename": img["filename"], "subfolder": img.get("subfolder", ""), "type": "output"}
response = requests.get(f"{COMFYUI_URL}/view", params=params)
if response.status_code == 200:
output_path.parent.mkdir(parents=True, exist_ok=True)
output_path.write_bytes(response.content)
return True
return False
except:
return False
def main():
"""Main generation loop"""
print("=" * 70)
print("🎨 DolinaSmrti FULL Asset Generator - 9000+ Assets")
print("=" * 70)
# Check ComfyUI
try:
data = requests.get(f"{COMFYUI_URL}/system_stats", timeout=5).json()
print(f"✅ ComfyUI v{data['system']['comfyui_version']} running")
except:
print(f"❌ ComfyUI not responding at {COMFYUI_URL}")
return
# Generate registry
print("\n📋 Building Master Registry...")
ASSETS = generate_registry()
print(f"📊 Total Assets in Registry: {len(ASSETS)}")
# Count existing
existing = sum(1 for a in ASSETS if (Path(OUTPUT_DIR) / a["cat"] / a["file"]).exists())
print(f"✅ Already Exist: {existing}")
print(f"🎯 To Generate: {len(ASSETS) - existing}")
print("\n🚀 Starting generation...\n")
success, skip, fail = 0, 0, 0
for i, asset in enumerate(ASSETS, 1):
output_path = Path(OUTPUT_DIR) / asset["cat"] / asset["file"]
if output_path.exists():
skip += 1
if i % 100 == 0:
print(f"[{i}/{len(ASSETS)}] Progress: {success} ✅ | {skip} ⏭️ | {fail}")
continue
print(f"[{i}/{len(ASSETS)}] 🎨 {asset['file']}")
workflow = create_workflow(asset["prompt"], asset["file"].replace(".png", ""))
prompt_id = queue_prompt(workflow)
if prompt_id and wait_for_completion(prompt_id) and download_image(prompt_id, output_path):
print(f" ✅ SAVED")
success += 1
else:
print(f" ❌ FAILED")
fail += 1
if i % 50 == 0:
print(f"\n📊 Progress: {success} ✅ | {skip} ⏭️ | {fail}\n")
time.sleep(0.5)
print("\n" + "=" * 70)
print("✅ GENERATION COMPLETE!")
print(f"✅ Successful: {success}")
print(f"⏭️ Skipped: {skip}")
print(f"❌ Failed: {fail}")
print(f"📁 Output: {OUTPUT_DIR}")
if __name__ == "__main__":
main()