Files
novafarma/scripts/create_asset_queue.py
David Kotnik 244f70c136 🎨 Production Batch 1-8: 32 hybrid style assets
- Main characters: Gronk, Kai, Ana
- NPCs: 12 types (trader, blacksmith, healer, etc)
- Animals: 8 types (Susi, husky, cow, chicken, pig, horse, deer, wolf)
- Zombies: 4 types (basic, runner, bloated, dreadlocks)
- Environment: 5 objects (trees, bush, rock, campfire)

Style: Dark Hand-Drawn 2D Stylized Indie
All with green chroma key background
Progress: 32/422 base assets (8%)
2025-12-29 11:29:29 +01:00

121 lines
6.0 KiB
Python

#!/usr/bin/env python3
"""
🎮 DOLINA SMRTI - HYBRID STYLE PRODUCTION
Direct integration with agent's generation capabilities
Saves all assets to proper folders automatically
"""
import json
from pathlib import Path
# Output directory structure
OUTPUT_BASE = Path("/Users/davidkotnik/repos/novafarma/assets/images")
# Approved Hybrid Style Formula
STYLE_PREFIX = """dark hand-drawn 2D stylized indie game art,
bold thick black hand-drawn outlines,
smooth vector rendering,
cartoon-style exaggerated proportions but dark mature atmosphere NOT Disney,
mature 90s cartoon aesthetic, """
STYLE_SUFFIX = """, stylized character NOT realistic,
mature indie game art,
solid bright green background RGB(0,255,0) chroma key green screen,
game asset, PNG"""
# Generate asset list for agent to process
def generate_asset_queue():
"""Generate list of all assets to create"""
assets = []
# Main characters
gronk = f"{STYLE_PREFIX}Gronk the troll, massive green-grey skinned troll, PINK dreadlocks very prominent, stretched earlobes with large gauges, facial piercings, holding colorful vape device with pink smoke, wearing LOOSE BAGGY black t-shirt with band logo, LOOSE WIDE black pants, pink sneakers, peaceful zen expression, full body visible from head to feet standing on ground{STYLE_SUFFIX}"
kai = f"{STYLE_PREFIX}Kai teenage boy survivor, post-apocalyptic nomad style, GREEN natural dreadlocks hair, stretched earlobes with plugs visible, facial piercings on nose and lip, wearing dirty worn blue jacket, torn jeans, combat boots, survival backpack, determined serious expression, athletic build, full body visible from head to feet standing on ground{STYLE_SUFFIX}"
ana = f"{STYLE_PREFIX}Ana teenage girl explorer, Kai's twin sister, PINK dreadlocks hair, stretched earlobes with small plugs, wearing brown adventure vest over green shirt, blue jeans, brown boots, leather backpack with map, kind curious expression, full body visible from head to feet standing on ground{STYLE_SUFFIX}"
assets.append({"cat": "npcs", "file": "gronk_troll.png", "prompt": gronk})
assets.append({"cat": "npcs", "file": "kai_survivor.png", "prompt": kai})
assets.append({"cat": "npcs", "file": "ana_explorer.png", "prompt": ana})
# NPCs
npcs = [
("npc_trader.png", "wasteland trader, nomadic merchant with cart, weathered face, hooded cloak"),
("npc_blacksmith.png", "nomadic blacksmith, leather apron, strong arms, hammer, burns"),
("npc_healer.png", "herbalist healer woman, herb pouch, kind elderly, flower crown"),
("npc_hunter.png", "wasteland hunter, crossbow, animal pelts, face paint"),
("npc_farmer.png", "apocalypse farmer, patched overalls, straw hat, hoe"),
("npc_mechanic.png", "mechanic survivor, oil stained, wrench, welding goggles"),
("npc_soldier.png", "ex-military survivor, tactical vest, rifle, scarred"),
("npc_medic.png", "field medic, white coat blood stains, medical bag"),
("npc_elder.png", "wise tribal elder, walking stick, long white beard"),
("npc_child.png", "survivor orphan child, oversized clothes, teddy bear"),
("npc_cook.png", "camp cook, pot and ladle, big belly, friendly"),
("npc_scout.png", "nomad scout, binoculars, light armor, agile"),
]
for file, desc in npcs:
prompt = f"{STYLE_PREFIX}2D indie game character, {desc}, full body standing{STYLE_SUFFIX}"
assets.append({"cat": "npcs", "file": file, "prompt": prompt})
# Animals
animals = [
("susi_dachshund.png", "Susi dachshund dog, brown and black, long body, floppy ears, pink collar, happy"),
("dog_husky.png", "husky dog, fluffy grey white, blue eyes, friendly"),
("cow_spotted.png", "dairy cow, black white spots, friendly"),
("chicken_white.png", "white chicken, red comb, pecking"),
("pig_pink.png", "pink pig, curly tail, muddy happy"),
("horse_brown.png", "brown horse, black mane, majestic"),
("deer_forest.png", "forest deer, brown, antlers, graceful"),
("wolf_grey.png", "grey wolf, fierce, pack hunter"),
]
for file, desc in animals:
prompt = f"{STYLE_PREFIX}2D indie game animal sprite, {desc}, full body side view{STYLE_SUFFIX}"
assets.append({"cat": "zivali", "file": file, "prompt": prompt})
# Zombies
zombies = [
("zombie_basic.png", "basic zombie, shambling, torn clothes, grey skin, undead"),
("zombie_runner.png", "fast zombie, sprinting, aggressive, rage face"),
("zombie_bloated.png", "bloated zombie, huge swollen, toxic green drool"),
("zombie_dreadlocks.png", "zombie with dreadlocks, brown shirt, farmer style"),
]
for file, desc in zombies:
prompt = f"{STYLE_PREFIX}2D indie game monster sprite, {desc}, full body{STYLE_SUFFIX}"
assets.append({"cat": "mutanti", "file": file, "prompt": prompt})
# Environment
envs = [
("tree_oak.png", "oak tree, green leaves, brown trunk"),
("tree_dead.png", "dead tree, no leaves, gnarled branches, wonky crooked"),
("bush_green.png", "green bush, leafy, slightly warped shape"),
("rock_large.png", "large boulder, moss, weathered"),
("campfire.png", "campfire, flames, logs burning"),
]
for file, desc in envs:
prompt = f"{STYLE_PREFIX}2D indie game object sprite, {desc}, environment asset{STYLE_SUFFIX}"
assets.append({"cat": "environment", "file": file, "prompt": prompt})
return assets
# Generate queue
if __name__ == "__main__":
assets = generate_asset_queue()
# Save to JSON for agent to process
queue_file = Path("/Users/davidkotnik/repos/novafarma/asset_queue.json")
with open(queue_file, 'w') as f:
json.dump(assets, f, indent=2)
print(f"✅ Generated queue: {len(assets)} assets")
print(f"📁 Saved to: {queue_file}")
print("\nCategories:")
cats = {}
for a in assets:
cats[a['cat']] = cats.get(a['cat'], 0) + 1
for cat, count in sorted(cats.items()):
print(f" {cat}: {count}")