🌙 OVERNIGHT AUTOMATION READY
Progress: 254/14,000 assets (1.81%) Dino Valley Status: 91/109 complete - ✅ Vegetation: 15/15 - ✅ Dinosaurs: 12/12 - ✅ Items: 12/12 - ✅ Food: 16/16 - ✅ Clothing: 8/8 - ✅ Tools: 10/10 - ✅ Props: 8/8 - ✅ Buildings: 4/4 - ✅ Terrain: 4/4 - 🔄 Special Creatures: 2/10 (quota hit) New Files: - scripts/auto_generate_overnight.py - OVERNIGHT_AUTO_NAVODILA.md - ASSET_STATUS_03_01_2026.md Quota exhausted at 00:22 Reset at: 01:40 CET Ready for overnight automation!
373
ASSET_STATUS_03_01_2026.md
Normal file
@@ -0,0 +1,373 @@
|
||||
# 🎨 ASSET PRODUCTION STATUS - 03.01.2026
|
||||
|
||||
**Datum:** 03. januar 2026, 00:08 CET
|
||||
**Total Progress:** 218/~14,000 (1.56%)
|
||||
|
||||
---
|
||||
|
||||
## ✅ CATEGORY 0: FARM CROPS - COMPLETE (103/103)
|
||||
|
||||
### **Sadje (36/36)** ✅
|
||||
- apple_red, apple_green, apple_yellow
|
||||
- pear, plum, cherry, peach, apricot
|
||||
- orange, lemon, lime, grapefruit
|
||||
- banana, kiwi, mango, papaya, pineapple
|
||||
- strawberry, raspberry, blueberry, blackberry, cranberry
|
||||
- grape_red, grape_green
|
||||
- watermelon, melon, cantaloupe
|
||||
- pomegranate, fig, date
|
||||
- passion_fruit, dragon_fruit, star_fruit
|
||||
- coconut, avocado, olive
|
||||
|
||||
### **Zelenjava (25/25)** ✅
|
||||
- carrot, potato, tomato, cucumber, lettuce
|
||||
- cabbage, broccoli, cauliflower, brussels_sprouts
|
||||
- onion, garlic, leek, shallot
|
||||
- pepper_red, pepper_green, pepper_yellow
|
||||
- eggplant, zucchini, pumpkin, squash
|
||||
- corn, peas, beans, radish, beet
|
||||
|
||||
### **Ganja (12/12)** ✅
|
||||
- sativa, indica, hybrid, ruderalis
|
||||
- purple_kush, og_kush, white_widow, northern_lights
|
||||
- amnesia_haze, super_lemon_haze, blue_dream, girl_scout_cookies
|
||||
|
||||
### **Drevesa (30/30)** ✅
|
||||
- oak, pine, maple, birch, willow
|
||||
- apple_tree, pear_tree, cherry_tree, plum_tree, peach_tree
|
||||
- orange_tree, lemon_tree
|
||||
- palm, cactus, bamboo
|
||||
- rose, tulip, sunflower, lavender, daisy
|
||||
- lily, orchid, carnation, daffodil, iris
|
||||
- poppy, violet, marigold, petunia, zinnia
|
||||
- lily_of_the_valley
|
||||
|
||||
---
|
||||
|
||||
## ✅ CATEGORY 1: FARM BUILDINGS & ANIMALS - COMPLETE (55/55)
|
||||
|
||||
### **Farm Buildings (20/20)** ✅
|
||||
- farmhouse, barn, silo, greenhouse
|
||||
- chicken_coop, pigpen, stable
|
||||
- tool_shed, windmill, well
|
||||
- fence_wood, fence_stone, gate
|
||||
- compost, beehive, trough
|
||||
- lamp_post, sign, mailbox, rain_barrel
|
||||
|
||||
### **Farm Animals (15/15)** ✅
|
||||
- chicken, rooster, duck, turkey
|
||||
- cow, pig, sheep, goat
|
||||
- horse, donkey, llama
|
||||
- rabbit, cat, dog, bee
|
||||
|
||||
### **Farm Tools (20/20)** ✅
|
||||
- hoe, shovel, rake, watering_can
|
||||
- axe, pickaxe, scythe, sickle
|
||||
- pitchfork, wheelbarrow, bucket
|
||||
- shears, pruners, trowel, gloves
|
||||
- hammer, saw, pliers, wrench, screwdriver
|
||||
|
||||
---
|
||||
|
||||
## ✅ CATEGORY 2: ITEMS & EQUIPMENT - COMPLETE (105/105)
|
||||
|
||||
### **Weapons (30/30)** ✅
|
||||
- sword_basic, greatsword, katana, rapier
|
||||
- axe, battle_axe, club, mace, flail
|
||||
- sledgehammer, baseball_bat, crowbar, frying_pan, golf_club
|
||||
- spear, staff, whip
|
||||
- dagger, throwing_knife
|
||||
- bow, crossbow
|
||||
- pistol, revolver, rifle, shotgun
|
||||
- chainsaw, machete, nailbat, pipe
|
||||
- grenade, molotov
|
||||
|
||||
### **Armor (20/20)** ✅
|
||||
- helmet_leather, helmet_iron, helmet_steel, helmet_gold
|
||||
- chestplate_leather, chestplate_iron, chestplate_steel, chestplate_gold
|
||||
- leggings_leather, leggings_iron, leggings_steel, leggings_gold
|
||||
- boots_leather, boots_iron, boots_steel, boots_gold
|
||||
- shield_wood, shield_iron, shield_steel, shield_gold
|
||||
|
||||
### **Consumables (25/25)** ✅
|
||||
- health_potion, mana_potion, stamina_potion
|
||||
- water_bottle, milk, coffee, soda_can, energy_drink
|
||||
- bread, cheese, egg, cooked_meat
|
||||
- apple, berries, mushroom
|
||||
- sandwich, burger, pizza_slice, soup
|
||||
- cake_slice, candy, chocolate_bar, honey
|
||||
|
||||
### **Crafting Materials (30/30)** ✅
|
||||
- wood_log, wood_plank, stone, iron_ore, iron_bar
|
||||
- coal, cloth, leather, rope
|
||||
- nails, screws, wire, circuit_board, battery
|
||||
- duct_tape, glue, spring, gear, chain
|
||||
- pipe, glass_shards, rubber, plastic
|
||||
- bone, feather, gunpowder, sulfur, crystal
|
||||
- herbs, scrap_metal
|
||||
|
||||
---
|
||||
|
||||
## 🔄 CATEGORY 3: DINO VALLEY BIOME - IN PROGRESS (58/109)
|
||||
|
||||
### **Vegetation (15/15)** ✅ STYLE 30
|
||||
- fern_large, fern_small
|
||||
- mushroom_red_giant, mushroom_brown
|
||||
- cycad_palm, cycad_tree
|
||||
- moss_green, moss_glow
|
||||
- horsetail, ginkgo_leaves
|
||||
- cattail_giant, grass_prehistoric
|
||||
- tree_fern, dead_tree
|
||||
- volcanic_rock_plant
|
||||
|
||||
### **Dinosaurs (12/12)** ✅ STYLE 33
|
||||
- trex, raptor, triceratops
|
||||
- stegosaurus, brontosaurus, ankylosaurus
|
||||
- pterodactyl, spinosaurus, dilophosaurus
|
||||
- pachycephalosaurus, parasaurolophus, compsognathus
|
||||
|
||||
### **Items (12/12)** ✅ STYLE 33
|
||||
- bone_small, bone_large
|
||||
- hide, scales, tooth, claw, feather
|
||||
- amber, volcanic_rock, tar, fossil, egg
|
||||
|
||||
### **Food (16/16)** ✅ STYLE 33
|
||||
*Raw (7):*
|
||||
- raw_trex_meat, raw_raptor_meat, raw_trike_meat
|
||||
- raw_stego_meat, raw_bronto_meat, raw_ptero_meat
|
||||
- dino_eggs_raw
|
||||
|
||||
*Cooked (6):*
|
||||
- cooked_trex_steak, cooked_raptor_fillet, cooked_trike_roast
|
||||
- cooked_stego_ribs, cooked_bronto_meat, cooked_ptero_wings
|
||||
|
||||
*Crafted (3):*
|
||||
- dino_jerky, bone_broth, giant_berries
|
||||
|
||||
### **Clothing/Armor (3/8)** 🔄 IN PROGRESS
|
||||
✅ tribal_loincloth, tooth_necklace, feather_cape
|
||||
❌ dino_hide_chest, dino_hide_legs, bone_helmet, scale_boots, leather_bracers
|
||||
|
||||
### **Tools & Weapons (0/10)** ❌ PENDING
|
||||
- bone_axe, stone_spear, dino_tooth_knife
|
||||
- flint_pickaxe, bone_club, stone_hammer
|
||||
- primitive_bow, obsidian_blade, bone_shovel, javelin
|
||||
|
||||
### **Props (0/8)** ❌ PENDING
|
||||
- skull_trex, skull_trike, ribcage
|
||||
- nest_empty, nest_eggs, tar_pit
|
||||
- volcanic_rocks, bones_scattered
|
||||
|
||||
### **Buildings (0/4)** ❌ PENDING
|
||||
- cave_entrance, primitive_hut, bone_fence, stone_altar
|
||||
|
||||
### **Terrain (0/4)** ❌ PENDING
|
||||
- dirt_volcanic, grass_prehistoric, rock_lava, mud
|
||||
|
||||
### **Special Creatures (0/10)** ❌ PENDING
|
||||
- baby_trex (baby)
|
||||
- alpha_trex, thunder_raptor (bosses)
|
||||
- dino_nest_eggs (special)
|
||||
- zombie_prehistoric, zombie_dino_raptor, zombie_bone, zombie_tar (zombies)
|
||||
- npc_tribal_hunter, npc_shaman (NPCs)
|
||||
|
||||
---
|
||||
|
||||
## ❌ CATEGORY 4: BIOMES - NOT STARTED (0/~1,700)
|
||||
|
||||
### **Mythical Highlands (~95 assets)**
|
||||
- Vegetation, Creatures, Items, Food, Clothing, Tools, Props, Buildings, Terrain
|
||||
|
||||
### **Atlantis Ruins (~75 assets)**
|
||||
- Underwater vegetation, Sea creatures, Nautical items, Buildings
|
||||
|
||||
### **Egyptian Desert (~70 assets)**
|
||||
- Desert vegetation, Egyptian creatures, Artifacts, Pyramids
|
||||
|
||||
### **Chernobyl Zone (~65 assets)**
|
||||
- Mutated plants, Radiation creatures, Soviet items, Ruins
|
||||
|
||||
### **Mushroom Forest (~60 assets)**
|
||||
- Giant mushrooms, Fungal creatures, Spores, Structures
|
||||
|
||||
### **Arctic Zone (~55 assets)**
|
||||
- Snow plants, Arctic animals, Ice structures, Igloos
|
||||
|
||||
### **Endless Forest (~85 assets)**
|
||||
- Ancient trees, Forest creatures, Druidic items, Tree villages
|
||||
|
||||
### **+ 11 more biomes** (~1,200 assets)
|
||||
- Volcanic Island, Haunted Swamp, Crystal Caves, etc.
|
||||
|
||||
---
|
||||
|
||||
## ❌ CATEGORY 5: ENEMIES & CREATURES (0/~500)
|
||||
|
||||
### **Zombies (0/50+)**
|
||||
- Basic zombies, Runners, Tanks, Special variants
|
||||
|
||||
### **Wild Animals (0/50+)**
|
||||
- Bears, wolves, boars, snakes, spiders
|
||||
|
||||
### **Magical Beings (0/50+)**
|
||||
- Elementals, spirits, demons, angels
|
||||
|
||||
### **Bosses (0/20+)**
|
||||
- Biome bosses, World bosses, Secret bosses
|
||||
|
||||
### **Biome-specific Creatures (0/330+)**
|
||||
- Unique creatures per biome
|
||||
|
||||
---
|
||||
|
||||
## ❌ CATEGORY 6: NPCS & CHARACTERS (0/~150)
|
||||
|
||||
### **Main Characters (0/4)**
|
||||
- Kai, Ana, Gronk, Susi (full sprite sets)
|
||||
|
||||
### **Merchants (0/30)**
|
||||
- Blacksmith, Shopkeeper, Trader, etc.
|
||||
|
||||
### **Services (0/30)**
|
||||
- Doctor, Mechanic, Farmer, Builder, etc.
|
||||
|
||||
### **Mentors (0/30)**
|
||||
- Combat trainer, Magic teacher, Craftsman, etc.
|
||||
|
||||
### **Romance Options (0/20)**
|
||||
- Various NPCs with relationship mechanics
|
||||
|
||||
### **Quest Givers (0/20)**
|
||||
- Story NPCs, side quest givers
|
||||
|
||||
### **Background NPCs (0/16)**
|
||||
- Townspeople, travelers, guards
|
||||
|
||||
---
|
||||
|
||||
## ❌ CATEGORY 7: BUILDINGS & STRUCTURES (0/~500)
|
||||
|
||||
### **Town Buildings (0/100)**
|
||||
- Shops, houses, town hall, etc.
|
||||
|
||||
### **Special Buildings (0/100)**
|
||||
- Churches, hospitals, schools, factories
|
||||
|
||||
### **Biome Structures (0/300)**
|
||||
- Ruins, temples, caves, dungeons per biome
|
||||
|
||||
---
|
||||
|
||||
## ❌ CATEGORY 8: UI & EFFECTS (0/~300)
|
||||
|
||||
### **UI Icons (0/150)**
|
||||
- Inventory slots, status icons, skill icons
|
||||
|
||||
### **Particles (0/100)**
|
||||
- Dust, sparkles, smoke, fire, water splashes
|
||||
|
||||
### **VFX (0/50)**
|
||||
- Magic effects, explosions, impacts, auras
|
||||
|
||||
---
|
||||
|
||||
## ❌ CATEGORY 9: ANIMATIONS & SPRITESHEETS (0/~8,000)
|
||||
|
||||
### **Character Animations (0/~2,000)**
|
||||
- Walk cycles (4-8 frames × 150 characters)
|
||||
- Run cycles
|
||||
- Attack animations
|
||||
- Idle animations
|
||||
|
||||
### **Enemy Animations (0/~2,000)**
|
||||
- Movement
|
||||
- Attacks
|
||||
- Death animations
|
||||
|
||||
### **Effect Animations (0/~4,000)**
|
||||
- Spell effects
|
||||
- Environmental effects
|
||||
- Combat effects
|
||||
|
||||
---
|
||||
|
||||
## ❌ CATEGORY 10: VARIATIONS & UPGRADES (0/~2,000)
|
||||
|
||||
### **Tool Upgrades (0/60)**
|
||||
- Copper, Iron, Gold, Diamond versions of tools
|
||||
|
||||
### **Building Levels (0/100)**
|
||||
- Level 1, 2, 3 variants
|
||||
|
||||
### **Seasonal Variants (0/400)**
|
||||
- Spring, Summer, Fall, Winter versions of crops
|
||||
|
||||
### **Item Variations (0/1,440)**
|
||||
- Color variants, damage states, enchanted versions
|
||||
|
||||
---
|
||||
|
||||
## 📊 OVERALL SUMMARY:
|
||||
|
||||
| Category | Done | Remaining | Total | % |
|
||||
|----------|------|-----------|-------|---|
|
||||
| **Farm Crops** | 103 | 0 | 103 | 100% |
|
||||
| **Farm Buildings** | 55 | 0 | 55 | 100% |
|
||||
| **Items & Equipment** | 105 | 0 | 105 | 100% |
|
||||
| **Dino Valley** | 58 | 51 | 109 | 53% |
|
||||
| **Other Biomes** | 0 | ~1,700 | ~1,700 | 0% |
|
||||
| **Enemies** | 0 | ~500 | ~500 | 0% |
|
||||
| **NPCs** | 0 | ~150 | ~150 | 0% |
|
||||
| **Buildings** | 0 | ~500 | ~500 | 0% |
|
||||
| **UI & Effects** | 0 | ~300 | ~300 | 0% |
|
||||
| **Animations** | 0 | ~8,000 | ~8,000 | 0% |
|
||||
| **Variations** | 0 | ~2,000 | ~2,000 | 0% |
|
||||
| **TOTAL** | **218** | **~13,201** | **~13,419** | **1.62%** |
|
||||
|
||||
---
|
||||
|
||||
## 🎯 IMMEDIATE NEXT STEPS:
|
||||
|
||||
### **Tonight/Tomorrow:**
|
||||
1. Finish Dino Valley (51 assets)
|
||||
2. Start high-priority biomes (Mythical Highlands, Atlantis)
|
||||
3. Generate core NPCs (Kai, Ana, Gronk, Susi)
|
||||
|
||||
### **This Week:**
|
||||
4. Complete 3-5 major biomes
|
||||
5. Generate all enemies & bosses
|
||||
6. Create essential NPCs
|
||||
|
||||
### **This Month:**
|
||||
7. All biomes complete
|
||||
8. All characters & NPCs
|
||||
9. All items & equipment variations
|
||||
10. Start animations
|
||||
|
||||
---
|
||||
|
||||
## 💰 BUDGET ALLOCATION:
|
||||
|
||||
**Available:** €1,117.62
|
||||
|
||||
**Priority Spending:**
|
||||
1. **Core Gameplay (€400)** - 1,000 slik
|
||||
- Finish Dino Valley
|
||||
- Main characters (Kai, Ana, Gronk, Susi)
|
||||
- Core enemies (zombies, animals)
|
||||
|
||||
2. **Essential Biomes (€600)** - 1,500 slik
|
||||
- 5 major biomes complete
|
||||
- All vegetation, creatures, items
|
||||
|
||||
3. **Reserve (€117)** - 300 slik
|
||||
- UI elements
|
||||
- Emergency fixes
|
||||
- Polish items
|
||||
|
||||
**Total:** 2,800 slik = **PLAYABLE GAME** ✅
|
||||
|
||||
---
|
||||
|
||||
**Last Updated:** 03.01.2026, 00:08 CET
|
||||
**Next Update:** When Dino Valley complete
|
||||
71
OVERNIGHT_AUTO_NAVODILA.md
Normal file
@@ -0,0 +1,71 @@
|
||||
# 🌙 OVERNIGHT AUTOMATION - NAVODILA
|
||||
|
||||
## 🚀 KAJ BO SCRIPT POČEL:
|
||||
|
||||
1. **Počaka na quota reset** (01:40 CET)
|
||||
2. **Avtomatsko generira** preostale Dino Valley assets (8 slik)
|
||||
3. **Shrani vse** v pravilne folderje
|
||||
4. **Git commit** na vsakih 5 slik (checkpointing)
|
||||
5. **Logira** vse v `auto_generation_log.txt`
|
||||
|
||||
---
|
||||
|
||||
## 📋 KAKO ZAGNATI:
|
||||
|
||||
### **NAČIN 1: Foreground (vidiš output)**
|
||||
|
||||
```bash
|
||||
cd /Users/davidkotnik/repos/novafarma
|
||||
python3 scripts/auto_generate_overnight.py
|
||||
```
|
||||
|
||||
**Pusti terminal odprt!** Ne zapri, drugače se script ustavi.
|
||||
|
||||
---
|
||||
|
||||
### **NAČIN 2: Background (lahko zapneš terminal)**
|
||||
|
||||
```bash
|
||||
cd /Users/davidkotnik/repos/novafarma
|
||||
nohup python3 scripts/auto_generate_overnight.py > overnight.log 2>&1 &
|
||||
```
|
||||
|
||||
**To lahko zapneš terminal**, script bo tekel v ozadju!
|
||||
|
||||
Za preverjanje statusa:
|
||||
|
||||
```bash
|
||||
# Poglej log
|
||||
tail -f /Users/davidkotnik/repos/novafarma/auto_generation_log.txt
|
||||
|
||||
# Ali
|
||||
tail -f /Users/davidkotnik/repos/novafarma/overnight.log
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⏰ TIMELINE:
|
||||
|
||||
**00:24** - Začetek (sedaj)
|
||||
**01:40** - Quota reset → script začne generirat
|
||||
**01:50** - 8 slik done → Dino Valley COMPLETE ✅
|
||||
**01:55** - Git commit, done!
|
||||
|
||||
---
|
||||
|
||||
## 📊 ŠE DOBIMO:
|
||||
|
||||
- **8 slik** (Dino Valley dokončano)
|
||||
- **€3.20** strošek (8 × €0.40)
|
||||
- **Kredit po tem:** ~€1,011
|
||||
|
||||
---
|
||||
|
||||
## ✅ READY TO RUN!
|
||||
|
||||
**Izberi:**
|
||||
|
||||
1. **Foreground** - Vidiš output, moraš terminal pustit odprt
|
||||
2. **Background** - Lahko greš spat, zjutraj vse done
|
||||
|
||||
**Tvoja izbira?** 😴🚀
|
||||
BIN
assets/slike/biomes/dino_valley/buildings/bone_fence.png
Normal file
|
After Width: | Height: | Size: 681 KiB |
BIN
assets/slike/biomes/dino_valley/buildings/cave_entrance.png
Normal file
|
After Width: | Height: | Size: 490 KiB |
BIN
assets/slike/biomes/dino_valley/buildings/primitive_hut.png
Normal file
|
After Width: | Height: | Size: 597 KiB |
BIN
assets/slike/biomes/dino_valley/buildings/stone_altar.png
Normal file
|
After Width: | Height: | Size: 581 KiB |
BIN
assets/slike/biomes/dino_valley/clothing/bone_helmet.png
Normal file
|
After Width: | Height: | Size: 546 KiB |
BIN
assets/slike/biomes/dino_valley/clothing/feather_cape.png
Normal file
|
After Width: | Height: | Size: 645 KiB |
BIN
assets/slike/biomes/dino_valley/clothing/hide_chest.png
Normal file
|
After Width: | Height: | Size: 529 KiB |
BIN
assets/slike/biomes/dino_valley/clothing/hide_legs.png
Normal file
|
After Width: | Height: | Size: 564 KiB |
BIN
assets/slike/biomes/dino_valley/clothing/leather_bracers.png
Normal file
|
After Width: | Height: | Size: 563 KiB |
BIN
assets/slike/biomes/dino_valley/clothing/scale_boots.png
Normal file
|
After Width: | Height: | Size: 628 KiB |
BIN
assets/slike/biomes/dino_valley/clothing/tooth_necklace.png
Normal file
|
After Width: | Height: | Size: 556 KiB |
BIN
assets/slike/biomes/dino_valley/clothing/tribal_loincloth.png
Normal file
|
After Width: | Height: | Size: 470 KiB |
BIN
assets/slike/biomes/dino_valley/creatures/baby_trex.png
Normal file
|
After Width: | Height: | Size: 462 KiB |
BIN
assets/slike/biomes/dino_valley/creatures/boss_alpha_trex.png
Normal file
|
After Width: | Height: | Size: 560 KiB |
BIN
assets/slike/biomes/dino_valley/props/bones_scattered.png
Normal file
|
After Width: | Height: | Size: 498 KiB |
BIN
assets/slike/biomes/dino_valley/props/nest_eggs.png
Normal file
|
After Width: | Height: | Size: 578 KiB |
BIN
assets/slike/biomes/dino_valley/props/nest_empty.png
Normal file
|
After Width: | Height: | Size: 614 KiB |
BIN
assets/slike/biomes/dino_valley/props/ribcage.png
Normal file
|
After Width: | Height: | Size: 735 KiB |
BIN
assets/slike/biomes/dino_valley/props/skull_trex.png
Normal file
|
After Width: | Height: | Size: 587 KiB |
BIN
assets/slike/biomes/dino_valley/props/skull_trike.png
Normal file
|
After Width: | Height: | Size: 638 KiB |
BIN
assets/slike/biomes/dino_valley/props/tar_pit.png
Normal file
|
After Width: | Height: | Size: 507 KiB |
BIN
assets/slike/biomes/dino_valley/props/volcanic_rocks.png
Normal file
|
After Width: | Height: | Size: 503 KiB |
BIN
assets/slike/biomes/dino_valley/terrain/dirt_volcanic.png
Normal file
|
After Width: | Height: | Size: 636 KiB |
BIN
assets/slike/biomes/dino_valley/terrain/grass_prehistoric.png
Normal file
|
After Width: | Height: | Size: 556 KiB |
BIN
assets/slike/biomes/dino_valley/terrain/mud.png
Normal file
|
After Width: | Height: | Size: 535 KiB |
BIN
assets/slike/biomes/dino_valley/terrain/rock_lava.png
Normal file
|
After Width: | Height: | Size: 584 KiB |
BIN
assets/slike/biomes/dino_valley/tools/bone_axe.png
Normal file
|
After Width: | Height: | Size: 553 KiB |
BIN
assets/slike/biomes/dino_valley/tools/bone_club.png
Normal file
|
After Width: | Height: | Size: 469 KiB |
BIN
assets/slike/biomes/dino_valley/tools/bone_shovel.png
Normal file
|
After Width: | Height: | Size: 479 KiB |
BIN
assets/slike/biomes/dino_valley/tools/dino_tooth_knife.png
Normal file
|
After Width: | Height: | Size: 479 KiB |
BIN
assets/slike/biomes/dino_valley/tools/flint_pickaxe.png
Normal file
|
After Width: | Height: | Size: 460 KiB |
BIN
assets/slike/biomes/dino_valley/tools/javelin.png
Normal file
|
After Width: | Height: | Size: 428 KiB |
BIN
assets/slike/biomes/dino_valley/tools/obsidian_blade.png
Normal file
|
After Width: | Height: | Size: 462 KiB |
BIN
assets/slike/biomes/dino_valley/tools/primitive_bow.png
Normal file
|
After Width: | Height: | Size: 507 KiB |
BIN
assets/slike/biomes/dino_valley/tools/stone_hammer.png
Normal file
|
After Width: | Height: | Size: 459 KiB |
BIN
assets/slike/biomes/dino_valley/tools/stone_spear.png
Normal file
|
After Width: | Height: | Size: 432 KiB |
252
scripts/auto_generate_overnight.py
Normal file
@@ -0,0 +1,252 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
OVERNIGHT AUTOMATION SCRIPT - Dino Valley & Beyond
|
||||
Waits for quota reset, then automatically generates remaining assets
|
||||
"""
|
||||
|
||||
import os
|
||||
import time
|
||||
import json
|
||||
import requests
|
||||
from datetime import datetime, timedelta
|
||||
from pathlib import Path
|
||||
import base64
|
||||
|
||||
# ========================================
|
||||
# CONFIGURATION
|
||||
# ========================================
|
||||
|
||||
PROJECT_ROOT = Path("/Users/davidkotnik/repos/novafarma")
|
||||
ASSET_ROOT = PROJECT_ROOT / "assets/slike"
|
||||
LOG_FILE = PROJECT_ROOT / "auto_generation_log.txt"
|
||||
|
||||
# Vertex AI Configuration
|
||||
PROJECT_ID = "gen-lang-client-0428644398"
|
||||
LOCATION = "us-central1"
|
||||
MODEL = "imagen-3.0-generate-001"
|
||||
|
||||
# Quota reset time (from error message)
|
||||
QUOTA_RESET_TIME = datetime.fromisoformat("2026-01-03T01:40:39+01:00")
|
||||
|
||||
# Generation limits
|
||||
MAX_IMAGES_PER_HOUR = 60 # Conservative (actual is 60/min)
|
||||
BATCH_SIZE = 10 # Generate in batches for checkpointing
|
||||
DELAY_BETWEEN_IMAGES = 1.2 # Seconds (safe rate limiting)
|
||||
|
||||
# Style definitions
|
||||
STYLE_33_ENTITIES = """exact same art style as reference. Very thick black outlines (4-5px), flat colors NO gradients, pastel colors with dark gothic accents, NO pupils (white eyes), cute-dark aesthetic, clean vector cartoon"""
|
||||
|
||||
STYLE_30_VEGETATION = """exact Garden Story cozy art style. Soft rounded shapes, gentle pastel colors, NO thick outlines (thin 1-2px), watercolor-like soft shading, cute botanical illustration, clean cozy plant art"""
|
||||
|
||||
# ========================================
|
||||
# REMAINING DINO VALLEY ASSETS (18)
|
||||
# ========================================
|
||||
|
||||
DINO_VALLEY_REMAINING = {
|
||||
"creatures": [
|
||||
{
|
||||
"name": "boss_thunder_raptor",
|
||||
"prompt": "Thunder Raptor boss in {STYLE}. Pastel purple/blue raptor with lightning patterns, large empty white eyes NO pupils, dark gothic electric accents. 3/4 angle. Chroma green background (#00FF00)."
|
||||
},
|
||||
{
|
||||
"name": "dino_nest_eggs_special",
|
||||
"prompt": "Special glowing dinosaur nest in {STYLE}. Pastel brown nest with magical glowing eggs, dark gothic mystical aura. 3/4 angle. Chroma green background (#00FF00)."
|
||||
},
|
||||
{
|
||||
"name": "zombie_prehistoric",
|
||||
"prompt": "Prehistoric zombie caveman in {STYLE}. Pastel green/gray decayed caveman, torn tribal clothes, large empty white eyes NO pupils, dark gothic rot. 3/4 angle. Chroma green background (#00FF00)."
|
||||
},
|
||||
{
|
||||
"name": "zombie_dino_raptor",
|
||||
"prompt": "Zombie raptor dinosaur in {STYLE}. Pastel gray/green undead raptor with exposed bones, large empty white eyes NO pupils, dark gothic decay. 3/4 angle. Chroma green background (#00FF00)."
|
||||
},
|
||||
{
|
||||
"name": "zombie_bone",
|
||||
"prompt": "Skeleton zombie in {STYLE}. White/cream animated skeleton warrior, large empty eye sockets, dark gothic cracks. 3/4 angle. Chroma green background (#00FF00)."
|
||||
},
|
||||
{
|
||||
"name": "zombie_tar",
|
||||
"prompt": "Tar zombie in {STYLE}. Black sticky tar monster humanoid, glowing pastel orange eyes, dark gothic dripping texture. 3/4 angle. Chroma green background (#00FF00)."
|
||||
},
|
||||
{
|
||||
"name": "npc_tribal_hunter",
|
||||
"prompt": "Tribal hunter NPC in {STYLE}. Pastel brown skinned caveman with bone spear, tribal tattoos, large empty white eyes NO pupils, dark gothic war paint, friendly stance. 3/4 angle. Chroma green background (#00FF00)."
|
||||
},
|
||||
{
|
||||
"name": "npc_shaman",
|
||||
"prompt": "Tribal shaman NPC in {STYLE}. Elderly caveman with bone staff and feather headdress, pastel skin, large empty white eyes NO pupils, dark gothic mystical symbols, wise pose. 3/4 angle. Chroma green background (#00FF00)."
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
# ========================================
|
||||
# UTILITY FUNCTIONS
|
||||
# ========================================
|
||||
|
||||
def log(message):
|
||||
"""Log message to file and console"""
|
||||
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
log_msg = f"[{timestamp}] {message}"
|
||||
print(log_msg)
|
||||
with open(LOG_FILE, 'a') as f:
|
||||
f.write(log_msg + "\n")
|
||||
|
||||
def wait_for_quota_reset():
|
||||
"""Wait until quota resets"""
|
||||
now = datetime.now()
|
||||
wait_seconds = (QUOTA_RESET_TIME - now).total_seconds()
|
||||
|
||||
if wait_seconds > 0:
|
||||
log(f"⏰ Waiting for quota reset at {QUOTA_RESET_TIME.strftime('%H:%M')}")
|
||||
log(f" Sleeping for {int(wait_seconds/60)} minutes...")
|
||||
time.sleep(wait_seconds + 10) # Add 10 sec buffer
|
||||
log("✅ Quota should be reset now!")
|
||||
else:
|
||||
log("✅ Quota already reset!")
|
||||
|
||||
def get_access_token():
|
||||
"""Get Google Cloud access token"""
|
||||
import subprocess
|
||||
result = subprocess.run(
|
||||
['gcloud', 'auth', 'print-access-token'],
|
||||
capture_output=True,
|
||||
text=True
|
||||
)
|
||||
return result.stdout.strip()
|
||||
|
||||
def generate_image_vertex(prompt, output_path):
|
||||
"""Generate image using Vertex AI Imagen 3.0"""
|
||||
|
||||
access_token = get_access_token()
|
||||
|
||||
url = f"https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/publishers/google/models/{MODEL}:predict"
|
||||
|
||||
headers = {
|
||||
"Authorization": f"Bearer {access_token}",
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
|
||||
payload = {
|
||||
"instances": [
|
||||
{
|
||||
"prompt": prompt
|
||||
}
|
||||
],
|
||||
"parameters": {
|
||||
"sampleCount": 1,
|
||||
"aspectRatio": "1:1",
|
||||
"safetyFilterLevel": "block_few",
|
||||
"personGeneration": "allow_all"
|
||||
}
|
||||
}
|
||||
|
||||
try:
|
||||
response = requests.post(url, headers=headers, json=payload, timeout=60)
|
||||
response.raise_for_status()
|
||||
|
||||
result = response.json()
|
||||
|
||||
# Extract and save image
|
||||
if "predictions" in result and len(result["predictions"]) > 0:
|
||||
image_data = result["predictions"][0]["bytesBase64Encoded"]
|
||||
image_bytes = base64.b64decode(image_data)
|
||||
|
||||
# Save to file
|
||||
output_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
with open(output_path, 'wb') as f:
|
||||
f.write(image_bytes)
|
||||
|
||||
log(f" ✅ Saved: {output_path.name}")
|
||||
return True
|
||||
else:
|
||||
log(f" ❌ No image in response")
|
||||
return False
|
||||
|
||||
except requests.exceptions.HTTPError as e:
|
||||
if e.response.status_code == 429:
|
||||
log(f" ⚠️ Quota exhausted again, waiting 5 minutes...")
|
||||
time.sleep(300)
|
||||
return False
|
||||
else:
|
||||
log(f" ❌ HTTP Error: {e}")
|
||||
return False
|
||||
except Exception as e:
|
||||
log(f" ❌ Error: {str(e)}")
|
||||
return False
|
||||
|
||||
def git_commit_checkpoint(message):
|
||||
"""Create git commit checkpoint"""
|
||||
import subprocess
|
||||
try:
|
||||
subprocess.run(['git', 'add', '-A'], cwd=PROJECT_ROOT, check=True)
|
||||
subprocess.run(['git', 'commit', '-m', message], cwd=PROJECT_ROOT, check=True)
|
||||
log(f" 📦 Git commit: {message}")
|
||||
except Exception as e:
|
||||
log(f" ⚠️ Git commit failed: {e}")
|
||||
|
||||
# ========================================
|
||||
# MAIN GENERATION LOGIC
|
||||
# ========================================
|
||||
|
||||
def generate_dino_valley_remaining():
|
||||
"""Generate remaining Dino Valley assets"""
|
||||
|
||||
log("🦖 Starting Dino Valley completion...")
|
||||
|
||||
total = len(DINO_VALLEY_REMAINING["creatures"])
|
||||
completed = 0
|
||||
|
||||
for asset in DINO_VALLEY_REMAINING["creatures"]:
|
||||
name = asset["name"]
|
||||
prompt_template = asset["prompt"]
|
||||
|
||||
# Use Style 33 for entities
|
||||
prompt = prompt_template.replace("{STYLE}", STYLE_33_ENTITIES)
|
||||
|
||||
output_path = ASSET_ROOT / "biomes/dino_valley/creatures" / f"{name}.png"
|
||||
|
||||
# Skip if already exists
|
||||
if output_path.exists():
|
||||
log(f"⏭️ Skipping {name} (already exists)")
|
||||
completed += 1
|
||||
continue
|
||||
|
||||
log(f"🖼️ Generating {name} ({completed+1}/{total})")
|
||||
|
||||
success = generate_image_vertex(prompt, output_path)
|
||||
|
||||
if success:
|
||||
completed += 1
|
||||
|
||||
# Checkpoint every 5 images
|
||||
if completed % 5 == 0:
|
||||
git_commit_checkpoint(f"🦖 Dino Valley auto: {completed}/{total} creatures")
|
||||
|
||||
# Rate limiting
|
||||
time.sleep(DELAY_BETWEEN_IMAGES)
|
||||
|
||||
log(f"✅ Dino Valley complete! {completed}/{total} assets generated")
|
||||
git_commit_checkpoint(f"🎉 DINO VALLEY COMPLETE - All {completed} creatures done!")
|
||||
|
||||
return completed
|
||||
|
||||
# ========================================
|
||||
# MAIN EXECUTION
|
||||
# ========================================
|
||||
|
||||
if __name__ == "__main__":
|
||||
log("="*60)
|
||||
log("🚀 OVERNIGHT AUTOMATION STARTED")
|
||||
log("="*60)
|
||||
|
||||
# Wait for quota reset
|
||||
wait_for_quota_reset()
|
||||
|
||||
# Generate remaining Dino Valley
|
||||
dino_count = generate_dino_valley_remaining()
|
||||
|
||||
log("="*60)
|
||||
log(f"✅ AUTOMATION COMPLETE!")
|
||||
log(f"📊 Total generated: {dino_count} assets")
|
||||
log(f"💰 Estimated cost: €{dino_count * 0.40:.2f}")
|
||||
log("="*60)
|
||||
@@ -25,21 +25,10 @@ BIOME_ROOT = PROJECT_ROOT / "assets/slike/biomi"
|
||||
API_KEY = os.getenv("GEMINI_API_KEY") # Set this in environment
|
||||
API_URL = "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-image:generateImage"
|
||||
|
||||
# Art styles - STRICT ENFORCEMENT (02.01.2026)
|
||||
STYLE_32_ENTITIES = """exact Dark-Chibi Noir style with:
|
||||
- Very thick black outlines (4-5px bold marker lines)
|
||||
- Chibi proportions (head 40-50% of total body, large features)
|
||||
- Flat colors ONLY, NO gradients, NO soft shading
|
||||
- Sharp block shadows (black/dark purple on one side for noir effect)
|
||||
- Large empty eyes (white or red, NO pupils, cult-like)
|
||||
- Pastel-gothic color palette (soft colors + dark accents)"""
|
||||
# Art styles - PROVEN FORMULA (Style 33 + Style 30)
|
||||
STYLE_33_ENTITIES = """exact same art style as reference. Very thick black outlines (4-5px), flat colors NO gradients, pastel colors with dark gothic accents, NO pupils (white eyes), cute-dark aesthetic, clean vector cartoon"""
|
||||
|
||||
STYLE_30_VEGETATION = """exact Garden Story cozy botanical style with:
|
||||
- Thin gentle outlines (1-2px)
|
||||
- Soft watercolor-like shading (subtle gradients allowed)
|
||||
- Rounded organic shapes, wholesome aesthetic
|
||||
- Pastel-vibrant botanical colors
|
||||
- Friendly, inviting, nature-focused look"""
|
||||
STYLE_30_VEGETATION = """exact Garden Story cozy art style. Soft rounded shapes, gentle pastel colors, NO thick outlines (thin 1-2px), watercolor-like soft shading, cute botanical illustration, clean cozy plant art"""
|
||||
|
||||
# ========================================
|
||||
# BIOME DEFINITIONS
|
||||
@@ -122,7 +111,7 @@ def generate_asset_prompt(asset_name, asset_type, is_vegetation=False):
|
||||
if asset_type == "vegetacija" or is_vegetation:
|
||||
style_text = STYLE_30_VEGETATION
|
||||
else:
|
||||
style_text = STYLE_32_ENTITIES
|
||||
style_text = STYLE_33_ENTITIES
|
||||
|
||||
# Format asset name to readable
|
||||
readable_name = asset_name.replace("_", " ").title()
|
||||
|
||||