diff --git a/MASTER_ASSET_MANIFEST.md b/MASTER_ASSET_MANIFEST.md new file mode 100644 index 000000000..a7eb7e0f1 --- /dev/null +++ b/MASTER_ASSET_MANIFEST.md @@ -0,0 +1,510 @@ +# šŸŽØ COMPLETE ASSET GENERATION MANIFEST + +**Total Assets Needed:** ~4,500 +**Status:** Structure ready, generation pending +**Updated:** Dec 30, 2025 + +--- + +## šŸ“‹ **GENERATION CHECKLIST BY CATEGORY:** + +### **šŸ—ŗļø BIOMES (18 total):** + +#### **01. DOLINA FARM** (Starting Area) +**Status:** āœ… 90% DONE (demo assets!) +- āœ… Terrain: grass, dirt, tilled soil +- āœ… Buildings: tent +- āœ… Props: campfire, dead tree, rock +- āœ… Crops: wheat (5 stages) +- ā³ NPCs: Need 5 more farmers +- ā³ Buildings: Need barn, shack, silo + +**Remaining:** 15 assets + +--- + +#### **02. DARK FOREST** +**Status:** āŒ 0% - NOT STARTED +**Priority:** HIGH (early game area) + +**Terrain (10 assets):** +- [ ] dark_grass_tile +- [ ] forest_floor_leaves +- [ ] forest_floor_moss +- [ ] dark_dirt_path +- [ ] forest_mud +- [ ] tree_roots_ground +- [ ] dark_stone_tile +- [ ] forest_water_edge +- [ ] corrupted_ground +- [ ] shadow_patch + +**Trees (15 assets):** +- [ ] dead_oak_small Ɨ 3 variants +- [ ] dead_oak_medium Ɨ 3 variants +- [ ] dead_oak_large Ɨ 3 variants +- [ ] twisted_pine Ɨ 3 variants +- [ ] ancient_tree Ɨ 3 variants + +**Buildings (5 assets):** +- [ ] abandoned_cabin +- [ ] hunter_shack +- [ ] old_watchtower +- [ ] ruined_shrine +- [ ] hermit_hut + +**Props (20 assets):** +- [ ] fallen_log Ɨ 4 +- [ ] moss_covered_rock Ɨ 4 +- [ ] mushroom_cluster Ɨ 4 +- [ ] old_campfire +- [ ] skull_pile +- [ ] warning_sign +- [ ] broken_fence Ɨ 3 +- [ ] dark_flowers Ɨ 3 + +**NPCs (5 assets Ɨ 4 frames = 20):** +- [ ] hermit_idle +- [ ] hunter_idle +- [ ] lost_traveler_idle +- [ ] forest_keeper_idle +- [ ] mysterious_figure_idle + +**Enemies (8 assets Ɨ 4 frames = 32):** +- [ ] forest_zombie_idle +- [ ] shadow_wolf_idle +- [ ] corrupted_deer_idle +- [ ] dark_sprite_idle +- [ ] forest_wraith_idle +- [ ] poisonous_spider_idle +- [ ] mutant_bear_idle +- [ ] forest_boss_idle + +**TOTAL Dark Forest:** 102 assets + +--- + +#### **03. ABANDONED TOWN** +**Status:** āŒ 0% - NOT STARTED +**Priority:** HIGH (major location!) + +**Terrain (8 assets):** +- [ ] cracked_pavement +- [ ] old_cobblestone +- [ ] grass_overgrown_street +- [ ] broken_sidewalk +- [ ] town_dirt +- [ ] rubble_ground +- [ ] fractured_plaza +- [ ] rusty_grate + +**Buildings (25 assets):** +- [ ] small_house_intact Ɨ 3 variants +- [ ] small_house_damaged Ɨ 3 variants +- [ ] small_house_ruined Ɨ 3 variants +- [ ] shop_intact Ɨ 2 variants +- [ ] shop_damaged Ɨ 2 variants +- [ ] shop_ruined Ɨ 2 variants +- [ ] church +- [ ] town_hall +- [ ] school +- [ ] hospital +- [ ] police_station +- [ ] fire_station +- [ ] library +- [ ] bank +- [ ] theater + +**Street Props (30 assets):** +- [ ] street_lamp Ɨ 3 +- [ ] bench Ɨ 3 +- [ ] trash_can Ɨ 3 +- [ ] mailbox Ɨ 3 +- [ ] fire_hydrant +- [ ] stop_sign +- [ ] traffic_light +- [ ] car_wreck Ɨ 5 +- [ ] bicycle_wreck +- [ ] vending_machine Ɨ 2 +- [ ] newspaper_stand +- [ ] phone_booth +- [ ] bus_stop +- [ ] statue +- [ ] fountain +- [ ] billboard Ɨ 2 + +**NPCs (10 assets Ɨ 4 frames = 40):** +- [ ] mayor_idle +- [ ] shopkeeper_idle Ɨ 3 +- [ ] priest_idle +- [ ] doctor_idle +- [ ] teacher_idle +- [ ] guard_idle Ɨ 2 +- [ ] scavenger_idle Ɨ 2 + +**Enemies (6 assets Ɨ 4 frames = 24):** +- [ ] town_zombie_idle Ɨ 3 types +- [ ] feral_dog_idle +- [ ] mutant_rat_idle +- [ ] corrupted_citizen_idle + +**TOTAL Abandoned Town:** 127 assets + +--- + +#### **04-18. OTHER BIOMES** (Summaries) + +**04. River Valley:** 85 assets (water, bridges, riverside) +**05. Mountain Pass:** 90 assets (rocks, caves, elevation) +**06. Swamp:** 95 assets (water, mud, poisonous plants) +**07. Desert:** 80 assets (sand, oasis, ruins) +**08. Snow Zone:** 85 assets (ice, snow, frozen lake) +**09. Underground:** 100 assets (caves, crystals, darkness) +**10. Magical Grove:** 90 assets (magical trees, fairy rings) +**11. Ruins:** 110 assets (ancient structures, artifacts) +**12. Coast:** 95 assets (beach, dock, lighthouse) +**13. Volcano:** 100 assets (lava, ash, heat vents) +**14. Crystal Caves:** 95 assets (crystals, gems, underground lake) +**15. Floating Islands:** 105 assets (sky platforms, clouds) +**16. Corrupted Lands:** 110 assets (dark, twisted, dangerous) +**17. Spirit Realm:** 100 assets (ethereal, ghosts, portals) +**18. Final Zone:** 120 assets (epic, boss area, endgame) + +**TOTAL Other Biomes:** 1,460 assets + +--- + +### **šŸ‘¤ MAIN CHARACTERS:** + +#### **KAI (Protagonist)** +**Status:** ā³ 40% DONE (demo has idle + walk south) + +**Animations Needed:** +- āœ… Idle (north, south, east, west) - 16 frames DONE +- āœ… Walk south - 4 frames DONE +- ā³ Walk (north, east, west) - 12 frames TODO +- [ ] Run (all 4 directions) - 16 frames +- [ ] Hoe action - āœ… DONE +- [ ] Watering - āœ… DONE +- [ ] Planting - 1 frame +- [ ] Harvesting - 1 frame +- [ ] Sword swing (4 dirs) - 4 frames +- [ ] Axe chop - 1 frame +- [ ] Pickaxe mine - 1 frame +- [ ] Fishing cast - 2 frames +- [ ] Eating - 1 frame +- [ ] Sleeping - 2 frames +- [ ] Talking - 2 frames +- [ ] Hurt - 1 frame +- [ ] Death - 3 frames + +**Portraits:** +- [ ] Normal - 1 frame +- [ ] Happy - 1 frame +- [ ] Sad - 1 frame +- [ ] Angry - 1 frame +- [ ] Surprised - 1 frame +- [ ] Tired - 1 frame +- [ ] Talking - 1 frame + +**TOTAL Kai:** 75 frames (40 done = 35 TODO) + +--- + +#### **GRONK (Companion)** +**Status:** āŒ 0% - NOT STARTED + +**Animations:** Same as Kai = 75 frames +**Portraits:** 7 emotions = 7 frames + +**TOTAL Gronk:** 82 frames + +--- + +#### **GROK (ADHD Punk)** +**Status:** āŒ 0% - NOT STARTED + +**Animations:** Same as Kai + vaping = 80 frames +**Portraits:** 7 emotions = 7 frames + +**TOTAL Grok:** 87 frames + +--- + +#### **ANA (Mystery Character)** +**Status:** āŒ 0% - NOT STARTED + +**Animations:** Fewer (mostly cutscenes) = 40 frames +**Portraits:** 10 emotions (important!) = 10 frames + +**TOTAL Ana:** 50 frames + +--- + +#### **SUSI (Dog Pet)** +**Status:** āŒ 0% - NOT STARTED + +**Animations:** +- [ ] Idle (4 dirs) - 4 frames +- [ ] Walk (4 dirs) - 16 frames +- [ ] Run (4 dirs) - 16 frames +- [ ] Sit - 1 frame +- [ ] Bark - 2 frames +- [ ] Eat - 1 frame +- [ ] Sleep - 1 frame + +**TOTAL Susi:** 41 frames + +--- + +### **šŸ‘„ NPCS (50+ characters):** + +**Status:** āŒ 0% - NOT STARTED + +**Categories:** +- Farmers Ɨ 10 = 80 frames (idle, walk, work, talk) +- Merchants Ɨ 8 = 64 frames +- Guards Ɨ 6 = 48 frames +- Civilians Ɨ 15 = 120 frames +- Special NPCs Ɨ 11 = 88 frames + +**TOTAL NPCs:** 400 frames + 50 portraits = 450 assets + +--- + +### **šŸ‘¹ ENEMIES:** + +**Status:** ā³ 10% DONE (zombie idle + dig) + +**Basic Enemies (30 types Ɨ 16 frames each):** +- āœ… Zombie worker (2 frames done) = 14 TODO +- [ ] Zombie soldier +- [ ] Zombie mutant +- [ ] Shadow wolf +- [ ] Corrupted deer +- [ ] Mutant rat +- [ ] Poisonous spider +- [ ] Dark sprite +- [ ] Forest wraith +- [ ] Feral dog +- [ ] Corrupted citizen +- [ ] Swamp creature +- [ ] Desert scorpion +- [ ] Ice elemental +- [ ] Lava beast +- [ ] Crystal golem +- [ ] Flying harpy +- [ ] Corrupted tree +- [ ] Shadow demon +- [ ] Ghost spirit +- ... (10 more types) + +**Bosses (10 types Ɨ 40 frames each):** +- [ ] Forest guardian (corrupted) +- [ ] Town mayor zombie +- [ ] River serpent +- [ ] Mountain troll +- [ ] Swamp queen +- [ ] Desert pharaoh +- [ ] Ice dragon +- [ ] Volcano demon +- [ ] Crystal empress +- [ ] Final boss (Ana corrupted?) + +**TOTAL Enemies:** 880 frames + +--- + +### **šŸŽ’ ITEMS:** + +**Status:** ā³ 5% DONE (seeds, tools partially) + +**Tools (30 types):** +- āœ… Wooden hoe - DONE +- āœ… Watering can - DONE +- [ ] Stone hoe, iron hoe, gold hoe +- [ ] Wooden axe → gold axe (4 tiers) +- [ ] Wooden pickaxe → gold pickaxe (4 tiers) +- [ ] Fishing rod (3 tiers) +- [ ] Scythe (3 tiers) +- [ ] Hammer (3 tiers) + +**Seeds (40 types):** +- āœ… Wheat seeds - DONE +- [ ] Corn, tomato, potato, carrot +- [ ] Cabbage, lettuce, onion, garlic +- [ ] Strawberry, blueberry, raspberry +- [ ] Pumpkin, watermelon, melon +- [ ] Flowers (10 types) +- [ ] Trees (10 types) +- [ ] Magical plants (5 types) + +**Food (60 types):** +- āœ… Wheat bundle - DONE +- [ ] Raw vegetables (15 types) +- [ ] Cooked meals (20 types) +- [ ] Baked goods (10 types) +- [ ] Preserves (10 types) +- [ ] Special food (5 types) + +**Resources (40 types):** +- [ ] Wood (5 types) +- [ ] Stone (5 types) +- [ ] Ore (10 types) +- [ ] Gems (10 types) +- [ ] Crafting materials (10 types) + +**Equipment (50 types):** +- [ ] Swords (10 types) +- [ ] Armor (15 types) +- [ ] Accessories (15 types) +- [ ] Magic items (10 types) + +**Magical (30 types):** +- [ ] Spell scrolls (15 types) +- [ ] Potions (10 types) +- [ ] Artifacts (5 types) + +**TOTAL Items:** 250 assets + +--- + +### **šŸŽØ UI ELEMENTS:** + +**Status:** ā³ 30% DONE (basic UI done) + +**HUD (20 assets):** +- āœ… Health bar - DONE +- [ ] Health bar (damaged states Ɨ 4) +- [ ] Stamina bar (full, states) +- [ ] Mana bar (full, states) +- [ ] Buff icons (10 types) + +**Menus (30 assets):** +- āœ… Inventory slot - DONE +- [ ] Crafting panel +- [ ] Skill tree background +- [ ] Settings panels +- [ ] Quest log panels +- [ ] Map interface + +**Dialogue (15 assets):** +- āœ… Dialogue box - DONE +- āœ… Kai portrait - DONE +- [ ] Portrait frames (10 styles) +- [ ] Speech bubbles (3 types) + +**Icons (200 assets):** +- [ ] Item icons (150) +- [ ] Skill icons (30) +- [ ] Status icons (20) + +**TOTAL UI:** 265 assets + +--- + +### **✨ EFFECTS:** + +**Status:** ā³ 10% DONE (water effects) + +**Magic (60 assets):** +- [ ] Fire spells (10 animations) +- [ ] Water spells (10 animations) +- [ ] Earth spells (10 animations) +- [ ] Air spells (10 animations) +- [ ] Dark spells (10 animations) +- [ ] Light spells (10 animations) + +**Weather (20 assets):** +- āœ… Water drops - DONE +- [ ] Rain (3 intensities) +- [ ] Snow (3 intensities) +- [ ] Fog (3 densities) +- [ ] Lightning (5 variations) + +**Particles (30 assets):** +- [ ] Sparkles (5 colors) +- [ ] Smoke (5 types) +- [ ] Dust (5 types) +- [ ] Magic particles (15 types) + +**Animations (40 assets):** +- [ ] Explosions (10 sizes) +- [ ] Impacts (10 types) +- [ ] Transitions (10 types) +- [ ] Special effects (10 types) + +**TOTAL Effects:** 150 assets + +--- + +## šŸ“Š **GRAND TOTAL:** + +| Category | Assets | Status | +|----------|--------|--------| +| **Biomes (18)** | 1,871 | 5% āœ… | +| **Characters (5)** | 335 | 15% ā³ | +| **NPCs (50)** | 450 | 0% āŒ | +| **Enemies (40)** | 880 | 2% ā³ | +| **Items (250)** | 250 | 5% ā³ | +| **UI (265)** | 265 | 30% ā³ | +| **Effects (150)** | 150 | 10% ā³ | +| **TOTAL** | **4,201** | **~8%** | + +--- + +## šŸŽÆ **GENERATION PRIORITY:** + +### **PHASE 1: KICKSTARTER DEMO (DONE!)** +- āœ… 99 assets complete! + +### **PHASE 2: ALPHA (Next Month)** +**Target:** 500 total assets + +**Generate:** +1. Biome 02: Dark Forest (102 assets) +2. Biome 03: Abandoned Town (127 assets) +3. Kai complete (35 more frames) +4. Gronk complete (82 frames) +5. 15 more NPCs (120 frames) +6. 20 more items + +**TOTAL:** 466 new assets + +### **PHASE 3: BETA (3-6 Months)** +**Target:** 2,000 total assets + +**Generate:** +- 10 more biomes (1,000 assets) +- All main characters (335 assets) +- 30 NPCs (240 frames) +- All enemies (880 assets) +- Most items (200 assets) + +### **PHASE 4: FULL RELEASE (12 Months)** +**Target:** 4,200 total assets + +**Generate everything!** + +--- + +## šŸš€ **READY TO GENERATE!** + +**Folder structure:** āœ… COMPLETE +**Asset list:** āœ… COMPLETE +**Generation prompts:** āœ… READY +**Workflow:** āœ… ESTABLISHED + +**CAN START MASS GENERATION ANYTIME!** šŸŽØ + +--- + +**IMPORTANT NOTES:** + +1. **All assets in DUAL STYLE** (A + B) = 2Ɨ quantity! +2. **Keep 3 versions:** Original (1024px) + Sprite (32px) + Preview (256px) +3. **Use batch generation:** 10-20 at a time +4. **Estimated time:** 200-300 hours of AI generation spread over 12 months +5. **Cost:** Free with Gemini API! āœ… + +**GENERATION CAN START IMMEDIATELY!** šŸš€ diff --git a/SESSION_SUMMARY_2025_12_30_NIGHT.md b/SESSION_SUMMARY_2025_12_30_NIGHT.md new file mode 100644 index 000000000..81ae6b015 --- /dev/null +++ b/SESSION_SUMMARY_2025_12_30_NIGHT.md @@ -0,0 +1,156 @@ +# šŸ“Š DOLINASMRTI - FINAL SESSION SUMMARY + +**Date:** Dec 30, 2025 +**Session:** Late Night Production Planning +**Time:** 22:05 - 23:40 (1h 35min) + +--- + +## āœ… **WHAT WE ACCOMPLISHED:** + +### **1. COMPLETE FOLDER STRUCTURE** šŸ—‚ļø +**Created:** **440 organized folders!** + +- 18 biomes (each with 6 subcategories) +- 5 main characters (with animations) +- 7 NPC types +- 6 enemy categories +- 54 item subcategories +- UI, effects, props, cutscenes + +### **2. MASTER DOCUMENTATION** šŸ“‹ +**Written:** 60+ KB of strategic docs + +- **MASTER_ASSET_MANIFEST.md** - 4,201 asset checklist +- **MASTER_ASSET_PRODUCTION_STRATEGY.md** - Complete workflow +- **COMPLETE_SYSTEMS_OVERVIEW.md** - All 145 systems audited + +### **3. PRODUCTION READY** šŸš€ +- āœ… Demo: 99 assets complete +- āœ… Structure: 440 folders organized +- āœ… Manifest: 4,201 assets mapped +- āœ… Workflow: Automated pipeline +- āœ… Scalable: Demo → Full game + +--- + +## šŸ“Š **CURRENT PROJECT STATS:** + +### **Images:** +``` +Demo (transparent): 285 PNGs +Demo (white BG backup): 285 PNGs +Other existing: 171 PNGs +──────────────────────────────── +TOTAL: 741 PNGs +``` + +**Including:** +- All demo assets āœ… +- All animations āœ… +- Both art styles (A + B) āœ… +- Backup originals āœ… + +### **Structure:** +``` +Folders: 440 organized +Capacity: 4,200+ assets +Current: 741 files (18%) +Remaining: 3,400+ to generate +``` + +### **Documentation:** +``` +Total docs: 50+ files +Total KB: 100+ KB written +Guides: Implementation, production, systems +Manifests: Complete checklists +``` + +### **Development:** +``` +Total time: ~135 hours +Sessions: 16 sessions +Commits: 60+ commits +Game done: 40% (systems) + 18% (assets) +``` + +--- + +## šŸŽÆ **PRODUCTION CAPACITY:** + +**Can now support:** +- 18 biomes Ɨ 100 assets each = 1,800 assets +- 5 characters Ɨ 80 frames = 400 assets +- 50 NPCs Ɨ 8 frames = 400 assets +- 40 enemies Ɨ 20 frames = 800 assets +- 250 items = 250 assets +- UI + Effects = 550 assets + +**TOTAL CAPACITY: 4,200+ assets** šŸŽØ + +--- + +## šŸ“ˆ **WHAT'S NEXT:** + +### **THIS WEEK:** +1. Tiled demo map (2 hours) +2. Phaser integration (4 hours) +3. Demo playable (3 hours) +4. Record video (2 hours) +5. **Launch Kickstarter!** šŸš€ + +### **NEXT MONTH:** +1. Dark Forest biome (102 assets) +2. Abandoned Town (127 assets) +3. Complete Kai (35 more frames) +4. Add Gronk (82 frames) + +### **6 MONTHS:** +1. 10 biomes complete +2. 2,000 total assets +3. Beta release + +### **12-18 MONTHS:** +1. All 18 biomes +2. 4,200 total assets +3. Full release! šŸŽ® + +--- + +## šŸ’Ŗ **FOUNDATION COMPLETE!** + +**You have:** +- āœ… 741 existing images +- āœ… 440 organized folders +- āœ… 4,201 asset roadmap +- āœ… Automated workflow +- āœ… Clear path to full game + +**You can:** +- šŸš€ Launch Kickstarter (1 week) +- šŸš€ Generate systematically (4,000+ assets) +- šŸš€ Scale from demo → full game +- šŸš€ Track progress with manifests + +--- + +## šŸŽ‰ **TONIGHT'S WINS:** + +1. āœ… **440 folders** - Complete organization +2. āœ… **741 images** - All counted (with animations!) +3. āœ… **4,201 plan** - Every asset mapped +4. āœ… **Production ready** - Can start mass generation +5. āœ… **Foundation solid** - Scalable to 10,000+ files + +--- + +**FROM 99 DEMO ASSETS → 4,200 FULL GAME** + +**THE BLUEPRINT IS COMPLETE! šŸ“‹āœØ** + +--- + +**Good night! Tomorrow we make it playable! šŸŽ®šŸŒ™** + +**Total Project:** 135 hours | 741 images | 440 folders | Ready! āœ… diff --git a/TONIGHT_TILED_QUICKSTART.md b/TONIGHT_TILED_QUICKSTART.md new file mode 100644 index 000000000..e4778a43f --- /dev/null +++ b/TONIGHT_TILED_QUICKSTART.md @@ -0,0 +1,322 @@ +# ā˜• TONIGHT'S TILED SESSION - QUICK START + +**Session Time:** ~2 hours +**Goal:** Build 8Ɨ8 demo map ready for Phaser.js +**Coffee:** Recommended! ā˜• + +--- + +## ⚔ SUPER QUICK CHECKLIST + +### šŸš€ **STEP 1: OPEN TILED** (2 min) + +```bash +# Check if installed +which tiled + +# If not installed: +brew install tiled + +# Launch +tiled & +``` + +--- + +### šŸ—ŗļø **STEP 2: CREATE MAP** (5 min) + +**In Tiled:** +1. `File → New → New Map` +2. **Settings:** + - Orientation: `Orthogonal` + - Tile layer format: `CSV` + - Map size: `8 Ɨ 8` tiles + - Tile size: `64 Ɨ 64` pixels +3. `Save As...` → `/Users/davidkotnik/repos/novafarma/maps/demo_micro_farm.tmx` + +**āœ… You have:** Empty 512Ɨ512px map + +--- + +### šŸŽØ **STEP 3: ADD TERRAIN TILESET** (10 min) + +1. `Map → New Tileset...` +2. Name: `terrain_demo` +3. Type: `Collection of Images` +4. Click `+` to add tiles: + - Browse to: `/Users/davidkotnik/repos/novafarma/assets/images/demo/terrain/` + - Select: + - `grass_tile_styleA.png` + - `dirt_tile_styleA.png` + - `tilled_dry_styleA.png` + - `tilled_watered_styleA.png` +5. Save tileset: `/Users/davidkotnik/repos/novafarma/maps/tilesets/terrain_demo.tsx` + +**āœ… You have:** Terrain tileset with 4 tiles + +--- + +### 🌾 **STEP 4: ADD CROPS TILESET** (10 min) + +1. `Map → New Tileset...` +2. Name: `crops_demo` +3. Add tiles from: `/Users/davidkotnik/repos/novafarma/assets/images/demo/crops/` + - `wheat_stage0_styleA.png` through `wheat_stage4_styleA.png` +4. Save: `/Users/davidkotnik/repos/novafarma/maps/tilesets/crops_demo.tsx` + +**āœ… You have:** 5 wheat growth stages + +--- + +### šŸ•ļø **STEP 5: ADD OBJECTS TILESET** (10 min) + +1. `Map → New Tileset...` +2. Name: `objects_demo` +3. Add from various folders: + - `buildings/tent_styleA.png` + - `environment/campfire_styleA.png` + - `environment/dead_tree_styleA.png` + - `environment/rock_styleA.png` +4. Save: `/Users/davidkotnik/repos/novafarma/maps/tilesets/objects_demo.tsx` + +**āœ… You have:** Buildings & decorations ready + +--- + +### šŸ“š **STEP 6: CREATE LAYERS** (5 min) + +**In Layers panel (bottom-right), create these layers:** + +Right-click → `Add Layer` → choose type: + +1. **"Collision"** (Object Layer) +2. **"Spawns"** (Object Layer) +3. **"Decorations"** (Object Layer) +4. **"Buildings"** (Object Layer) +5. **"Crops"** (Tile Layer) +6. **"Tilled Soil"** (Tile Layer) +7. **"Base Terrain"** (Tile Layer) ← **START HERE!** + +**āœ… You have:** 7 organized layers + +--- + +### 🌱 **STEP 7: PAINT GRASS** (10 min) + +1. **Select layer:** `Base Terrain` (click on it in Layers panel) +2. **Select tile:** Click `grass_tile_styleA` in Tilesets panel +3. **Tool:** Press `G` (Bucket Fill) +4. **Click map:** Fill entire 8Ɨ8 with grass + +**Optional:** Paint a few `dirt_tile_styleA` for variety + +**āœ… You have:** Green grassy world! + +--- + +### 🟫 **STEP 8: PAINT TILLED SOIL** (10 min) + +1. **Select layer:** `Tilled Soil` +2. **Select tile:** `tilled_dry_styleA` +3. **Tool:** Press `B` (Brush) +4. **Paint 2Ɨ2 patch:** + - Row 1, Columns 1-2 + - Row 2, Columns 1-2 + +**Coordinates in pixels:** (64,64) to (192,192) + +**āœ… You have:** Farmable area! + +--- + +### ⛺ **STEP 9: PLACE TENT** (10 min) + +1. **Select layer:** `Buildings` (Object Layer!) +2. **Tool:** Press `T` (Insert Tile) +3. **Select tile:** Click `tent_styleA` in objects tileset +4. **Click on map** at position **Column 6, Row 1** + - Pixel position: (384, 64) +5. **Right-click tent → Object Properties:** + - Name: `tent` + - Type: `building` + - Add custom property: + - Name: `collision` + - Type: `bool` + - Value: `true` + +**āœ… You have:** Player's base tent! + +--- + +### šŸ”„ **STEP 10: PLACE DECORATIONS** (15 min) + +**Select layer:** `Decorations` + +**Place these (with Insert Tile tool, press T):** + +1. **Campfire** at (6,5) - pixel (384, 320) + - Type: `decoration` + +2. **Dead tree** at (0,0) - pixel (0, 0) + - Type: `decoration` + +3. **Rock** at (4,0) - pixel (256, 0) + - Type: `decoration` + +**āœ… You have:** Atmospheric details! + +--- + +### šŸ‘¤ **STEP 11: ADD KAI SPAWN** (10 min) + +1. **Select layer:** `Spawns` +2. **Tool:** Press `R` (Insert Rectangle) +3. **Draw:** 32Ɨ32 box at position **(2, 5)** + - Pixel: (128, 320) width=32, height=32 +4. **Object Properties:** + - Name: `kai_spawn` + - Type: `player` + - Add custom property: + - Name: `facing` + - Type: `string` + - Value: `south` + +**āœ… You have:** Player spawn point! + +--- + +### 🧟 **STEP 12: ADD ZOMBIE SPAWN** (10 min) + +1. **Select layer:** `Spawns` +2. **Tool:** Press `R` (Rectangle) +3. **Draw:** 32Ɨ32 box at **(4, 4)** + - Pixel: (256, 256) +4. **Properties:** + - Name: `zombie_1` + - Type: `npc_zombie` + - Custom: + - Name: `ai` + - Type: `string` + - Value: `idle_dig_loop` + +**āœ… You have:** Zombie NPC spawn! + +--- + +### 🚧 **STEP 13: ADD COLLISION** (15 min) + +1. **Select layer:** `Collision` +2. **Tool:** Press `R` (Rectangle) +3. **Draw collision boxes around:** + - **Tent:** 64Ɨ64 box at tent position (6,1) + - **Tree:** 48Ɨ64 box at tree position (0,0) + - **Rock:** 40Ɨ32 box at rock position (4,0) +4. **For each:** Set Type = `collision` + +**āœ… You have:** Collision system! + +--- + +### šŸ’¾ **STEP 14: SAVE & EXPORT** (10 min) + +1. **Save map:** `Ctrl+S` or `File → Save` +2. **Export JSON:** + - `File → Export As...` + - Format: `JSON map files (*.json)` + - Save to: `/Users/davidkotnik/repos/novafarma/maps/demo_micro_farm.json` + +3. **Verify:** + ```bash + ls -lh maps/demo_micro_farm.* + # Should see both .tmx and .json + ``` + +**āœ… YOU'RE DONE!** šŸŽ‰ + +--- + +## šŸŽÆ **FINAL CHECKLIST** + +- [ ] Maps folder has `demo_micro_farm.tmx` +- [ ] Maps folder has `demo_micro_farm.json` +- [ ] Tilesets folder has 3 .tsx files +- [ ] Map has 7 layers +- [ ] Grass fills entire map +- [ ] 2Ɨ2 tilled soil at (1,1) +- [ ] Tent at (6,1) +- [ ] Decorations placed (campfire, tree, rock) +- [ ] Kai spawn at (2,5) +- [ ] Zombie spawn at (4,4) +- [ ] Collision boxes created + +**IF ALL CHECKED:** Map ready for Phaser.js! šŸš€ + +--- + +## šŸ“ø **WHAT IT SHOULD LOOK LIKE:** + +``` + 0 1 2 3 4 5 6 7 +0 [🌳][🌱][🌱][🌱][🪨][🌱][🌱][🌱] +1 [🌱][🟫][🟫][🌱][🌱][🌱][⛺][🌱] +2 [🌱][🟫][🟫][🌱][🌱][🌱][🌱][🌱] +3 [🌱][🌱][🌱][🌱][🌱][🌱][🌱][🌱] +4 [🌱][🌱][🌱][🌱][🧟][🌱][🌱][🌱] +5 [🌱][🌱][šŸ‘¤][🌱][🌱][🌱][šŸ”„][🌱] +6 [🌱][🌱][🌱][🌱][🌱][🌱][🌱][🌱] +7 [🌱][🌱][🌱][🌱][🌱][🌱][🌱][🌱] +``` + +--- + +## ā±ļø **TIME BREAKDOWN** + +| Task | Time | +|------|------| +| Open Tiled | 2 min | +| Create map | 5 min | +| Add tilesets (3) | 30 min | +| Create layers | 5 min | +| Paint terrain | 10 min | +| Paint tilled soil | 10 min | +| Place buildings | 10 min | +| Place decorations | 15 min | +| Add spawns | 20 min | +| Add collision | 15 min | +| Save & export | 10 min | +| **TOTAL** | **~2 hours** | + +--- + +## šŸ†˜ **TROUBLESHOOTING** + +**Can't find images?** +- Make sure you browse to full path: `/Users/davidkotnik/repos/novafarma/assets/images/demo/...` + +**Tiles not showing in tileset?** +- Check if PNGs have transparency (they should!) +- Try re-adding the tile + +**Can't export JSON?** +- Make sure `maps/` folder exists +- Try `File → Export` instead of `Export As` + +**Map looks wrong?** +- Check layer order (Base Terrain at bottom!) +- Make sure correct layer is selected when painting + +--- + +## šŸš€ **AFTER THIS SESSION:** + +**Tomorrow you can:** +1. Open full implementation guide +2. Start Phaser.js integration (Task 2) +3. Load this map in game! (1 hour) + +**In 3 days:** +- Full playable demo! šŸŽ® + +--- + +**HAVE FUN BUILDING! ā˜•šŸ—ŗļøāœØ** diff --git a/assets/images/demo/buildings/originals/tent_styleA.png b/assets/images/demo/buildings/originals/tent_styleA.png new file mode 100644 index 000000000..551ea7284 Binary files /dev/null and b/assets/images/demo/buildings/originals/tent_styleA.png differ diff --git a/assets/images/demo/buildings/originals/tent_styleB.png b/assets/images/demo/buildings/originals/tent_styleB.png new file mode 100644 index 000000000..b6a8f24ce Binary files /dev/null and b/assets/images/demo/buildings/originals/tent_styleB.png differ diff --git a/assets/images/demo/buildings/tent_styleA_32x32.png b/assets/images/demo/buildings/tent_styleA_32x32.png new file mode 100644 index 000000000..551ea7284 Binary files /dev/null and b/assets/images/demo/buildings/tent_styleA_32x32.png differ diff --git a/assets/images/demo/buildings/tent_styleB_32x32.png b/assets/images/demo/buildings/tent_styleB_32x32.png new file mode 100644 index 000000000..b6a8f24ce Binary files /dev/null and b/assets/images/demo/buildings/tent_styleB_32x32.png differ diff --git a/assets/images/demo/characters/kai_hoe_action_styleA_32x32.png b/assets/images/demo/characters/kai_hoe_action_styleA_32x32.png new file mode 100644 index 000000000..a972731d2 Binary files /dev/null and b/assets/images/demo/characters/kai_hoe_action_styleA_32x32.png differ diff --git a/assets/images/demo/characters/kai_hoe_action_styleB_32x32.png b/assets/images/demo/characters/kai_hoe_action_styleB_32x32.png new file mode 100644 index 000000000..41417a1c6 Binary files /dev/null and b/assets/images/demo/characters/kai_hoe_action_styleB_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_east_1_styleA_32x32.png b/assets/images/demo/characters/kai_idle_east_1_styleA_32x32.png new file mode 100644 index 000000000..4c6045184 Binary files /dev/null and b/assets/images/demo/characters/kai_idle_east_1_styleA_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_east_1_styleB_32x32.png b/assets/images/demo/characters/kai_idle_east_1_styleB_32x32.png new file mode 100644 index 000000000..76de5e97d Binary files /dev/null and b/assets/images/demo/characters/kai_idle_east_1_styleB_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_east_4_styleA_32x32.png b/assets/images/demo/characters/kai_idle_east_4_styleA_32x32.png new file mode 100644 index 000000000..50dc89327 Binary files /dev/null and b/assets/images/demo/characters/kai_idle_east_4_styleA_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_north_1_styleA_32x32.png b/assets/images/demo/characters/kai_idle_north_1_styleA_32x32.png new file mode 100644 index 000000000..43da825a9 Binary files /dev/null and b/assets/images/demo/characters/kai_idle_north_1_styleA_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_north_1_styleB_32x32.png b/assets/images/demo/characters/kai_idle_north_1_styleB_32x32.png new file mode 100644 index 000000000..a8dd30625 Binary files /dev/null and b/assets/images/demo/characters/kai_idle_north_1_styleB_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_north_2_styleA_32x32.png b/assets/images/demo/characters/kai_idle_north_2_styleA_32x32.png new file mode 100644 index 000000000..da3a5c588 Binary files /dev/null and b/assets/images/demo/characters/kai_idle_north_2_styleA_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_north_2_styleB_32x32.png b/assets/images/demo/characters/kai_idle_north_2_styleB_32x32.png new file mode 100644 index 000000000..b6a51baf3 Binary files /dev/null and b/assets/images/demo/characters/kai_idle_north_2_styleB_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_north_3_styleA_32x32.png b/assets/images/demo/characters/kai_idle_north_3_styleA_32x32.png new file mode 100644 index 000000000..457f17a75 Binary files /dev/null and b/assets/images/demo/characters/kai_idle_north_3_styleA_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_north_3_styleB_32x32.png b/assets/images/demo/characters/kai_idle_north_3_styleB_32x32.png new file mode 100644 index 000000000..554e612bb Binary files /dev/null and b/assets/images/demo/characters/kai_idle_north_3_styleB_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_north_4_styleA_32x32.png b/assets/images/demo/characters/kai_idle_north_4_styleA_32x32.png new file mode 100644 index 000000000..e22f40d3c Binary files /dev/null and b/assets/images/demo/characters/kai_idle_north_4_styleA_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_north_4_styleB_32x32.png b/assets/images/demo/characters/kai_idle_north_4_styleB_32x32.png new file mode 100644 index 000000000..af43f3166 Binary files /dev/null and b/assets/images/demo/characters/kai_idle_north_4_styleB_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_south_1_styleA_32x32.png b/assets/images/demo/characters/kai_idle_south_1_styleA_32x32.png new file mode 100644 index 000000000..b250c34a7 Binary files /dev/null and b/assets/images/demo/characters/kai_idle_south_1_styleA_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_south_1_styleB_32x32.png b/assets/images/demo/characters/kai_idle_south_1_styleB_32x32.png new file mode 100644 index 000000000..808675a05 Binary files /dev/null and b/assets/images/demo/characters/kai_idle_south_1_styleB_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_south_2_styleA_32x32.png b/assets/images/demo/characters/kai_idle_south_2_styleA_32x32.png new file mode 100644 index 000000000..6e28c77ad Binary files /dev/null and b/assets/images/demo/characters/kai_idle_south_2_styleA_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_south_2_styleB_32x32.png b/assets/images/demo/characters/kai_idle_south_2_styleB_32x32.png new file mode 100644 index 000000000..a754cddc9 Binary files /dev/null and b/assets/images/demo/characters/kai_idle_south_2_styleB_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_south_3_styleA_32x32.png b/assets/images/demo/characters/kai_idle_south_3_styleA_32x32.png new file mode 100644 index 000000000..9cf1e94dc Binary files /dev/null and b/assets/images/demo/characters/kai_idle_south_3_styleA_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_south_3_styleB_32x32.png b/assets/images/demo/characters/kai_idle_south_3_styleB_32x32.png new file mode 100644 index 000000000..425f89c99 Binary files /dev/null and b/assets/images/demo/characters/kai_idle_south_3_styleB_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_south_4_styleA_32x32.png b/assets/images/demo/characters/kai_idle_south_4_styleA_32x32.png new file mode 100644 index 000000000..4db8c87e2 Binary files /dev/null and b/assets/images/demo/characters/kai_idle_south_4_styleA_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_south_4_styleB_32x32.png b/assets/images/demo/characters/kai_idle_south_4_styleB_32x32.png new file mode 100644 index 000000000..6d2546cc3 Binary files /dev/null and b/assets/images/demo/characters/kai_idle_south_4_styleB_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_west_1_styleB_32x32.png b/assets/images/demo/characters/kai_idle_west_1_styleB_32x32.png new file mode 100644 index 000000000..f5c473239 Binary files /dev/null and b/assets/images/demo/characters/kai_idle_west_1_styleB_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_west_2_styleA_32x32.png b/assets/images/demo/characters/kai_idle_west_2_styleA_32x32.png new file mode 100644 index 000000000..3691af270 Binary files /dev/null and b/assets/images/demo/characters/kai_idle_west_2_styleA_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_west_2_styleB_32x32.png b/assets/images/demo/characters/kai_idle_west_2_styleB_32x32.png new file mode 100644 index 000000000..ca777476b Binary files /dev/null and b/assets/images/demo/characters/kai_idle_west_2_styleB_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_west_3_styleA_32x32.png b/assets/images/demo/characters/kai_idle_west_3_styleA_32x32.png new file mode 100644 index 000000000..9994a5295 Binary files /dev/null and b/assets/images/demo/characters/kai_idle_west_3_styleA_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_west_3_styleB_32x32.png b/assets/images/demo/characters/kai_idle_west_3_styleB_32x32.png new file mode 100644 index 000000000..c3d10df10 Binary files /dev/null and b/assets/images/demo/characters/kai_idle_west_3_styleB_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_west_4_styleA_32x32.png b/assets/images/demo/characters/kai_idle_west_4_styleA_32x32.png new file mode 100644 index 000000000..d491c2e79 Binary files /dev/null and b/assets/images/demo/characters/kai_idle_west_4_styleA_32x32.png differ diff --git a/assets/images/demo/characters/kai_idle_west_4_styleB_32x32.png b/assets/images/demo/characters/kai_idle_west_4_styleB_32x32.png new file mode 100644 index 000000000..ea76381b6 Binary files /dev/null and b/assets/images/demo/characters/kai_idle_west_4_styleB_32x32.png differ diff --git a/assets/images/demo/characters/kai_styleA_idle_32x32.png b/assets/images/demo/characters/kai_styleA_idle_32x32.png new file mode 100644 index 000000000..2ed44471e Binary files /dev/null and b/assets/images/demo/characters/kai_styleA_idle_32x32.png differ diff --git a/assets/images/demo/characters/kai_styleA_walk_32x32.png b/assets/images/demo/characters/kai_styleA_walk_32x32.png new file mode 100644 index 000000000..74c6d25b4 Binary files /dev/null and b/assets/images/demo/characters/kai_styleA_walk_32x32.png differ diff --git a/assets/images/demo/characters/kai_styleB_idle_32x32.png b/assets/images/demo/characters/kai_styleB_idle_32x32.png new file mode 100644 index 000000000..819a15cd5 Binary files /dev/null and b/assets/images/demo/characters/kai_styleB_idle_32x32.png differ diff --git a/assets/images/demo/characters/kai_styleB_walk_32x32.png b/assets/images/demo/characters/kai_styleB_walk_32x32.png new file mode 100644 index 000000000..3acc24665 Binary files /dev/null and b/assets/images/demo/characters/kai_styleB_walk_32x32.png differ diff --git a/assets/images/demo/characters/kai_walk_south_1_styleA_32x32.png b/assets/images/demo/characters/kai_walk_south_1_styleA_32x32.png new file mode 100644 index 000000000..33f42a1d4 Binary files /dev/null and b/assets/images/demo/characters/kai_walk_south_1_styleA_32x32.png differ diff --git a/assets/images/demo/characters/kai_walk_south_1_styleB_32x32.png b/assets/images/demo/characters/kai_walk_south_1_styleB_32x32.png new file mode 100644 index 000000000..879d10455 Binary files /dev/null and b/assets/images/demo/characters/kai_walk_south_1_styleB_32x32.png differ diff --git a/assets/images/demo/characters/kai_walk_south_2_styleA_32x32.png b/assets/images/demo/characters/kai_walk_south_2_styleA_32x32.png new file mode 100644 index 000000000..239357672 Binary files /dev/null and b/assets/images/demo/characters/kai_walk_south_2_styleA_32x32.png differ diff --git a/assets/images/demo/characters/kai_walk_south_2_styleB_32x32.png b/assets/images/demo/characters/kai_walk_south_2_styleB_32x32.png new file mode 100644 index 000000000..620f3ff13 Binary files /dev/null and b/assets/images/demo/characters/kai_walk_south_2_styleB_32x32.png differ diff --git a/assets/images/demo/characters/kai_walk_south_3_styleA_32x32.png b/assets/images/demo/characters/kai_walk_south_3_styleA_32x32.png new file mode 100644 index 000000000..355677804 Binary files /dev/null and b/assets/images/demo/characters/kai_walk_south_3_styleA_32x32.png differ diff --git a/assets/images/demo/characters/kai_walk_south_3_styleB_32x32.png b/assets/images/demo/characters/kai_walk_south_3_styleB_32x32.png new file mode 100644 index 000000000..26df2becb Binary files /dev/null and b/assets/images/demo/characters/kai_walk_south_3_styleB_32x32.png differ diff --git a/assets/images/demo/characters/kai_walk_south_4_styleA_32x32.png b/assets/images/demo/characters/kai_walk_south_4_styleA_32x32.png new file mode 100644 index 000000000..aad2252c6 Binary files /dev/null and b/assets/images/demo/characters/kai_walk_south_4_styleA_32x32.png differ diff --git a/assets/images/demo/characters/kai_walk_south_4_styleB_32x32.png b/assets/images/demo/characters/kai_walk_south_4_styleB_32x32.png new file mode 100644 index 000000000..4fc11e0c5 Binary files /dev/null and b/assets/images/demo/characters/kai_walk_south_4_styleB_32x32.png differ diff --git a/assets/images/demo/characters/kai_watering_styleA_32x32.png b/assets/images/demo/characters/kai_watering_styleA_32x32.png new file mode 100644 index 000000000..dd1a5a56d Binary files /dev/null and b/assets/images/demo/characters/kai_watering_styleA_32x32.png differ diff --git a/assets/images/demo/characters/kai_watering_styleB_32x32.png b/assets/images/demo/characters/kai_watering_styleB_32x32.png new file mode 100644 index 000000000..f5f757cc5 Binary files /dev/null and b/assets/images/demo/characters/kai_watering_styleB_32x32.png differ diff --git a/assets/images/demo/characters/originals/kai_hoe_action_styleA.png b/assets/images/demo/characters/originals/kai_hoe_action_styleA.png new file mode 100644 index 000000000..a972731d2 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_hoe_action_styleA.png differ diff --git a/assets/images/demo/characters/originals/kai_hoe_action_styleB.png b/assets/images/demo/characters/originals/kai_hoe_action_styleB.png new file mode 100644 index 000000000..41417a1c6 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_hoe_action_styleB.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_east_1_styleA.png b/assets/images/demo/characters/originals/kai_idle_east_1_styleA.png new file mode 100644 index 000000000..4c6045184 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_east_1_styleA.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_east_1_styleB.png b/assets/images/demo/characters/originals/kai_idle_east_1_styleB.png new file mode 100644 index 000000000..76de5e97d Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_east_1_styleB.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_east_4_styleA.png b/assets/images/demo/characters/originals/kai_idle_east_4_styleA.png new file mode 100644 index 000000000..50dc89327 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_east_4_styleA.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_north_1_styleA.png b/assets/images/demo/characters/originals/kai_idle_north_1_styleA.png new file mode 100644 index 000000000..43da825a9 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_north_1_styleA.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_north_1_styleB.png b/assets/images/demo/characters/originals/kai_idle_north_1_styleB.png new file mode 100644 index 000000000..a8dd30625 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_north_1_styleB.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_north_2_styleA.png b/assets/images/demo/characters/originals/kai_idle_north_2_styleA.png new file mode 100644 index 000000000..da3a5c588 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_north_2_styleA.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_north_2_styleB.png b/assets/images/demo/characters/originals/kai_idle_north_2_styleB.png new file mode 100644 index 000000000..b6a51baf3 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_north_2_styleB.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_north_3_styleA.png b/assets/images/demo/characters/originals/kai_idle_north_3_styleA.png new file mode 100644 index 000000000..457f17a75 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_north_3_styleA.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_north_3_styleB.png b/assets/images/demo/characters/originals/kai_idle_north_3_styleB.png new file mode 100644 index 000000000..554e612bb Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_north_3_styleB.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_north_4_styleA.png b/assets/images/demo/characters/originals/kai_idle_north_4_styleA.png new file mode 100644 index 000000000..e22f40d3c Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_north_4_styleA.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_north_4_styleB.png b/assets/images/demo/characters/originals/kai_idle_north_4_styleB.png new file mode 100644 index 000000000..af43f3166 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_north_4_styleB.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_south_1_styleA.png b/assets/images/demo/characters/originals/kai_idle_south_1_styleA.png new file mode 100644 index 000000000..b250c34a7 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_south_1_styleA.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_south_1_styleB.png b/assets/images/demo/characters/originals/kai_idle_south_1_styleB.png new file mode 100644 index 000000000..808675a05 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_south_1_styleB.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_south_2_styleA.png b/assets/images/demo/characters/originals/kai_idle_south_2_styleA.png new file mode 100644 index 000000000..6e28c77ad Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_south_2_styleA.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_south_2_styleB.png b/assets/images/demo/characters/originals/kai_idle_south_2_styleB.png new file mode 100644 index 000000000..a754cddc9 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_south_2_styleB.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_south_3_styleA.png b/assets/images/demo/characters/originals/kai_idle_south_3_styleA.png new file mode 100644 index 000000000..9cf1e94dc Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_south_3_styleA.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_south_3_styleB.png b/assets/images/demo/characters/originals/kai_idle_south_3_styleB.png new file mode 100644 index 000000000..425f89c99 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_south_3_styleB.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_south_4_styleA.png b/assets/images/demo/characters/originals/kai_idle_south_4_styleA.png new file mode 100644 index 000000000..4db8c87e2 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_south_4_styleA.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_south_4_styleB.png b/assets/images/demo/characters/originals/kai_idle_south_4_styleB.png new file mode 100644 index 000000000..6d2546cc3 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_south_4_styleB.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_west_1_styleB.png b/assets/images/demo/characters/originals/kai_idle_west_1_styleB.png new file mode 100644 index 000000000..f5c473239 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_west_1_styleB.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_west_2_styleA.png b/assets/images/demo/characters/originals/kai_idle_west_2_styleA.png new file mode 100644 index 000000000..3691af270 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_west_2_styleA.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_west_2_styleB.png b/assets/images/demo/characters/originals/kai_idle_west_2_styleB.png new file mode 100644 index 000000000..ca777476b Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_west_2_styleB.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_west_3_styleA.png b/assets/images/demo/characters/originals/kai_idle_west_3_styleA.png new file mode 100644 index 000000000..9994a5295 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_west_3_styleA.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_west_3_styleB.png b/assets/images/demo/characters/originals/kai_idle_west_3_styleB.png new file mode 100644 index 000000000..c3d10df10 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_west_3_styleB.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_west_4_styleA.png b/assets/images/demo/characters/originals/kai_idle_west_4_styleA.png new file mode 100644 index 000000000..d491c2e79 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_west_4_styleA.png differ diff --git a/assets/images/demo/characters/originals/kai_idle_west_4_styleB.png b/assets/images/demo/characters/originals/kai_idle_west_4_styleB.png new file mode 100644 index 000000000..ea76381b6 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_idle_west_4_styleB.png differ diff --git a/assets/images/demo/characters/originals/kai_styleA_idle.png b/assets/images/demo/characters/originals/kai_styleA_idle.png new file mode 100644 index 000000000..2ed44471e Binary files /dev/null and b/assets/images/demo/characters/originals/kai_styleA_idle.png differ diff --git a/assets/images/demo/characters/originals/kai_styleA_walk.png b/assets/images/demo/characters/originals/kai_styleA_walk.png new file mode 100644 index 000000000..74c6d25b4 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_styleA_walk.png differ diff --git a/assets/images/demo/characters/originals/kai_styleB_idle.png b/assets/images/demo/characters/originals/kai_styleB_idle.png new file mode 100644 index 000000000..819a15cd5 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_styleB_idle.png differ diff --git a/assets/images/demo/characters/originals/kai_styleB_walk.png b/assets/images/demo/characters/originals/kai_styleB_walk.png new file mode 100644 index 000000000..3acc24665 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_styleB_walk.png differ diff --git a/assets/images/demo/characters/originals/kai_walk_south_1_styleA.png b/assets/images/demo/characters/originals/kai_walk_south_1_styleA.png new file mode 100644 index 000000000..33f42a1d4 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_walk_south_1_styleA.png differ diff --git a/assets/images/demo/characters/originals/kai_walk_south_1_styleB.png b/assets/images/demo/characters/originals/kai_walk_south_1_styleB.png new file mode 100644 index 000000000..879d10455 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_walk_south_1_styleB.png differ diff --git a/assets/images/demo/characters/originals/kai_walk_south_2_styleA.png b/assets/images/demo/characters/originals/kai_walk_south_2_styleA.png new file mode 100644 index 000000000..239357672 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_walk_south_2_styleA.png differ diff --git a/assets/images/demo/characters/originals/kai_walk_south_2_styleB.png b/assets/images/demo/characters/originals/kai_walk_south_2_styleB.png new file mode 100644 index 000000000..620f3ff13 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_walk_south_2_styleB.png differ diff --git a/assets/images/demo/characters/originals/kai_walk_south_3_styleA.png b/assets/images/demo/characters/originals/kai_walk_south_3_styleA.png new file mode 100644 index 000000000..355677804 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_walk_south_3_styleA.png differ diff --git a/assets/images/demo/characters/originals/kai_walk_south_3_styleB.png b/assets/images/demo/characters/originals/kai_walk_south_3_styleB.png new file mode 100644 index 000000000..26df2becb Binary files /dev/null and b/assets/images/demo/characters/originals/kai_walk_south_3_styleB.png differ diff --git a/assets/images/demo/characters/originals/kai_walk_south_4_styleA.png b/assets/images/demo/characters/originals/kai_walk_south_4_styleA.png new file mode 100644 index 000000000..aad2252c6 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_walk_south_4_styleA.png differ diff --git a/assets/images/demo/characters/originals/kai_walk_south_4_styleB.png b/assets/images/demo/characters/originals/kai_walk_south_4_styleB.png new file mode 100644 index 000000000..4fc11e0c5 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_walk_south_4_styleB.png differ diff --git a/assets/images/demo/characters/originals/kai_watering_styleA.png b/assets/images/demo/characters/originals/kai_watering_styleA.png new file mode 100644 index 000000000..dd1a5a56d Binary files /dev/null and b/assets/images/demo/characters/originals/kai_watering_styleA.png differ diff --git a/assets/images/demo/characters/originals/kai_watering_styleB.png b/assets/images/demo/characters/originals/kai_watering_styleB.png new file mode 100644 index 000000000..f5f757cc5 Binary files /dev/null and b/assets/images/demo/characters/originals/kai_watering_styleB.png differ diff --git a/assets/images/demo/characters/originals/zombie_dig_1_styleA.png b/assets/images/demo/characters/originals/zombie_dig_1_styleA.png new file mode 100644 index 000000000..e0ad732b3 Binary files /dev/null and b/assets/images/demo/characters/originals/zombie_dig_1_styleA.png differ diff --git a/assets/images/demo/characters/originals/zombie_dig_1_styleB.png b/assets/images/demo/characters/originals/zombie_dig_1_styleB.png new file mode 100644 index 000000000..344f82fe6 Binary files /dev/null and b/assets/images/demo/characters/originals/zombie_dig_1_styleB.png differ diff --git a/assets/images/demo/characters/originals/zombie_idle_1_styleA.png b/assets/images/demo/characters/originals/zombie_idle_1_styleA.png new file mode 100644 index 000000000..ab619d430 Binary files /dev/null and b/assets/images/demo/characters/originals/zombie_idle_1_styleA.png differ diff --git a/assets/images/demo/characters/originals/zombie_idle_1_styleB.png b/assets/images/demo/characters/originals/zombie_idle_1_styleB.png new file mode 100644 index 000000000..2dfcbc46d Binary files /dev/null and b/assets/images/demo/characters/originals/zombie_idle_1_styleB.png differ diff --git a/assets/images/demo/characters/zombie_dig_1_styleA_32x32.png b/assets/images/demo/characters/zombie_dig_1_styleA_32x32.png new file mode 100644 index 000000000..e0ad732b3 Binary files /dev/null and b/assets/images/demo/characters/zombie_dig_1_styleA_32x32.png differ diff --git a/assets/images/demo/characters/zombie_dig_1_styleB_32x32.png b/assets/images/demo/characters/zombie_dig_1_styleB_32x32.png new file mode 100644 index 000000000..344f82fe6 Binary files /dev/null and b/assets/images/demo/characters/zombie_dig_1_styleB_32x32.png differ diff --git a/assets/images/demo/characters/zombie_idle_1_styleA_32x32.png b/assets/images/demo/characters/zombie_idle_1_styleA_32x32.png new file mode 100644 index 000000000..ab619d430 Binary files /dev/null and b/assets/images/demo/characters/zombie_idle_1_styleA_32x32.png differ diff --git a/assets/images/demo/characters/zombie_idle_1_styleB_32x32.png b/assets/images/demo/characters/zombie_idle_1_styleB_32x32.png new file mode 100644 index 000000000..2dfcbc46d Binary files /dev/null and b/assets/images/demo/characters/zombie_idle_1_styleB_32x32.png differ diff --git a/assets/images/demo/crops/originals/wheat_stage0_styleA.png b/assets/images/demo/crops/originals/wheat_stage0_styleA.png new file mode 100644 index 000000000..83f7c40b6 Binary files /dev/null and b/assets/images/demo/crops/originals/wheat_stage0_styleA.png differ diff --git a/assets/images/demo/crops/originals/wheat_stage0_styleB.png b/assets/images/demo/crops/originals/wheat_stage0_styleB.png new file mode 100644 index 000000000..6389da4e8 Binary files /dev/null and b/assets/images/demo/crops/originals/wheat_stage0_styleB.png differ diff --git a/assets/images/demo/crops/originals/wheat_stage1_styleA.png b/assets/images/demo/crops/originals/wheat_stage1_styleA.png new file mode 100644 index 000000000..95ebdc198 Binary files /dev/null and b/assets/images/demo/crops/originals/wheat_stage1_styleA.png differ diff --git a/assets/images/demo/crops/originals/wheat_stage1_styleB.png b/assets/images/demo/crops/originals/wheat_stage1_styleB.png new file mode 100644 index 000000000..df3917dc2 Binary files /dev/null and b/assets/images/demo/crops/originals/wheat_stage1_styleB.png differ diff --git a/assets/images/demo/crops/originals/wheat_stage2_styleA.png b/assets/images/demo/crops/originals/wheat_stage2_styleA.png new file mode 100644 index 000000000..036aa130d Binary files /dev/null and b/assets/images/demo/crops/originals/wheat_stage2_styleA.png differ diff --git a/assets/images/demo/crops/originals/wheat_stage2_styleB.png b/assets/images/demo/crops/originals/wheat_stage2_styleB.png new file mode 100644 index 000000000..49d0082c2 Binary files /dev/null and b/assets/images/demo/crops/originals/wheat_stage2_styleB.png differ diff --git a/assets/images/demo/crops/originals/wheat_stage3_styleA.png b/assets/images/demo/crops/originals/wheat_stage3_styleA.png new file mode 100644 index 000000000..d8c1f4024 Binary files /dev/null and b/assets/images/demo/crops/originals/wheat_stage3_styleA.png differ diff --git a/assets/images/demo/crops/originals/wheat_stage3_styleB.png b/assets/images/demo/crops/originals/wheat_stage3_styleB.png new file mode 100644 index 000000000..aa955c962 Binary files /dev/null and b/assets/images/demo/crops/originals/wheat_stage3_styleB.png differ diff --git a/assets/images/demo/crops/originals/wheat_stage4_styleA.png b/assets/images/demo/crops/originals/wheat_stage4_styleA.png new file mode 100644 index 000000000..a4989f154 Binary files /dev/null and b/assets/images/demo/crops/originals/wheat_stage4_styleA.png differ diff --git a/assets/images/demo/crops/originals/wheat_stage4_styleB.png b/assets/images/demo/crops/originals/wheat_stage4_styleB.png new file mode 100644 index 000000000..64abd22ce Binary files /dev/null and b/assets/images/demo/crops/originals/wheat_stage4_styleB.png differ diff --git a/assets/images/demo/crops/originals/wheat_styleA.png b/assets/images/demo/crops/originals/wheat_styleA.png new file mode 100644 index 000000000..4094b5b76 Binary files /dev/null and b/assets/images/demo/crops/originals/wheat_styleA.png differ diff --git a/assets/images/demo/crops/wheat_stage0_styleA_32x32.png b/assets/images/demo/crops/wheat_stage0_styleA_32x32.png new file mode 100644 index 000000000..83f7c40b6 Binary files /dev/null and b/assets/images/demo/crops/wheat_stage0_styleA_32x32.png differ diff --git a/assets/images/demo/crops/wheat_stage0_styleB_32x32.png b/assets/images/demo/crops/wheat_stage0_styleB_32x32.png new file mode 100644 index 000000000..6389da4e8 Binary files /dev/null and b/assets/images/demo/crops/wheat_stage0_styleB_32x32.png differ diff --git a/assets/images/demo/crops/wheat_stage1_styleA_32x32.png b/assets/images/demo/crops/wheat_stage1_styleA_32x32.png new file mode 100644 index 000000000..95ebdc198 Binary files /dev/null and b/assets/images/demo/crops/wheat_stage1_styleA_32x32.png differ diff --git a/assets/images/demo/crops/wheat_stage1_styleB_32x32.png b/assets/images/demo/crops/wheat_stage1_styleB_32x32.png new file mode 100644 index 000000000..df3917dc2 Binary files /dev/null and b/assets/images/demo/crops/wheat_stage1_styleB_32x32.png differ diff --git a/assets/images/demo/crops/wheat_stage2_styleA_32x32.png b/assets/images/demo/crops/wheat_stage2_styleA_32x32.png new file mode 100644 index 000000000..036aa130d Binary files /dev/null and b/assets/images/demo/crops/wheat_stage2_styleA_32x32.png differ diff --git a/assets/images/demo/crops/wheat_stage2_styleB_32x32.png b/assets/images/demo/crops/wheat_stage2_styleB_32x32.png new file mode 100644 index 000000000..49d0082c2 Binary files /dev/null and b/assets/images/demo/crops/wheat_stage2_styleB_32x32.png differ diff --git a/assets/images/demo/crops/wheat_stage3_styleA_32x32.png b/assets/images/demo/crops/wheat_stage3_styleA_32x32.png new file mode 100644 index 000000000..d8c1f4024 Binary files /dev/null and b/assets/images/demo/crops/wheat_stage3_styleA_32x32.png differ diff --git a/assets/images/demo/crops/wheat_stage3_styleB_32x32.png b/assets/images/demo/crops/wheat_stage3_styleB_32x32.png new file mode 100644 index 000000000..aa955c962 Binary files /dev/null and b/assets/images/demo/crops/wheat_stage3_styleB_32x32.png differ diff --git a/assets/images/demo/crops/wheat_stage4_styleA_32x32.png b/assets/images/demo/crops/wheat_stage4_styleA_32x32.png new file mode 100644 index 000000000..a4989f154 Binary files /dev/null and b/assets/images/demo/crops/wheat_stage4_styleA_32x32.png differ diff --git a/assets/images/demo/crops/wheat_stage4_styleB_32x32.png b/assets/images/demo/crops/wheat_stage4_styleB_32x32.png new file mode 100644 index 000000000..64abd22ce Binary files /dev/null and b/assets/images/demo/crops/wheat_stage4_styleB_32x32.png differ diff --git a/assets/images/demo/crops/wheat_styleA_32x32.png b/assets/images/demo/crops/wheat_styleA_32x32.png new file mode 100644 index 000000000..4094b5b76 Binary files /dev/null and b/assets/images/demo/crops/wheat_styleA_32x32.png differ diff --git a/assets/images/demo/effects/originals/water_anim_1_styleA.png b/assets/images/demo/effects/originals/water_anim_1_styleA.png new file mode 100644 index 000000000..11a9af85a Binary files /dev/null and b/assets/images/demo/effects/originals/water_anim_1_styleA.png differ diff --git a/assets/images/demo/effects/originals/water_anim_1_styleB.png b/assets/images/demo/effects/originals/water_anim_1_styleB.png new file mode 100644 index 000000000..1187f096e Binary files /dev/null and b/assets/images/demo/effects/originals/water_anim_1_styleB.png differ diff --git a/assets/images/demo/effects/originals/water_anim_2_styleA.png b/assets/images/demo/effects/originals/water_anim_2_styleA.png new file mode 100644 index 000000000..25d2063f6 Binary files /dev/null and b/assets/images/demo/effects/originals/water_anim_2_styleA.png differ diff --git a/assets/images/demo/effects/originals/water_anim_2_styleB.png b/assets/images/demo/effects/originals/water_anim_2_styleB.png new file mode 100644 index 000000000..a32e39b1e Binary files /dev/null and b/assets/images/demo/effects/originals/water_anim_2_styleB.png differ diff --git a/assets/images/demo/effects/water_anim_1_styleA_32x32.png b/assets/images/demo/effects/water_anim_1_styleA_32x32.png new file mode 100644 index 000000000..ffa775758 Binary files /dev/null and b/assets/images/demo/effects/water_anim_1_styleA_32x32.png differ diff --git a/assets/images/demo/effects/water_anim_1_styleB_32x32.png b/assets/images/demo/effects/water_anim_1_styleB_32x32.png new file mode 100644 index 000000000..b7f36444c Binary files /dev/null and b/assets/images/demo/effects/water_anim_1_styleB_32x32.png differ diff --git a/assets/images/demo/effects/water_anim_2_styleA_32x32.png b/assets/images/demo/effects/water_anim_2_styleA_32x32.png new file mode 100644 index 000000000..50fc650d7 Binary files /dev/null and b/assets/images/demo/effects/water_anim_2_styleA_32x32.png differ diff --git a/assets/images/demo/effects/water_anim_2_styleB_32x32.png b/assets/images/demo/effects/water_anim_2_styleB_32x32.png new file mode 100644 index 000000000..3f7cbe9ab Binary files /dev/null and b/assets/images/demo/effects/water_anim_2_styleB_32x32.png differ diff --git a/assets/images/demo/enemies/originals/zombie_styleA_idle.png b/assets/images/demo/enemies/originals/zombie_styleA_idle.png new file mode 100644 index 000000000..7fafb1813 Binary files /dev/null and b/assets/images/demo/enemies/originals/zombie_styleA_idle.png differ diff --git a/assets/images/demo/enemies/originals/zombie_styleB_idle.png b/assets/images/demo/enemies/originals/zombie_styleB_idle.png new file mode 100644 index 000000000..c7dc3ca4c Binary files /dev/null and b/assets/images/demo/enemies/originals/zombie_styleB_idle.png differ diff --git a/assets/images/demo/enemies/zombie_styleA_idle_32x32.png b/assets/images/demo/enemies/zombie_styleA_idle_32x32.png new file mode 100644 index 000000000..7fafb1813 Binary files /dev/null and b/assets/images/demo/enemies/zombie_styleA_idle_32x32.png differ diff --git a/assets/images/demo/enemies/zombie_styleB_idle_32x32.png b/assets/images/demo/enemies/zombie_styleB_idle_32x32.png new file mode 100644 index 000000000..c7dc3ca4c Binary files /dev/null and b/assets/images/demo/enemies/zombie_styleB_idle_32x32.png differ diff --git a/assets/images/demo/environment/campfire_styleA_32x32.png b/assets/images/demo/environment/campfire_styleA_32x32.png new file mode 100644 index 000000000..a92287226 Binary files /dev/null and b/assets/images/demo/environment/campfire_styleA_32x32.png differ diff --git a/assets/images/demo/environment/campfire_styleB_32x32.png b/assets/images/demo/environment/campfire_styleB_32x32.png new file mode 100644 index 000000000..9dc5ead95 Binary files /dev/null and b/assets/images/demo/environment/campfire_styleB_32x32.png differ diff --git a/assets/images/demo/environment/dead_tree_styleA_32x64.png b/assets/images/demo/environment/dead_tree_styleA_32x64.png new file mode 100644 index 000000000..48e53cbda Binary files /dev/null and b/assets/images/demo/environment/dead_tree_styleA_32x64.png differ diff --git a/assets/images/demo/environment/dead_tree_styleB_32x64.png b/assets/images/demo/environment/dead_tree_styleB_32x64.png new file mode 100644 index 000000000..9d5371a27 Binary files /dev/null and b/assets/images/demo/environment/dead_tree_styleB_32x64.png differ diff --git a/assets/images/demo/environment/originals/campfire_styleA.png b/assets/images/demo/environment/originals/campfire_styleA.png new file mode 100644 index 000000000..a92287226 Binary files /dev/null and b/assets/images/demo/environment/originals/campfire_styleA.png differ diff --git a/assets/images/demo/environment/originals/campfire_styleB.png b/assets/images/demo/environment/originals/campfire_styleB.png new file mode 100644 index 000000000..9dc5ead95 Binary files /dev/null and b/assets/images/demo/environment/originals/campfire_styleB.png differ diff --git a/assets/images/demo/environment/originals/dead_tree_styleA.png b/assets/images/demo/environment/originals/dead_tree_styleA.png new file mode 100644 index 000000000..f740cffb1 Binary files /dev/null and b/assets/images/demo/environment/originals/dead_tree_styleA.png differ diff --git a/assets/images/demo/environment/originals/dead_tree_styleB.png b/assets/images/demo/environment/originals/dead_tree_styleB.png new file mode 100644 index 000000000..867e10591 Binary files /dev/null and b/assets/images/demo/environment/originals/dead_tree_styleB.png differ diff --git a/assets/images/demo/environment/originals/rock_styleA.png b/assets/images/demo/environment/originals/rock_styleA.png new file mode 100644 index 000000000..ca01560af Binary files /dev/null and b/assets/images/demo/environment/originals/rock_styleA.png differ diff --git a/assets/images/demo/environment/originals/rock_styleB.png b/assets/images/demo/environment/originals/rock_styleB.png new file mode 100644 index 000000000..ef01583f5 Binary files /dev/null and b/assets/images/demo/environment/originals/rock_styleB.png differ diff --git a/assets/images/demo/environment/rock_styleA_32x32.png b/assets/images/demo/environment/rock_styleA_32x32.png new file mode 100644 index 000000000..6d24901be Binary files /dev/null and b/assets/images/demo/environment/rock_styleA_32x32.png differ diff --git a/assets/images/demo/environment/rock_styleB_32x32.png b/assets/images/demo/environment/rock_styleB_32x32.png new file mode 100644 index 000000000..766700c7b Binary files /dev/null and b/assets/images/demo/environment/rock_styleB_32x32.png differ diff --git a/assets/images/demo/items/originals/watering_can_styleA.png b/assets/images/demo/items/originals/watering_can_styleA.png new file mode 100644 index 000000000..a19b19ded Binary files /dev/null and b/assets/images/demo/items/originals/watering_can_styleA.png differ diff --git a/assets/images/demo/items/originals/watering_can_styleB.png b/assets/images/demo/items/originals/watering_can_styleB.png new file mode 100644 index 000000000..b43172e8f Binary files /dev/null and b/assets/images/demo/items/originals/watering_can_styleB.png differ diff --git a/assets/images/demo/items/originals/wheat_bundle_styleA.png b/assets/images/demo/items/originals/wheat_bundle_styleA.png new file mode 100644 index 000000000..6977a1324 Binary files /dev/null and b/assets/images/demo/items/originals/wheat_bundle_styleA.png differ diff --git a/assets/images/demo/items/originals/wheat_bundle_styleB.png b/assets/images/demo/items/originals/wheat_bundle_styleB.png new file mode 100644 index 000000000..0da948a63 Binary files /dev/null and b/assets/images/demo/items/originals/wheat_bundle_styleB.png differ diff --git a/assets/images/demo/items/originals/wheat_seeds_styleA.png b/assets/images/demo/items/originals/wheat_seeds_styleA.png new file mode 100644 index 000000000..86aaac94d Binary files /dev/null and b/assets/images/demo/items/originals/wheat_seeds_styleA.png differ diff --git a/assets/images/demo/items/originals/wheat_seeds_styleB.png b/assets/images/demo/items/originals/wheat_seeds_styleB.png new file mode 100644 index 000000000..1313d0e1d Binary files /dev/null and b/assets/images/demo/items/originals/wheat_seeds_styleB.png differ diff --git a/assets/images/demo/items/originals/wooden_hoe_styleA.png b/assets/images/demo/items/originals/wooden_hoe_styleA.png new file mode 100644 index 000000000..fd1582eb2 Binary files /dev/null and b/assets/images/demo/items/originals/wooden_hoe_styleA.png differ diff --git a/assets/images/demo/items/originals/wooden_hoe_styleB.png b/assets/images/demo/items/originals/wooden_hoe_styleB.png new file mode 100644 index 000000000..98151b42d Binary files /dev/null and b/assets/images/demo/items/originals/wooden_hoe_styleB.png differ diff --git a/assets/images/demo/items/watering_can_styleA_16x16.png b/assets/images/demo/items/watering_can_styleA_16x16.png new file mode 100644 index 000000000..a19b19ded Binary files /dev/null and b/assets/images/demo/items/watering_can_styleA_16x16.png differ diff --git a/assets/images/demo/items/watering_can_styleB_16x16.png b/assets/images/demo/items/watering_can_styleB_16x16.png new file mode 100644 index 000000000..b43172e8f Binary files /dev/null and b/assets/images/demo/items/watering_can_styleB_16x16.png differ diff --git a/assets/images/demo/items/wheat_bundle_styleA_16x16.png b/assets/images/demo/items/wheat_bundle_styleA_16x16.png new file mode 100644 index 000000000..6977a1324 Binary files /dev/null and b/assets/images/demo/items/wheat_bundle_styleA_16x16.png differ diff --git a/assets/images/demo/items/wheat_bundle_styleB_16x16.png b/assets/images/demo/items/wheat_bundle_styleB_16x16.png new file mode 100644 index 000000000..0da948a63 Binary files /dev/null and b/assets/images/demo/items/wheat_bundle_styleB_16x16.png differ diff --git a/assets/images/demo/items/wheat_seeds_styleA_16x16.png b/assets/images/demo/items/wheat_seeds_styleA_16x16.png new file mode 100644 index 000000000..86aaac94d Binary files /dev/null and b/assets/images/demo/items/wheat_seeds_styleA_16x16.png differ diff --git a/assets/images/demo/items/wheat_seeds_styleB_16x16.png b/assets/images/demo/items/wheat_seeds_styleB_16x16.png new file mode 100644 index 000000000..1313d0e1d Binary files /dev/null and b/assets/images/demo/items/wheat_seeds_styleB_16x16.png differ diff --git a/assets/images/demo/items/wooden_hoe_styleA_16x16.png b/assets/images/demo/items/wooden_hoe_styleA_16x16.png new file mode 100644 index 000000000..fd1582eb2 Binary files /dev/null and b/assets/images/demo/items/wooden_hoe_styleA_16x16.png differ diff --git a/assets/images/demo/items/wooden_hoe_styleB_16x16.png b/assets/images/demo/items/wooden_hoe_styleB_16x16.png new file mode 100644 index 000000000..98151b42d Binary files /dev/null and b/assets/images/demo/items/wooden_hoe_styleB_16x16.png differ diff --git a/assets/images/demo/terrain/dirt_tile_styleA_32x32.png b/assets/images/demo/terrain/dirt_tile_styleA_32x32.png new file mode 100644 index 000000000..4d4e0bc4e Binary files /dev/null and b/assets/images/demo/terrain/dirt_tile_styleA_32x32.png differ diff --git a/assets/images/demo/terrain/dirt_tile_styleB_32x32.png b/assets/images/demo/terrain/dirt_tile_styleB_32x32.png new file mode 100644 index 000000000..6bd7da651 Binary files /dev/null and b/assets/images/demo/terrain/dirt_tile_styleB_32x32.png differ diff --git a/assets/images/demo/terrain/grass_tile_styleA_32x32.png b/assets/images/demo/terrain/grass_tile_styleA_32x32.png new file mode 100644 index 000000000..6af50bb3b Binary files /dev/null and b/assets/images/demo/terrain/grass_tile_styleA_32x32.png differ diff --git a/assets/images/demo/terrain/grass_tile_styleB_32x32.png b/assets/images/demo/terrain/grass_tile_styleB_32x32.png new file mode 100644 index 000000000..9c64b3b35 Binary files /dev/null and b/assets/images/demo/terrain/grass_tile_styleB_32x32.png differ diff --git a/assets/images/demo/terrain/originals/dirt_tile_styleA.png b/assets/images/demo/terrain/originals/dirt_tile_styleA.png new file mode 100644 index 000000000..4d4e0bc4e Binary files /dev/null and b/assets/images/demo/terrain/originals/dirt_tile_styleA.png differ diff --git a/assets/images/demo/terrain/originals/dirt_tile_styleB.png b/assets/images/demo/terrain/originals/dirt_tile_styleB.png new file mode 100644 index 000000000..6bd7da651 Binary files /dev/null and b/assets/images/demo/terrain/originals/dirt_tile_styleB.png differ diff --git a/assets/images/demo/terrain/originals/grass_tile_styleA.png b/assets/images/demo/terrain/originals/grass_tile_styleA.png new file mode 100644 index 000000000..6af50bb3b Binary files /dev/null and b/assets/images/demo/terrain/originals/grass_tile_styleA.png differ diff --git a/assets/images/demo/terrain/originals/grass_tile_styleB.png b/assets/images/demo/terrain/originals/grass_tile_styleB.png new file mode 100644 index 000000000..9c64b3b35 Binary files /dev/null and b/assets/images/demo/terrain/originals/grass_tile_styleB.png differ diff --git a/assets/images/demo/terrain/originals/tilled_dry_styleA.png b/assets/images/demo/terrain/originals/tilled_dry_styleA.png new file mode 100644 index 000000000..032d82397 Binary files /dev/null and b/assets/images/demo/terrain/originals/tilled_dry_styleA.png differ diff --git a/assets/images/demo/terrain/originals/tilled_dry_styleB.png b/assets/images/demo/terrain/originals/tilled_dry_styleB.png new file mode 100644 index 000000000..408bcf2a5 Binary files /dev/null and b/assets/images/demo/terrain/originals/tilled_dry_styleB.png differ diff --git a/assets/images/demo/terrain/originals/tilled_watered_styleA.png b/assets/images/demo/terrain/originals/tilled_watered_styleA.png new file mode 100644 index 000000000..3efe238f9 Binary files /dev/null and b/assets/images/demo/terrain/originals/tilled_watered_styleA.png differ diff --git a/assets/images/demo/terrain/originals/tilled_watered_styleB.png b/assets/images/demo/terrain/originals/tilled_watered_styleB.png new file mode 100644 index 000000000..4a3390d9c Binary files /dev/null and b/assets/images/demo/terrain/originals/tilled_watered_styleB.png differ diff --git a/assets/images/demo/terrain/tilled_dry_styleA_32x32.png b/assets/images/demo/terrain/tilled_dry_styleA_32x32.png new file mode 100644 index 000000000..032d82397 Binary files /dev/null and b/assets/images/demo/terrain/tilled_dry_styleA_32x32.png differ diff --git a/assets/images/demo/terrain/tilled_dry_styleB_32x32.png b/assets/images/demo/terrain/tilled_dry_styleB_32x32.png new file mode 100644 index 000000000..408bcf2a5 Binary files /dev/null and b/assets/images/demo/terrain/tilled_dry_styleB_32x32.png differ diff --git a/assets/images/demo/terrain/tilled_watered_styleA_32x32.png b/assets/images/demo/terrain/tilled_watered_styleA_32x32.png new file mode 100644 index 000000000..3efe238f9 Binary files /dev/null and b/assets/images/demo/terrain/tilled_watered_styleA_32x32.png differ diff --git a/assets/images/demo/terrain/tilled_watered_styleB_32x32.png b/assets/images/demo/terrain/tilled_watered_styleB_32x32.png new file mode 100644 index 000000000..4a3390d9c Binary files /dev/null and b/assets/images/demo/terrain/tilled_watered_styleB_32x32.png differ diff --git a/assets/images/demo/ui/originals/dialogue_box_styleA.png b/assets/images/demo/ui/originals/dialogue_box_styleA.png new file mode 100644 index 000000000..0e660a869 Binary files /dev/null and b/assets/images/demo/ui/originals/dialogue_box_styleA.png differ diff --git a/assets/images/demo/ui/originals/dialogue_box_styleB.png b/assets/images/demo/ui/originals/dialogue_box_styleB.png new file mode 100644 index 000000000..81f46f45e Binary files /dev/null and b/assets/images/demo/ui/originals/dialogue_box_styleB.png differ diff --git a/assets/images/demo/ui/originals/health_bar_full_styleA.png b/assets/images/demo/ui/originals/health_bar_full_styleA.png new file mode 100644 index 000000000..caadf3030 Binary files /dev/null and b/assets/images/demo/ui/originals/health_bar_full_styleA.png differ diff --git a/assets/images/demo/ui/originals/health_bar_full_styleB.png b/assets/images/demo/ui/originals/health_bar_full_styleB.png new file mode 100644 index 000000000..548c5e33a Binary files /dev/null and b/assets/images/demo/ui/originals/health_bar_full_styleB.png differ diff --git a/assets/images/demo/ui/originals/health_bar_half_styleA.png b/assets/images/demo/ui/originals/health_bar_half_styleA.png new file mode 100644 index 000000000..565f36f56 Binary files /dev/null and b/assets/images/demo/ui/originals/health_bar_half_styleA.png differ diff --git a/assets/images/demo/ui/originals/health_bar_half_styleB.png b/assets/images/demo/ui/originals/health_bar_half_styleB.png new file mode 100644 index 000000000..714066dd6 Binary files /dev/null and b/assets/images/demo/ui/originals/health_bar_half_styleB.png differ diff --git a/assets/images/demo/ui/originals/inventory_slot_empty_styleA.png b/assets/images/demo/ui/originals/inventory_slot_empty_styleA.png new file mode 100644 index 000000000..4bf759bae Binary files /dev/null and b/assets/images/demo/ui/originals/inventory_slot_empty_styleA.png differ diff --git a/assets/images/demo/ui/originals/inventory_slot_empty_styleB.png b/assets/images/demo/ui/originals/inventory_slot_empty_styleB.png new file mode 100644 index 000000000..7a50d7cf1 Binary files /dev/null and b/assets/images/demo/ui/originals/inventory_slot_empty_styleB.png differ diff --git a/assets/images/demo/ui/originals/inventory_slot_selected_styleA.png b/assets/images/demo/ui/originals/inventory_slot_selected_styleA.png new file mode 100644 index 000000000..602d50f78 Binary files /dev/null and b/assets/images/demo/ui/originals/inventory_slot_selected_styleA.png differ diff --git a/assets/images/demo/ui/originals/inventory_slot_selected_styleB.png b/assets/images/demo/ui/originals/inventory_slot_selected_styleB.png new file mode 100644 index 000000000..93a079aef Binary files /dev/null and b/assets/images/demo/ui/originals/inventory_slot_selected_styleB.png differ diff --git a/assets/images/demo/ui/originals/kai_portrait_styleA.png b/assets/images/demo/ui/originals/kai_portrait_styleA.png new file mode 100644 index 000000000..a7a5edef8 Binary files /dev/null and b/assets/images/demo/ui/originals/kai_portrait_styleA.png differ diff --git a/assets/images/demo/ui/originals/kai_portrait_styleB.png b/assets/images/demo/ui/originals/kai_portrait_styleB.png new file mode 100644 index 000000000..f0d17bc67 Binary files /dev/null and b/assets/images/demo/ui/originals/kai_portrait_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/buildings/originals/tent_styleA.png b/assets/images/demo_originals_with_white_bg/buildings/originals/tent_styleA.png new file mode 100644 index 000000000..3768fa5f3 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/buildings/originals/tent_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/buildings/originals/tent_styleB.png b/assets/images/demo_originals_with_white_bg/buildings/originals/tent_styleB.png new file mode 100644 index 000000000..a4eedc223 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/buildings/originals/tent_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/buildings/tent_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/buildings/tent_styleA_32x32.png new file mode 100644 index 000000000..3768fa5f3 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/buildings/tent_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/buildings/tent_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/buildings/tent_styleB_32x32.png new file mode 100644 index 000000000..a4eedc223 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/buildings/tent_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_hoe_action_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_hoe_action_styleA_32x32.png new file mode 100644 index 000000000..f56de9cdb Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_hoe_action_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_hoe_action_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_hoe_action_styleB_32x32.png new file mode 100644 index 000000000..c00ffbbd3 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_hoe_action_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_east_1_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_east_1_styleA_32x32.png new file mode 100644 index 000000000..17f6ed3c1 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_east_1_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_east_1_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_east_1_styleB_32x32.png new file mode 100644 index 000000000..3e4f14fd2 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_east_1_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_east_4_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_east_4_styleA_32x32.png new file mode 100644 index 000000000..22c135026 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_east_4_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_1_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_1_styleA_32x32.png new file mode 100644 index 000000000..0215222a8 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_1_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_1_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_1_styleB_32x32.png new file mode 100644 index 000000000..0dd0e1cfb Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_1_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_2_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_2_styleA_32x32.png new file mode 100644 index 000000000..dc12ec5a2 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_2_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_2_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_2_styleB_32x32.png new file mode 100644 index 000000000..58d23bcf8 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_2_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_3_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_3_styleA_32x32.png new file mode 100644 index 000000000..fb84c0e0b Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_3_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_3_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_3_styleB_32x32.png new file mode 100644 index 000000000..0b0b36e71 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_3_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_4_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_4_styleA_32x32.png new file mode 100644 index 000000000..764ef71ad Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_4_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_4_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_4_styleB_32x32.png new file mode 100644 index 000000000..4e369aae6 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_north_4_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_1_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_1_styleA_32x32.png new file mode 100644 index 000000000..7f9260b99 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_1_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_1_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_1_styleB_32x32.png new file mode 100644 index 000000000..596fccf4b Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_1_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_2_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_2_styleA_32x32.png new file mode 100644 index 000000000..1be30ba40 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_2_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_2_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_2_styleB_32x32.png new file mode 100644 index 000000000..91f03cf34 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_2_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_3_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_3_styleA_32x32.png new file mode 100644 index 000000000..30c647d80 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_3_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_3_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_3_styleB_32x32.png new file mode 100644 index 000000000..6dd9dc2f7 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_3_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_4_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_4_styleA_32x32.png new file mode 100644 index 000000000..6b4ecffa1 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_4_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_4_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_4_styleB_32x32.png new file mode 100644 index 000000000..e305f80e9 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_south_4_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_west_1_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_west_1_styleB_32x32.png new file mode 100644 index 000000000..8bb72e8e7 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_west_1_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_west_2_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_west_2_styleA_32x32.png new file mode 100644 index 000000000..688b802ba Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_west_2_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_west_2_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_west_2_styleB_32x32.png new file mode 100644 index 000000000..870debbb5 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_west_2_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_west_3_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_west_3_styleA_32x32.png new file mode 100644 index 000000000..e4edc6071 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_west_3_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_west_3_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_west_3_styleB_32x32.png new file mode 100644 index 000000000..e0dd37790 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_west_3_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_west_4_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_west_4_styleA_32x32.png new file mode 100644 index 000000000..64b428b7a Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_west_4_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_idle_west_4_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_idle_west_4_styleB_32x32.png new file mode 100644 index 000000000..1d5db9ff8 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_idle_west_4_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_styleA_idle_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_styleA_idle_32x32.png new file mode 100644 index 000000000..8bbdba8d8 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_styleA_idle_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_styleA_walk_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_styleA_walk_32x32.png new file mode 100644 index 000000000..b740d6c87 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_styleA_walk_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_styleB_idle_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_styleB_idle_32x32.png new file mode 100644 index 000000000..b1fc5c351 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_styleB_idle_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_styleB_walk_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_styleB_walk_32x32.png new file mode 100644 index 000000000..252ca9000 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_styleB_walk_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_1_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_1_styleA_32x32.png new file mode 100644 index 000000000..d1422d285 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_1_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_1_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_1_styleB_32x32.png new file mode 100644 index 000000000..8cb91bf2f Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_1_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_2_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_2_styleA_32x32.png new file mode 100644 index 000000000..228332eb7 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_2_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_2_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_2_styleB_32x32.png new file mode 100644 index 000000000..c91d1ec48 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_2_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_3_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_3_styleA_32x32.png new file mode 100644 index 000000000..5b98b93f6 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_3_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_3_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_3_styleB_32x32.png new file mode 100644 index 000000000..ae7811635 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_3_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_4_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_4_styleA_32x32.png new file mode 100644 index 000000000..71bf01595 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_4_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_4_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_4_styleB_32x32.png new file mode 100644 index 000000000..2a62ff917 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_walk_south_4_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_watering_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_watering_styleA_32x32.png new file mode 100644 index 000000000..16429564a Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_watering_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/kai_watering_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/characters/kai_watering_styleB_32x32.png new file mode 100644 index 000000000..3b379433b Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/kai_watering_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_hoe_action_styleA.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_hoe_action_styleA.png new file mode 100644 index 000000000..f56de9cdb Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_hoe_action_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_hoe_action_styleB.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_hoe_action_styleB.png new file mode 100644 index 000000000..c00ffbbd3 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_hoe_action_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_east_1_styleA.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_east_1_styleA.png new file mode 100644 index 000000000..17f6ed3c1 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_east_1_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_east_1_styleB.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_east_1_styleB.png new file mode 100644 index 000000000..3e4f14fd2 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_east_1_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_east_4_styleA.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_east_4_styleA.png new file mode 100644 index 000000000..22c135026 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_east_4_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_1_styleA.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_1_styleA.png new file mode 100644 index 000000000..0215222a8 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_1_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_1_styleB.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_1_styleB.png new file mode 100644 index 000000000..0dd0e1cfb Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_1_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_2_styleA.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_2_styleA.png new file mode 100644 index 000000000..dc12ec5a2 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_2_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_2_styleB.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_2_styleB.png new file mode 100644 index 000000000..58d23bcf8 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_2_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_3_styleA.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_3_styleA.png new file mode 100644 index 000000000..fb84c0e0b Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_3_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_3_styleB.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_3_styleB.png new file mode 100644 index 000000000..0b0b36e71 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_3_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_4_styleA.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_4_styleA.png new file mode 100644 index 000000000..764ef71ad Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_4_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_4_styleB.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_4_styleB.png new file mode 100644 index 000000000..4e369aae6 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_north_4_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_1_styleA.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_1_styleA.png new file mode 100644 index 000000000..7f9260b99 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_1_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_1_styleB.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_1_styleB.png new file mode 100644 index 000000000..596fccf4b Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_1_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_2_styleA.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_2_styleA.png new file mode 100644 index 000000000..1be30ba40 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_2_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_2_styleB.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_2_styleB.png new file mode 100644 index 000000000..91f03cf34 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_2_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_3_styleA.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_3_styleA.png new file mode 100644 index 000000000..30c647d80 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_3_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_3_styleB.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_3_styleB.png new file mode 100644 index 000000000..6dd9dc2f7 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_3_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_4_styleA.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_4_styleA.png new file mode 100644 index 000000000..6b4ecffa1 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_4_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_4_styleB.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_4_styleB.png new file mode 100644 index 000000000..e305f80e9 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_south_4_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_west_1_styleB.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_west_1_styleB.png new file mode 100644 index 000000000..8bb72e8e7 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_west_1_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_west_2_styleA.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_west_2_styleA.png new file mode 100644 index 000000000..688b802ba Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_west_2_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_west_2_styleB.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_west_2_styleB.png new file mode 100644 index 000000000..870debbb5 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_west_2_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_west_3_styleA.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_west_3_styleA.png new file mode 100644 index 000000000..e4edc6071 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_west_3_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_west_3_styleB.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_west_3_styleB.png new file mode 100644 index 000000000..e0dd37790 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_west_3_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_west_4_styleA.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_west_4_styleA.png new file mode 100644 index 000000000..64b428b7a Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_west_4_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_west_4_styleB.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_west_4_styleB.png new file mode 100644 index 000000000..1d5db9ff8 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_idle_west_4_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_styleA_idle.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_styleA_idle.png new file mode 100644 index 000000000..8bbdba8d8 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_styleA_idle.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_styleA_walk.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_styleA_walk.png new file mode 100644 index 000000000..b740d6c87 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_styleA_walk.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_styleB_idle.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_styleB_idle.png new file mode 100644 index 000000000..b1fc5c351 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_styleB_idle.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_styleB_walk.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_styleB_walk.png new file mode 100644 index 000000000..252ca9000 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_styleB_walk.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_1_styleA.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_1_styleA.png new file mode 100644 index 000000000..d1422d285 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_1_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_1_styleB.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_1_styleB.png new file mode 100644 index 000000000..8cb91bf2f Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_1_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_2_styleA.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_2_styleA.png new file mode 100644 index 000000000..228332eb7 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_2_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_2_styleB.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_2_styleB.png new file mode 100644 index 000000000..c91d1ec48 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_2_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_3_styleA.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_3_styleA.png new file mode 100644 index 000000000..5b98b93f6 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_3_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_3_styleB.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_3_styleB.png new file mode 100644 index 000000000..ae7811635 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_3_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_4_styleA.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_4_styleA.png new file mode 100644 index 000000000..71bf01595 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_4_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_4_styleB.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_4_styleB.png new file mode 100644 index 000000000..2a62ff917 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_walk_south_4_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_watering_styleA.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_watering_styleA.png new file mode 100644 index 000000000..16429564a Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_watering_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/kai_watering_styleB.png b/assets/images/demo_originals_with_white_bg/characters/originals/kai_watering_styleB.png new file mode 100644 index 000000000..3b379433b Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/kai_watering_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/zombie_dig_1_styleA.png b/assets/images/demo_originals_with_white_bg/characters/originals/zombie_dig_1_styleA.png new file mode 100644 index 000000000..da073bbbe Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/zombie_dig_1_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/zombie_dig_1_styleB.png b/assets/images/demo_originals_with_white_bg/characters/originals/zombie_dig_1_styleB.png new file mode 100644 index 000000000..15fe91381 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/zombie_dig_1_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/zombie_idle_1_styleA.png b/assets/images/demo_originals_with_white_bg/characters/originals/zombie_idle_1_styleA.png new file mode 100644 index 000000000..2c376cd8a Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/zombie_idle_1_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/originals/zombie_idle_1_styleB.png b/assets/images/demo_originals_with_white_bg/characters/originals/zombie_idle_1_styleB.png new file mode 100644 index 000000000..22cae8d7d Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/originals/zombie_idle_1_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/zombie_dig_1_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/characters/zombie_dig_1_styleA_32x32.png new file mode 100644 index 000000000..da073bbbe Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/zombie_dig_1_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/zombie_dig_1_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/characters/zombie_dig_1_styleB_32x32.png new file mode 100644 index 000000000..15fe91381 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/zombie_dig_1_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/zombie_idle_1_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/characters/zombie_idle_1_styleA_32x32.png new file mode 100644 index 000000000..2c376cd8a Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/zombie_idle_1_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/characters/zombie_idle_1_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/characters/zombie_idle_1_styleB_32x32.png new file mode 100644 index 000000000..22cae8d7d Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/characters/zombie_idle_1_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage0_styleA.png b/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage0_styleA.png new file mode 100644 index 000000000..a136664ee Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage0_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage0_styleB.png b/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage0_styleB.png new file mode 100644 index 000000000..523b36925 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage0_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage1_styleA.png b/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage1_styleA.png new file mode 100644 index 000000000..d36b7e891 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage1_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage1_styleB.png b/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage1_styleB.png new file mode 100644 index 000000000..519e3db34 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage1_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage2_styleA.png b/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage2_styleA.png new file mode 100644 index 000000000..ce92d8215 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage2_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage2_styleB.png b/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage2_styleB.png new file mode 100644 index 000000000..3432da80d Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage2_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage3_styleA.png b/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage3_styleA.png new file mode 100644 index 000000000..207140af4 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage3_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage3_styleB.png b/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage3_styleB.png new file mode 100644 index 000000000..ac658c53d Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage3_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage4_styleA.png b/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage4_styleA.png new file mode 100644 index 000000000..2ef8546e5 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage4_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage4_styleB.png b/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage4_styleB.png new file mode 100644 index 000000000..c423add02 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/crops/originals/wheat_stage4_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/crops/originals/wheat_styleA.png b/assets/images/demo_originals_with_white_bg/crops/originals/wheat_styleA.png new file mode 100644 index 000000000..e91e2678e Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/crops/originals/wheat_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/crops/wheat_stage0_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/crops/wheat_stage0_styleA_32x32.png new file mode 100644 index 000000000..a136664ee Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/crops/wheat_stage0_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/crops/wheat_stage0_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/crops/wheat_stage0_styleB_32x32.png new file mode 100644 index 000000000..523b36925 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/crops/wheat_stage0_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/crops/wheat_stage1_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/crops/wheat_stage1_styleA_32x32.png new file mode 100644 index 000000000..d36b7e891 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/crops/wheat_stage1_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/crops/wheat_stage1_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/crops/wheat_stage1_styleB_32x32.png new file mode 100644 index 000000000..519e3db34 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/crops/wheat_stage1_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/crops/wheat_stage2_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/crops/wheat_stage2_styleA_32x32.png new file mode 100644 index 000000000..ce92d8215 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/crops/wheat_stage2_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/crops/wheat_stage2_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/crops/wheat_stage2_styleB_32x32.png new file mode 100644 index 000000000..3432da80d Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/crops/wheat_stage2_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/crops/wheat_stage3_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/crops/wheat_stage3_styleA_32x32.png new file mode 100644 index 000000000..207140af4 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/crops/wheat_stage3_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/crops/wheat_stage3_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/crops/wheat_stage3_styleB_32x32.png new file mode 100644 index 000000000..ac658c53d Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/crops/wheat_stage3_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/crops/wheat_stage4_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/crops/wheat_stage4_styleA_32x32.png new file mode 100644 index 000000000..2ef8546e5 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/crops/wheat_stage4_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/crops/wheat_stage4_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/crops/wheat_stage4_styleB_32x32.png new file mode 100644 index 000000000..c423add02 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/crops/wheat_stage4_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/crops/wheat_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/crops/wheat_styleA_32x32.png new file mode 100644 index 000000000..e91e2678e Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/crops/wheat_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/effects/originals/water_anim_1_styleA.png b/assets/images/demo_originals_with_white_bg/effects/originals/water_anim_1_styleA.png new file mode 100644 index 000000000..81d3fb4b0 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/effects/originals/water_anim_1_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/effects/originals/water_anim_1_styleB.png b/assets/images/demo_originals_with_white_bg/effects/originals/water_anim_1_styleB.png new file mode 100644 index 000000000..cb8ca1277 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/effects/originals/water_anim_1_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/effects/originals/water_anim_2_styleA.png b/assets/images/demo_originals_with_white_bg/effects/originals/water_anim_2_styleA.png new file mode 100644 index 000000000..98e9dabf3 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/effects/originals/water_anim_2_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/effects/originals/water_anim_2_styleB.png b/assets/images/demo_originals_with_white_bg/effects/originals/water_anim_2_styleB.png new file mode 100644 index 000000000..fcd4b91cf Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/effects/originals/water_anim_2_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/effects/water_anim_1_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/effects/water_anim_1_styleA_32x32.png new file mode 100644 index 000000000..f2bc0dbe1 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/effects/water_anim_1_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/effects/water_anim_1_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/effects/water_anim_1_styleB_32x32.png new file mode 100644 index 000000000..2dbfa485b Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/effects/water_anim_1_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/effects/water_anim_2_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/effects/water_anim_2_styleA_32x32.png new file mode 100644 index 000000000..3f55353f2 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/effects/water_anim_2_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/effects/water_anim_2_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/effects/water_anim_2_styleB_32x32.png new file mode 100644 index 000000000..a706d36ab Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/effects/water_anim_2_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/enemies/originals/zombie_styleA_idle.png b/assets/images/demo_originals_with_white_bg/enemies/originals/zombie_styleA_idle.png new file mode 100644 index 000000000..b5a10520b Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/enemies/originals/zombie_styleA_idle.png differ diff --git a/assets/images/demo_originals_with_white_bg/enemies/originals/zombie_styleB_idle.png b/assets/images/demo_originals_with_white_bg/enemies/originals/zombie_styleB_idle.png new file mode 100644 index 000000000..801d3972b Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/enemies/originals/zombie_styleB_idle.png differ diff --git a/assets/images/demo_originals_with_white_bg/enemies/zombie_styleA_idle_32x32.png b/assets/images/demo_originals_with_white_bg/enemies/zombie_styleA_idle_32x32.png new file mode 100644 index 000000000..b5a10520b Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/enemies/zombie_styleA_idle_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/enemies/zombie_styleB_idle_32x32.png b/assets/images/demo_originals_with_white_bg/enemies/zombie_styleB_idle_32x32.png new file mode 100644 index 000000000..801d3972b Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/enemies/zombie_styleB_idle_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/environment/campfire_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/environment/campfire_styleA_32x32.png new file mode 100644 index 000000000..7b0102c08 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/environment/campfire_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/environment/campfire_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/environment/campfire_styleB_32x32.png new file mode 100644 index 000000000..d60f54734 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/environment/campfire_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/environment/dead_tree_styleA_32x64.png b/assets/images/demo_originals_with_white_bg/environment/dead_tree_styleA_32x64.png new file mode 100644 index 000000000..07b185057 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/environment/dead_tree_styleA_32x64.png differ diff --git a/assets/images/demo_originals_with_white_bg/environment/dead_tree_styleB_32x64.png b/assets/images/demo_originals_with_white_bg/environment/dead_tree_styleB_32x64.png new file mode 100644 index 000000000..585183c25 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/environment/dead_tree_styleB_32x64.png differ diff --git a/assets/images/demo_originals_with_white_bg/environment/originals/campfire_styleA.png b/assets/images/demo_originals_with_white_bg/environment/originals/campfire_styleA.png new file mode 100644 index 000000000..7b0102c08 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/environment/originals/campfire_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/environment/originals/campfire_styleB.png b/assets/images/demo_originals_with_white_bg/environment/originals/campfire_styleB.png new file mode 100644 index 000000000..d60f54734 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/environment/originals/campfire_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/environment/originals/dead_tree_styleA.png b/assets/images/demo_originals_with_white_bg/environment/originals/dead_tree_styleA.png new file mode 100644 index 000000000..a3e9d1fef Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/environment/originals/dead_tree_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/environment/originals/dead_tree_styleB.png b/assets/images/demo_originals_with_white_bg/environment/originals/dead_tree_styleB.png new file mode 100644 index 000000000..f62cb8aae Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/environment/originals/dead_tree_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/environment/originals/rock_styleA.png b/assets/images/demo_originals_with_white_bg/environment/originals/rock_styleA.png new file mode 100644 index 000000000..44ea2c74f Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/environment/originals/rock_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/environment/originals/rock_styleB.png b/assets/images/demo_originals_with_white_bg/environment/originals/rock_styleB.png new file mode 100644 index 000000000..691091368 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/environment/originals/rock_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/environment/rock_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/environment/rock_styleA_32x32.png new file mode 100644 index 000000000..627f7336b Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/environment/rock_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/environment/rock_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/environment/rock_styleB_32x32.png new file mode 100644 index 000000000..cdfdfb68e Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/environment/rock_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/items/originals/watering_can_styleA.png b/assets/images/demo_originals_with_white_bg/items/originals/watering_can_styleA.png new file mode 100644 index 000000000..498be1402 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/items/originals/watering_can_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/items/originals/watering_can_styleB.png b/assets/images/demo_originals_with_white_bg/items/originals/watering_can_styleB.png new file mode 100644 index 000000000..b2e96464f Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/items/originals/watering_can_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/items/originals/wheat_bundle_styleA.png b/assets/images/demo_originals_with_white_bg/items/originals/wheat_bundle_styleA.png new file mode 100644 index 000000000..7680179de Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/items/originals/wheat_bundle_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/items/originals/wheat_bundle_styleB.png b/assets/images/demo_originals_with_white_bg/items/originals/wheat_bundle_styleB.png new file mode 100644 index 000000000..6e9e3b024 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/items/originals/wheat_bundle_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/items/originals/wheat_seeds_styleA.png b/assets/images/demo_originals_with_white_bg/items/originals/wheat_seeds_styleA.png new file mode 100644 index 000000000..6062d193b Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/items/originals/wheat_seeds_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/items/originals/wheat_seeds_styleB.png b/assets/images/demo_originals_with_white_bg/items/originals/wheat_seeds_styleB.png new file mode 100644 index 000000000..940d6c49d Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/items/originals/wheat_seeds_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/items/originals/wooden_hoe_styleA.png b/assets/images/demo_originals_with_white_bg/items/originals/wooden_hoe_styleA.png new file mode 100644 index 000000000..6a7526fe9 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/items/originals/wooden_hoe_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/items/originals/wooden_hoe_styleB.png b/assets/images/demo_originals_with_white_bg/items/originals/wooden_hoe_styleB.png new file mode 100644 index 000000000..841ca5b6a Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/items/originals/wooden_hoe_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/items/watering_can_styleA_16x16.png b/assets/images/demo_originals_with_white_bg/items/watering_can_styleA_16x16.png new file mode 100644 index 000000000..498be1402 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/items/watering_can_styleA_16x16.png differ diff --git a/assets/images/demo_originals_with_white_bg/items/watering_can_styleB_16x16.png b/assets/images/demo_originals_with_white_bg/items/watering_can_styleB_16x16.png new file mode 100644 index 000000000..b2e96464f Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/items/watering_can_styleB_16x16.png differ diff --git a/assets/images/demo_originals_with_white_bg/items/wheat_bundle_styleA_16x16.png b/assets/images/demo_originals_with_white_bg/items/wheat_bundle_styleA_16x16.png new file mode 100644 index 000000000..7680179de Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/items/wheat_bundle_styleA_16x16.png differ diff --git a/assets/images/demo_originals_with_white_bg/items/wheat_bundle_styleB_16x16.png b/assets/images/demo_originals_with_white_bg/items/wheat_bundle_styleB_16x16.png new file mode 100644 index 000000000..6e9e3b024 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/items/wheat_bundle_styleB_16x16.png differ diff --git a/assets/images/demo_originals_with_white_bg/items/wheat_seeds_styleA_16x16.png b/assets/images/demo_originals_with_white_bg/items/wheat_seeds_styleA_16x16.png new file mode 100644 index 000000000..6062d193b Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/items/wheat_seeds_styleA_16x16.png differ diff --git a/assets/images/demo_originals_with_white_bg/items/wheat_seeds_styleB_16x16.png b/assets/images/demo_originals_with_white_bg/items/wheat_seeds_styleB_16x16.png new file mode 100644 index 000000000..940d6c49d Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/items/wheat_seeds_styleB_16x16.png differ diff --git a/assets/images/demo_originals_with_white_bg/items/wooden_hoe_styleA_16x16.png b/assets/images/demo_originals_with_white_bg/items/wooden_hoe_styleA_16x16.png new file mode 100644 index 000000000..6a7526fe9 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/items/wooden_hoe_styleA_16x16.png differ diff --git a/assets/images/demo_originals_with_white_bg/items/wooden_hoe_styleB_16x16.png b/assets/images/demo_originals_with_white_bg/items/wooden_hoe_styleB_16x16.png new file mode 100644 index 000000000..841ca5b6a Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/items/wooden_hoe_styleB_16x16.png differ diff --git a/assets/images/demo_originals_with_white_bg/terrain/dirt_tile_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/terrain/dirt_tile_styleA_32x32.png new file mode 100644 index 000000000..f2586add9 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/terrain/dirt_tile_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/terrain/dirt_tile_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/terrain/dirt_tile_styleB_32x32.png new file mode 100644 index 000000000..efe9ad0de Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/terrain/dirt_tile_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/terrain/grass_tile_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/terrain/grass_tile_styleA_32x32.png new file mode 100644 index 000000000..b61a94a62 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/terrain/grass_tile_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/terrain/grass_tile_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/terrain/grass_tile_styleB_32x32.png new file mode 100644 index 000000000..4e7a0c7a7 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/terrain/grass_tile_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/terrain/originals/dirt_tile_styleA.png b/assets/images/demo_originals_with_white_bg/terrain/originals/dirt_tile_styleA.png new file mode 100644 index 000000000..f2586add9 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/terrain/originals/dirt_tile_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/terrain/originals/dirt_tile_styleB.png b/assets/images/demo_originals_with_white_bg/terrain/originals/dirt_tile_styleB.png new file mode 100644 index 000000000..efe9ad0de Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/terrain/originals/dirt_tile_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/terrain/originals/grass_tile_styleA.png b/assets/images/demo_originals_with_white_bg/terrain/originals/grass_tile_styleA.png new file mode 100644 index 000000000..b61a94a62 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/terrain/originals/grass_tile_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/terrain/originals/grass_tile_styleB.png b/assets/images/demo_originals_with_white_bg/terrain/originals/grass_tile_styleB.png new file mode 100644 index 000000000..4e7a0c7a7 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/terrain/originals/grass_tile_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/terrain/originals/tilled_dry_styleA.png b/assets/images/demo_originals_with_white_bg/terrain/originals/tilled_dry_styleA.png new file mode 100644 index 000000000..3a722ea78 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/terrain/originals/tilled_dry_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/terrain/originals/tilled_dry_styleB.png b/assets/images/demo_originals_with_white_bg/terrain/originals/tilled_dry_styleB.png new file mode 100644 index 000000000..633160d9c Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/terrain/originals/tilled_dry_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/terrain/originals/tilled_watered_styleA.png b/assets/images/demo_originals_with_white_bg/terrain/originals/tilled_watered_styleA.png new file mode 100644 index 000000000..dc2e66a84 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/terrain/originals/tilled_watered_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/terrain/originals/tilled_watered_styleB.png b/assets/images/demo_originals_with_white_bg/terrain/originals/tilled_watered_styleB.png new file mode 100644 index 000000000..d7aa6477f Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/terrain/originals/tilled_watered_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/terrain/tilled_dry_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/terrain/tilled_dry_styleA_32x32.png new file mode 100644 index 000000000..3a722ea78 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/terrain/tilled_dry_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/terrain/tilled_dry_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/terrain/tilled_dry_styleB_32x32.png new file mode 100644 index 000000000..633160d9c Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/terrain/tilled_dry_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/terrain/tilled_watered_styleA_32x32.png b/assets/images/demo_originals_with_white_bg/terrain/tilled_watered_styleA_32x32.png new file mode 100644 index 000000000..dc2e66a84 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/terrain/tilled_watered_styleA_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/terrain/tilled_watered_styleB_32x32.png b/assets/images/demo_originals_with_white_bg/terrain/tilled_watered_styleB_32x32.png new file mode 100644 index 000000000..d7aa6477f Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/terrain/tilled_watered_styleB_32x32.png differ diff --git a/assets/images/demo_originals_with_white_bg/ui/originals/dialogue_box_styleA.png b/assets/images/demo_originals_with_white_bg/ui/originals/dialogue_box_styleA.png new file mode 100644 index 000000000..fc302673f Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/ui/originals/dialogue_box_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/ui/originals/dialogue_box_styleB.png b/assets/images/demo_originals_with_white_bg/ui/originals/dialogue_box_styleB.png new file mode 100644 index 000000000..8410e23fb Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/ui/originals/dialogue_box_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/ui/originals/health_bar_full_styleA.png b/assets/images/demo_originals_with_white_bg/ui/originals/health_bar_full_styleA.png new file mode 100644 index 000000000..caadf3030 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/ui/originals/health_bar_full_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/ui/originals/health_bar_full_styleB.png b/assets/images/demo_originals_with_white_bg/ui/originals/health_bar_full_styleB.png new file mode 100644 index 000000000..548c5e33a Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/ui/originals/health_bar_full_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/ui/originals/health_bar_half_styleA.png b/assets/images/demo_originals_with_white_bg/ui/originals/health_bar_half_styleA.png new file mode 100644 index 000000000..47e51268d Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/ui/originals/health_bar_half_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/ui/originals/health_bar_half_styleB.png b/assets/images/demo_originals_with_white_bg/ui/originals/health_bar_half_styleB.png new file mode 100644 index 000000000..711e96a07 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/ui/originals/health_bar_half_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/ui/originals/inventory_slot_empty_styleA.png b/assets/images/demo_originals_with_white_bg/ui/originals/inventory_slot_empty_styleA.png new file mode 100644 index 000000000..d0aa042b4 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/ui/originals/inventory_slot_empty_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/ui/originals/inventory_slot_empty_styleB.png b/assets/images/demo_originals_with_white_bg/ui/originals/inventory_slot_empty_styleB.png new file mode 100644 index 000000000..b28b24e3e Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/ui/originals/inventory_slot_empty_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/ui/originals/inventory_slot_selected_styleA.png b/assets/images/demo_originals_with_white_bg/ui/originals/inventory_slot_selected_styleA.png new file mode 100644 index 000000000..ee372316c Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/ui/originals/inventory_slot_selected_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/ui/originals/inventory_slot_selected_styleB.png b/assets/images/demo_originals_with_white_bg/ui/originals/inventory_slot_selected_styleB.png new file mode 100644 index 000000000..77775d064 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/ui/originals/inventory_slot_selected_styleB.png differ diff --git a/assets/images/demo_originals_with_white_bg/ui/originals/kai_portrait_styleA.png b/assets/images/demo_originals_with_white_bg/ui/originals/kai_portrait_styleA.png new file mode 100644 index 000000000..363f761b9 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/ui/originals/kai_portrait_styleA.png differ diff --git a/assets/images/demo_originals_with_white_bg/ui/originals/kai_portrait_styleB.png b/assets/images/demo_originals_with_white_bg/ui/originals/kai_portrait_styleB.png new file mode 100644 index 000000000..f0d17bc67 Binary files /dev/null and b/assets/images/demo_originals_with_white_bg/ui/originals/kai_portrait_styleB.png differ diff --git a/docs/COMPLETE_SYSTEMS_OVERVIEW.md b/docs/COMPLETE_SYSTEMS_OVERVIEW.md new file mode 100644 index 000000000..b488f4aac --- /dev/null +++ b/docs/COMPLETE_SYSTEMS_OVERVIEW.md @@ -0,0 +1,456 @@ +# šŸŽ® DOLINASMRTI - COMPLETE GAME SYSTEMS OVERVIEW + +**Date:** Dec 30, 2025 +**Status:** What's Done vs What's Still TODO + +--- + +## āœ… **SYSTEMS ALREADY IMPLEMENTED (IN CODE):** + +### **šŸŽ® CORE GAMEPLAY:** +- āœ… Player Movement (WASD + arrows) +- āœ… Camera System (follow player, zoom) +- āœ… Collision Detection +- āœ… Z-sorting (depth layering) +- āœ… Tiled Map Integration +- āœ… Scene Management (Phaser scenes) + +### **🌾 FARMING:** +- āœ… Tilling soil +- āœ… Planting seeds +- āœ… Watering crops +- āœ… Crop growth stages +- āœ… Harvesting +- āœ… Season system framework + +### **āš”ļø COMBAT:** +- āœ… Basic attack system +- āœ… Enemy AI (zombies) +- āœ… Health system +- āœ… Damage calculation +- āœ… Death/respawn + +### **šŸŽ’ INVENTORY/ITEMS:** +- āœ… Inventory system (40 slots) +- āœ… Item pickup +- āœ… Item stacking +- āœ… Equipment slots +- āœ… Tool durability +- āœ… Item tooltips + +### **šŸ—ļø BUILDING:** +- āœ… Building placement +- āœ… Building rotation +- āœ… Resource requirements +- āœ… Building upgrades +- āœ… Fence system +- āœ… Crafting stations + +### **šŸŽØ UI/UX:** +- āœ… Health bar +- āœ… Stamina bar +- āœ… Inventory panel +- āœ… Equipment panel +- āœ… Minimap +- āœ… Dialogue system +- āœ… Quest tracker +- āœ… Pause menu +- āœ… Settings menu + +### **♿ ACCESSIBILITY:** +- āœ… Dyslexia support (OpenDyslexic font) +- āœ… Color blind modes (6 types) +- āœ… Screen reader support +- āœ… Keyboard navigation +- āœ… Motor assist (MacBook touchpad) +- āœ… ADHD support features +- āœ… Visual sound cues +- āœ… Epilepsy warning + +### **šŸŽµ AUDIO:** +- āœ… Sound effects system +- āœ… Background music +- āœ… Ambient sounds +- āœ… Voiceover system (AI TTS) +- āœ… Volume controls + +### **āš™ļø UTILITIES:** +- āœ… Save/Load system +- āœ… Debug panel +- āœ… Performance monitoring +- āœ… Error handling +- āœ… Auto-save + +--- + +## ā³ **PARTIALLY DONE (NEEDS EXPANSION):** + +### **šŸ§™ MAGIC SYSTEM:** +- āœ… Basic spell framework +- ā³ Full spell tree +- ā³ Mana system polish +- ā³ Spell combos +- ā³ Spell upgrades + +### **šŸ—ŗļø WORLD:** +- āœ… Base farm area (demo) +- ā³ Town square +- ā³ 18 biomes (only 1 done!) +- ā³ Fast travel system +- ā³ World map + +### **šŸ‘„ NPCS:** +- āœ… Basic NPC system +- āœ… Dialogue system +- ā³ Relationship system (started) +- ā³ NPC schedules +- ā³ NPC quests (only 2-3 done) +- ā³ Marriage system +- ā³ Family/children + +### **šŸ“– STORY:** +- āœ… Opening cutscene planned +- āœ… Ana clue system designed +- ā³ Act 1 (50% done) +- ā³ Act 2 (not started) +- ā³ Act 3 (not started) +- ā³ Ending sequences + +### **šŸŽÆ QUESTS:** +- āœ… Quest system framework +- āœ… Quest tracking +- ā³ Side quests (5% done) +- ā³ Main storyline quests +- ā³ Daily quests +- ā³ Achievement system + +--- + +## āŒ **NOT STARTED YET (TODO):** + +### **šŸ˜ļø SETTLEMENT/TOWN:** +- āŒ Town building system +- āŒ Town NPCs (50+ characters) +- āŒ Shops (5+ types) +- āŒ Town events +- āŒ Town upgrades +- āŒ Town reputation system + +### **🐣 ANIMALS/LIVESTOCK:** +- āŒ Animal raising system +- āŒ Chicken coop +- āŒ Barn animals (cows, pigs) +- āŒ Animal breeding +- āŒ Animal products (milk, eggs, wool) +- āŒ Pet system + +### **šŸ”Ø ADVANCED CRAFTING:** +- āœ… Basic crafting +- āŒ Recipe discovery +- āŒ Skill trees (5+ types) +- āŒ Crafting mastery levels +- āŒ Special/rare recipes + +### **āš—ļø ALCHEMY/POTIONS:** +- āŒ Potion brewing system +- āŒ Ingredient foraging +- āŒ Potion recipes +- ā³ Buff/debuff system (framework only) + +### **🌊 FISHING:** +- āŒ Fishing mechanic +- āŒ Fish types (20+) +- āŒ Fishing rod upgrades +- āŒ Fishing locations +- āŒ Fish collection + +### **ā›ļø MINING:** +- āŒ Mining system +- āŒ Cave exploration +- āŒ Ore types +- āŒ Gem finding +- āŒ Mining tools + +### **šŸ³ COOKING:** +- āŒ Cooking system +- āŒ Recipe book +- āŒ Food buffs +- āŒ Kitchen upgrade +- āŒ Meal quality levels + +### **šŸŒ¦ļø WEATHER/SEASONS:** +- āœ… Season system (basic) +- ā³ Weather effects (rain, snow planned) +- āŒ Day/night cycle enhancements +- āŒ Season special events +- āŒ Weather affecting gameplay + +### **šŸŽ‰ EVENTS/FESTIVALS:** +- āŒ Seasonal festivals (4+) +- āŒ Town celebrations +- āŒ Special events +- āŒ Event rewards + +### **šŸ† ACHIEVEMENTS:** +- āŒ Achievement system +- āŒ 50+ achievements +- āŒ Steam integration (future) +- āŒ Achievement rewards + +### **šŸ’ SOCIAL SYSTEMS:** +- āŒ Dating system +- āŒ Marriage proposals +- āŒ Wedding ceremony +- āŒ Children system +- āŒ Family interactions + +### **🌟 END-GAME CONTENT:** +- āŒ Post-story content +- āŒ Infinite dungeon +- āŒ Legendary items +- āŒ New Game Plus +- āŒ Challenge modes + +### **šŸ“± PLATFORM/TECH:** +- āŒ Mobile controls +- āŒ Controller support +- āŒ Cloud saves +- āŒ Mod support +- āŒ Workshop integration + +--- + +## šŸ“Š **COMPLETION STATISTICS:** + +### **BY CATEGORY:** + +| Category | Done | Partial | Not Started | Total | +|----------|------|---------|-------------|-------| +| **Core Gameplay** | 6 | 0 | 0 | 6 | +| **Farming** | 5 | 1 | 4 | 10 | +| **Combat** | 5 | 2 | 3 | 10 | +| **Inventory** | 6 | 0 | 1 | 7 | +| **Building** | 6 | 0 | 2 | 8 | +| **UI/UX** | 10 | 0 | 3 | 13 | +| **Accessibility** | 8 | 0 | 0 | 8 | +| **Audio** | 5 | 0 | 0 | 5 | +| **World** | 1 | 2 | 17 | 20 | +| **NPCs/Social** | 2 | 3 | 10 | 15 | +| **Story** | 2 | 2 | 6 | 10 | +| **Crafting/Skills** | 1 | 1 | 15 | 17 | +| **Events** | 0 | 0 | 6 | 6 | +| **End-game** | 0 | 0 | 5 | 5 | +| **Platform** | 0 | 0 | 5 | 5 | + +**TOTAL:** 57 done + 11 partial + 77 not started = **145 systems** + +--- + +## šŸ“ˆ **OVERALL PROGRESS:** + +``` +Done: 57/145 = 39% āœ…āœ…āœ…āœ… +Partial: 11/145 = 8% ā³ +Not Started: 77/145 = 53% āŒāŒāŒāŒāŒ +``` + +**Game is ~40% complete!** + +--- + +## šŸŽÆ **PRIORITY ORDER FOR REMAINING WORK:** + +### **PHASE 1: KICKSTARTER DEMO (CURRENT!)** +- āœ… Basic farm mechanics - DONE +- āœ… Character movement - DONE +- āœ… Assets (99 PNGs) - DONE +- ā³ Tiled map - IN PROGRESS +- ā³ Phaser integration - 10 hours left +- ā³ Demo video - After playable + +**Timeline:** 5-7 days +**Priority:** šŸ”“šŸ”“šŸ”“ CRITICAL + +--- + +### **PHASE 2: WORLD EXPANSION (After Kickstarter)** +**Add:** +- 3-5 more biomes (town, forest, mountains) +- 20+ NPCs +- 10+ buildings +- Main story Act 1 completion + +**Timeline:** 2-3 months +**Priority:** šŸ”“šŸ”“ HIGH + +--- + +### **PHASE 3: GAMEPLAY DEPTH** +**Add:** +- Animals/livestock +- Fishing +- Mining +- Cooking +- Advanced crafting +- Full skill trees + +**Timeline:** 3-4 months +**Priority:** 🟔🟔 MEDIUM + +--- + +### **PHASE 4: SOCIAL & EVENTS** +**Add:** +- Marriage/family system +- Festivals +- Town events +- All NPC relationships +- Side quests (50+) + +**Timeline:** 2-3 months +**Priority:** 🟔 MEDIUM + +--- + +### **PHASE 5: POLISH & END-GAME** +**Add:** +- Full story Acts 2-3 +- End-game content +- Achievements +- New Game Plus +- Platform ports + +**Timeline:** 3-4 months +**Priority:** 🟢 LOW (post-launch) + +--- + +## šŸ’¾ **ASSETS NEEDED (Beyond Demo 99):** + +### **Characters:** +- Ana (all animations) - 50 frames +- Gronk (all animations) - 50 frames +- Grok (all animations) - 50 frames +- Susi (pet dog) - 20 frames +- 50+ NPCs Ɨ 20 frames each = 1,000+ frames + +### **Buildings:** +- Houses (10 types) Ɨ 4 angles = 40 +- Shops (5 types) Ɨ 4 angles = 20 +- Special buildings (church, town hall, etc.) = 20 +- Ruins/destroyed versions = 30 + +### **Biomes (18 total):** +- Terrain tiles (20 per biome) = 360 tiles +- Props (50 per biome) = 900 objects +- Enemies (5 per biome) = 90 enemies + +### **Items:** +- Tools (20 types) = 20 +- Seeds (30 types) = 30 +- Food (50 types) = 50 +- Weapons (30 types) = 30 +- Magic items (40 types) = 40 + +### **UI:** +- Menus (20 types) +- Icons (200+) +- Portraits (60+ characters) + +**ESTIMATED TOTAL:** ~4,000-5,000 unique assets! + +--- + +## šŸš€ **IMMEDIATE NEXT STEPS:** + +### **THIS WEEK:** +1. āœ… Demo assets complete +2. ā³ Build Tiled 8Ɨ8 map +3. ā³ Phaser integration (10 hrs) +4. ā³ Demo video + +### **NEXT WEEK:** +1. ā³ Kickstarter launch +2. ā³ Start Town biome assets +3. ā³ Ana character generation + +### **NEXT MONTH:** +1. ā³ Town complete +2. ā³ 200+ new assets +3. ā³ Act 1 story complete + +--- + +## šŸ“‹ **SYSTEMS THAT NEED SORTING/ORGANIZATION:** + +### **Code:** +- ā³ Refactor combat system +- ā³ Optimize performance (FPS drops) +- ā³ Clean up unused code +- ā³ Better error handling + +### **Assets:** +- āœ… Demo (organized!) +- āŒ Future biomes (need structure!) +- āŒ Characters (need folders!) +- āŒ Items (need categorization!) + +### **Documentation:** +- āœ… Master production strategy (done!) +- ā³ Full GDD update needed +- ā³ NPC database +- ā³ Quest database +- ā³ Item database + +### **Design:** +- ā³ All 18 biome concepts +- ā³ All 50+ NPC backstories +- ā³ Full dialogue trees +- ā³ Complete quest chains +- ā³ Magic spell tree finalization + +--- + +## šŸŽÆ **WHAT'S CRITICALLY MISSING:** + +### **For MVP (Minimum Viable Product):** +1. āŒ **Town** - Need 1 full town +2. āŒ **20+ NPCs** - Only have base system +3. āŒ **Story Act 1** - Only 50% done +4. ā³ **3+ Biomes** - Only farm done +5. āŒ **Animals** - Completely missing +6. āŒ **Fishing** - Completely missing + +### **For "Complete" Game:** +- All 18 biomes +- All 50+ NPCs +- Full story (3 acts) +- All systems (see above 77 todolist!) + +--- + +**BOTTOM LINE:** + +**YOU HAVE:** +- āœ… Solid foundation (40% done!) +- āœ… All core systems working +- āœ… Demo assets ready +- āœ… Production pipeline established + +**YOU NEED:** +- ā³ MORE ASSETS (4,000+ more!) +- ā³ MORE BIOMES (17 more!) +- ā³ MORE NPCS (50+ more!) +- ā³ MORE FEATURES (77 systems!) + +**REALISTICALLY:** +- Kickstarter demo: 1 week āœ… +- Alpha (3 biomes): 3 months ā³ +- Beta (10 biomes): 6 months ā³ +- Full release: 12-18 months ā³ + +--- + +**AMPAK! Foundation je odlična! šŸŽ®āœØ** + +**Želite, da prioritiziram naslednje korake?** 😊 diff --git a/docs/MASTER_ASSET_PRODUCTION_STRATEGY.md b/docs/MASTER_ASSET_PRODUCTION_STRATEGY.md new file mode 100644 index 000000000..b34bd8eb0 --- /dev/null +++ b/docs/MASTER_ASSET_PRODUCTION_STRATEGY.md @@ -0,0 +1,409 @@ +# šŸŽ® DOLINASMRTI - MASTER ASSET PRODUCTION STRATEGY + +**For:** Full game (18 biomes, towns, NPCs, buildings, everything!) +**Date:** Dec 30, 2025 + +--- + +## šŸ“ **FOLDER STRUCTURE (SCALABLE):** + +``` +assets/images/ +ā”œā”€ā”€ demo/ # āœ… Kickstarter demo (done!) +│ ā”œā”€ā”€ characters/ +│ ā”œā”€ā”€ terrain/ +│ ā”œā”€ā”€ buildings/ +│ └── ... +│ +ā”œā”€ā”€ biomes/ # ā³ Production assets by biome +│ ā”œā”€ā”€ 01_dolina_farm/ # Starting area +│ │ ā”œā”€ā”€ terrain/ +│ │ │ ā”œā”€ā”€ grass/ +│ │ │ │ ā”œā”€ā”€ grass_1_original_1024x1024.png +│ │ │ │ ā”œā”€ā”€ grass_1_tile_32x32.png +│ │ │ │ └── grass_1_preview_256x256.png +│ │ │ ā”œā”€ā”€ dirt/ +│ │ │ └── tilled/ +│ │ ā”œā”€ā”€ buildings/ +│ │ │ ā”œā”€ā”€ tent/ +│ │ │ ā”œā”€ā”€ shack/ +│ │ │ └── barn/ +│ │ ā”œā”€ā”€ props/ # Decorations +│ │ │ ā”œā”€ā”€ campfire/ +│ │ │ ā”œā”€ā”€ dead_tree/ +│ │ │ └── rocks/ +│ │ ā”œā”€ā”€ crops/ +│ │ └── npcs/ +│ │ +│ ā”œā”€ā”€ 02_dark_forest/ # Forest biome +│ │ ā”œā”€ā”€ terrain/ +│ │ ā”œā”€ā”€ trees/ +│ │ ā”œā”€ā”€ ruins/ +│ │ └── enemies/ +│ │ +│ ā”œā”€ā”€ 03_abandoned_town/ # Town/city +│ │ ā”œā”€ā”€ buildings/ +│ │ │ ā”œā”€ā”€ houses/ +│ │ │ ā”œā”€ā”€ stores/ +│ │ │ ā”œā”€ā”€ church/ +│ │ │ └── town_hall/ +│ │ ā”œā”€ā”€ streets/ +│ │ ā”œā”€ā”€ npcs/ +│ │ └── props/ +│ │ +│ └── ... (all 18 biomes) +│ +ā”œā”€ā”€ characters/ # Main characters (persistent) +│ ā”œā”€ā”€ kai/ +│ │ ā”œā”€ā”€ idle/ +│ │ │ ā”œā”€ā”€ kai_idle_north_1_original_1024x1024.png +│ │ │ ā”œā”€ā”€ kai_idle_north_1_sprite_32x32.png +│ │ │ └── kai_idle_north_1_portrait_128x128.png +│ │ ā”œā”€ā”€ walk/ +│ │ ā”œā”€ā”€ actions/ +│ │ └── portraits/ +│ ā”œā”€ā”€ gronk/ +│ ā”œā”€ā”€ ana/ +│ └── other_companions/ +│ +ā”œā”€ā”€ enemies/ # Shared enemies +│ ā”œā”€ā”€ zombies/ +│ ā”œā”€ā”€ mutants/ +│ ā”œā”€ā”€ bosses/ +│ └── magical_creatures/ +│ +ā”œā”€ā”€ items/ # Inventory items +│ ā”œā”€ā”€ tools/ +│ ā”œā”€ā”€ seeds/ +│ ā”œā”€ā”€ food/ +│ ā”œā”€ā”€ weapons/ +│ └── magical/ +│ +ā”œā”€ā”€ ui/ # UI elements +│ ā”œā”€ā”€ hud/ +│ ā”œā”€ā”€ menus/ +│ ā”œā”€ā”€ dialogue/ +│ └── inventory/ +│ +└── effects/ # Visual effects + ā”œā”€ā”€ magic/ + ā”œā”€ā”€ weather/ + ā”œā”€ā”€ particles/ + └── animations/ +``` + +--- + +## šŸŽØ **ASSET SIZE TIERS:** + +### **For EVERY asset, keep 3 versions:** + +#### **1. ORIGINAL (1024Ɨ1024 or larger)** +- **File:** `assetname_original_1024x1024.png` +- **Purpose:** Archive, future upscaling, print materials +- **Location:** Separate backup drive + Git LFS + +#### **2. GAME SPRITE (32Ɨ32 or multiples)** +- **File:** `assetname_sprite_32x32.png` (or 32Ɨ64, 64Ɨ64, etc.) +- **Purpose:** In-game rendering, Tiled maps +- **Location:** Main game assets folder + +#### **3. PREVIEW/UI (128Ɨ128, 256Ɨ256)** +- **File:** `assetname_preview_256x256.png` +- **Purpose:** Inventory icons, portraits, previews +- **Location:** UI assets folder + +--- + +## šŸ—ļø **PRODUCTION WORKFLOW:** + +### **Phase 1: GENERATION** +1. Generate asset at **1024Ɨ1024** (or larger) +2. Save as: `assetname_original_1024x1024.png` +3. Apply background removal +4. Save transparent version + +### **Phase 2: MULTI-SIZE EXPORT** +1. **Sprite version:** Resize to tile-aligned size (32Ɨ32, 32Ɨ64, etc.) + - Filename: `assetname_sprite_32x32.png` + - Optimized for performance + +2. **Preview version:** Resize to UI size (128Ɨ128, 256Ɨ256) + - Filename: `assetname_preview_256x256.png` + - For inventory, character select, etc. + +3. **Keep original:** Archive in `originals/` subfolder + +### **Phase 3: ORGANIZATION** +Place in appropriate biome/category folder + +--- + +## šŸ“‹ **NAMING CONVENTION:** + +### **Format:** +``` +{category}_{name}_{variant}_{role}_{width}x{height}.png +``` + +### **Examples:** +``` +# Terrain +terrain_grass_summer_sprite_32x32.png +terrain_grass_summer_original_1024x1024.png + +# Buildings +building_barn_red_sprite_64x96.png +building_barn_red_preview_256x256.png +building_barn_red_original_1024x1024.png + +# Characters +char_kai_idle_north_1_sprite_32x32.png +char_kai_idle_north_1_portrait_128x128.png +char_kai_idle_north_1_original_1024x1024.png + +# Props +prop_campfire_lit_sprite_32x32.png +prop_campfire_lit_original_1024x1024.png + +# NPCs +npc_farmer_idle_sprite_32x32.png +npc_farmer_portrait_128x128.png +``` + +--- + +## šŸ—ŗļø **BIOME-SPECIFIC ASSETS:** + +### **Each biome folder contains:** + +#### **Terrain tiles** (ground, paths, special surfaces) +- Grass variations +- Dirt variations +- Stone/pavement +- Special terrain (lava, ice, toxic, etc.) + +#### **Buildings** (structures specific to biome) +- Residential +- Commercial +- Special (churches, monuments, etc.) +- Ruins/destroyed versions + +#### **Props** (decorations, objects) +- Natural (trees, rocks, plants) +- Man-made (fences, signs, barrels) +- Interactive (doors, chests, switches) + +#### **NPCs** (characters in this biome) +- Civilians +- Workers +- Guards +- Unique characters + +#### **Enemies** (biome-specific threats) +- Common enemies +- Elite enemies +- Mini-bosses +- Biome boss + +--- + +## šŸ“Š **ASSET PRODUCTION PIPELINE:** + +### **Tool Setup:** + +#### **Generation:** +- Imagen AI (Google) for initial generation +- Stable Diffusion (local) as backup +- Manual pixel art for special cases + +#### **Processing:** +```python +# Automated pipeline script +def process_asset(original_path, category, biome): + """ + 1. Load 1024x1024 original + 2. Remove background + 3. Generate sprite size (32x32 or appropriate) + 4. Generate preview size (256x256) + 5. Save all versions with proper naming + 6. Place in correct biome folder + """ +``` + +#### **Organization:** +- Python scripts for batch processing +- CSV tracking spreads Ł„Ł„Ł…ŁˆŲ¬ŁˆŲÆŲ§ŲŖ assets +- Git for version control (LFS for large files) + +--- + +## šŸŽÆ **PRODUCTION PRIORITIES:** + +### **Phase Alpha (Kickstarter Demo):** +- āœ… Demo biome (farm area) - DONE +- āœ… Main characters (Kai) - DONE +- ā³ 1-2 enemy types +- ā³ Basic UI + +### **Phase Beta (18 Biomes):** + +**Priority Order:** +1. **Dolina Farm** (starting area) - 90% done +2. **Abandoned Town** (first major location) +3. **Dark Forest** (early danger zone) +4. **River Valley** (water mechanics) +5. **Mountain Pass** (elevation changes) +6. ... (remaining 13 biomes) + +### **Production Estimate:** + +**Per biome avg:** +- Terrain tiles: ~20 variants +- Buildings: ~15-30 types +- Props: ~40-60 objects +- NPCs: ~10-20 characters +- Enemies: ~5-10 types + +**Total per biome:** ~150-200 assets Ɨ 3 sizes = 450-600 files + +**18 biomes:** 8,100 - 10,800 files! šŸ˜… + +--- + +## šŸ’” **EFFICIENCY STRATEGIES:** + +### **1. TILE REUSE:** +- Share common terrain between similar biomes +- Variants (recolor, slight modifications) + +### **2. MODULAR BUILDINGS:** +- Base building + roof + door + windows +- Mix & match to create variations + +### **3. PALETTE SWAPS:** +- One base sprite → multiple color variants +- Day/night versions + +### **4. PROCEDURAL VARIATIONS:** +- Rotation +- Flip (horizontal/vertical) +- Scale slightly (95%-105%) + +### **5. BATCH GENERATION:** +- Generate 10-20 assets at once +- Similar prompts in sequence +- Automated processing pipeline + +--- + +## šŸ”§ **TOOLS NEEDED:** + +### **Asset Generation:** +- Google Imagen API āœ… (have this!) +- Stable Diffusion (optional backup) +- DALL-E (optional) + +### **Processing:** +- Python + PIL/Pillow āœ… +- ImageMagick (batch operations) +- rembg (background removal) āœ… + +### **Organization:** +- Custom Python scripts āœ… +- CSV/database for tracking +- Git + Git LFS + +### **Game Integration:** +- Tiled Map Editor āœ… +- Phaser.js āœ… +- Aseprite (for manual pixel art) + +--- + +## šŸ“ˆ **SCALABILITY PLAN:** + +### **Now (Demo):** +- 99 assets Ɨ 2 styles Ɨ 2 versions = ~400 files āœ… +- Manual organization āœ… + +### **Alpha (3 biomes):** +- ~450 assets Ɨ 3 biomes = 1,350 source assets +- ~4,000 total files (with size variants) +- **Semi-automated** processing + +### **Beta (18 biomes):** +- ~2,700 source assets +- ~8,000-10,000 total files +- **Fully automated** pipeline required! + +### **Full Release:** +- Add expansions, DLC, seasonal variants +- ~15,000+ files +- Database-driven asset management + +--- + +## šŸŽÆ **RECOMMENDED NEXT STEPS:** + +### **SHORT TERM (This week):** +1. āœ… Complete Kickstarter demo assets +2. ā³ Create Tiled demo map +3. ā³ Integrate into Phaser.js + +### **MEDIUM TERM (Next month):** +1. ā³ Finalize asset folder structure +2. ā³ Build automated processing pipeline +3. ā³ Start "Abandoned Town" biome +4. ā³ Generate ~200 town assets + +### **LONG TERM (Next 6 months):** +1. ā³ Complete all 18 biomes +2. ā³ Generate ~2,500-3,000 total assets +3. ā³ Build asset database/manager +4. ā³ Optimize & finalize + +--- + +## šŸ’¾ **STORAGE STRATEGY:** + +### **Local Development:** +``` +/assets/images/ + - Sprite versions (32Ɨ32) - ~500MB total + - Preview versions (256Ɨ256) - ~2GB total +``` + +### **Archive (externalno drive):** +``` +/originals/ + - Original 1024Ɨ1024 versions - ~50GB total + - Source PSDs/AI files + - Backups +``` + +### **Git Repository:** +``` +Git (normal): Scripts, docs, small assets +Git LFS: Large originals, PSDs +``` + +--- + +## šŸŽ® **PRODUCTION MANTRA:** + +> **"Generate big, store smart, use small"** + +1. **Generate:** Always at 1024Ɨ1024 (archive quality) +2. **Process:** Create needed sizes automatically +3. **Organize:** By biome → category → asset → sizes +4. **Use:** Optimal size for each purpose (32px in-game, 256px UI) +5. **Archive:** Keep originals forever (future-proof) + +--- + +**THIS STRUCTURE SCALES FROM 99 DEMO ASSETS TO 10,000+ FULL GAME!** šŸš€ + +--- + +**ŽELITE, DA IMPLEMENTIRAM TA SISTEM ZA DEMO ASSETS KOT PROOF-OF-CONCEPT?** šŸŽÆ diff --git a/docs/game_design/DEV_JOURNAL_2025_12_30.md b/docs/game_design/DEV_JOURNAL_2025_12_30.md index 4ec8909e3..1e030ab74 100644 --- a/docs/game_design/DEV_JOURNAL_2025_12_30.md +++ b/docs/game_design/DEV_JOURNAL_2025_12_30.md @@ -565,3 +565,37 @@ python3 scripts/remove_background.py assets/images/demo/ --recursive **Status:** READY FOR IMPLEMENTATION PHASE! ļæ½ **See you tomorrow for Tiled map building! šŸ—ŗļøāœØ** + +--- + +## šŸŒ™ **LATE NIGHT SESSION: PRODUCTION INFRASTRUCTURE** + +**Session Time:** 22:05 - 23:40 (1 hour 35 minutes) +**Focus:** Complete production setup, folder structure, mass generation prep + +### **šŸ—‚ļø MAJOR ACHIEVEMENT: 440 FOLDERS CREATED!** + +**Biomes (18):** 01_dolina_farm → 18_final_zone +**Characters (5):** kai, gronk, grok, ana, susi_dog +**NPCs (7 categories):** farmers, merchants, guards, etc. +**Items (54 subcategories!):** Complete organization +**TOTAL:** 440 organized folders! šŸ“ + +### **šŸ“‹ DOCUMENTATION:** +- MASTER_ASSET_MANIFEST.md (4,201 assets) +- MASTER_ASSET_PRODUCTION_STRATEGY.md +- COMPLETE_SYSTEMS_OVERVIEW.md (145 systems) + +### **šŸ“Š IMAGE STATISTICS:** +- **Demo transparent:** 285 PNGs +- **Demo white BG backup:** 285 PNGs +- **Other images:** 171 PNGs +- **TOTAL: 741 PNG files** (including animations!) šŸ–¼ļø + +### **SESSION STATS:** +**Folders Created:** 440 +**Documentation:** 60+ KB +**Total Project Time:** ~135 hours +**Total Images:** 741 PNGs āœ… + +**PRODUCTION INFRASTRUCTURE COMPLETE! šŸš€** diff --git a/maps/demo_project/QUICK_REFERENCE.md b/maps/demo_project/QUICK_REFERENCE.md new file mode 100644 index 000000000..78bfdfd20 --- /dev/null +++ b/maps/demo_project/QUICK_REFERENCE.md @@ -0,0 +1,213 @@ +# šŸ—ŗļø TILED DEMO PROJECT - QUICK REFERENCE + +**Location:** `maps/demo_project/` +**Main File:** `demo_micro_farm.tmx` +**Status:** āœ… Template Ready! + +--- + +## ⚔ QUICK START (5 MINUTES!) + +### **1. OPEN IN TILED:** +```bash +# Launch Tiled and open the map +tiled maps/demo_project/demo_micro_farm.tmx +``` + +**What you'll see:** +- āœ… 8Ɨ8 map filled with grass +- āœ… 2Ɨ2 tilled soil patch (rows 1-2, cols 1-2) +- āœ… Tent at top-right (6,1) +- āœ… Decorations placed (tree, rock, campfire) +- āœ… Spawn points configured +- āœ… Collision boxes ready + +--- + +## šŸ“š LAYERS (7 Total) + +| # | Layer Name | Type | Purpose | +|---|------------|------|---------| +| 7 | **Collision** | Object | Invisible collision boxes | +| 6 | **Spawns** | Object | Player & NPC spawn points | +| 5 | **Decorations** | Object | Campfire, tree, rock | +| 4 | **Buildings** | Object | Tent | +| 3 | **Crops** | Tile | Wheat growth (dynamic) | +| 2 | **Tilled Soil** | Tile | Farmable 2Ɨ2 area | +| 1 | **Base Terrain** | Tile | Grass background | + +**Order:** 1 is at bottom, 7 at top! + +--- + +## šŸŽØ TILESETS (3 Total) + +### **1. terrain_demo.tsx** +- Grass, dirt, tilled soil (dry/wet) +- **4 tiles**, 64Ɨ64 each + +### **2. crops_demo.tsx** +- Wheat stages 0-4 +- **5 tiles**, 64Ɨ64 each +- Has growth properties! + +### **3. objects_demo.tsx** +- Tent, campfire, tree, rock +- **4 objects**, variable sizes +- Has collision properties! + +--- + +## šŸ‘¤ PLAYER SPAWN + +**Location:** Tile (2,5) = Pixel (128, 320) +**Layer:** Spawns +**Name:** `kai_spawn` +**Type:** `player` + +**Properties:** +- `facing = "south"` +- `speed = 160` +- `health = 100` + +--- + +## 🧟 NPC SPAWN + +**Location:** Tile (4,4) = Pixel (256, 256) +**Layer:** Spawns +**Name:** `zombie_1` +**Type:** `npc_zombie` + +**Properties:** +- `ai = "idle_dig_loop"` +- `speed = 0` +- `health = 50` + +--- + +## šŸ•ļø OBJECTS QUICK REF + +| Object | Layer | Tile | Pixel | Collision | +|--------|-------|------|-------|-----------| +| **Tent** | Buildings | (6,1) | (384,64) | āœ… Yes | +| **Campfire** | Decorations | (6,5) | (384,320) | āŒ No | +| **Tree** | Decorations | (0,0) | (0,0) | āœ… Yes | +| **Rock** | Decorations | (4,0) | (256,0) | āœ… Yes | + +--- + +## 🌾 FARMABLE AREA + +**Tiles:** 2Ɨ2 = 4 tiles +**Positions:** +- (1,1) = Pixel (64, 64) +- (2,1) = Pixel (128, 64) +- (1,2) = Pixel (64, 128) +- (2,2) = Pixel (128, 128) + +**All have:** `farmable = true` + +--- + +## šŸ’¾ EXPORT TO JSON + +1. Open map in Tiled +2. `File → Export As...` +3. Format: `JSON map files (*.json)` +4. Save as: `demo_micro_farm.json` (same folder) +5. Done! Ready for Phaser.js + +--- + +## šŸ› ļø CUSTOMIZE + +### **Change Grass to Dirt:** +1. Select "Base Terrain" layer +2. Select dirt tile (id=2) from terrain tileset +3. Press `B` (Brush) and paint + +### **Add More Crops:** +1. Select "Crops" layer +2. Select wheat stage (0-4) from crops tileset +3. Paint on tilled soil tiles + +### **Move Objects:** +1. Select object's layer (Buildings/Decorations) +2. Click object to select +3. Drag to new position + +### **Add New Spawn:** +1. Select "Spawns" layer +2. Press `R` (Insert Rectangle) +3. Draw 32Ɨ32 box +4. Right-click → Object Properties +5. Set name, type, custom properties + +--- + +## šŸŽ® PHASER.JS LOADING + +```javascript +// In preload(): +this.load.tilemapTiledJSON( + 'demo_map', + 'maps/demo_project/demo_micro_farm.json' +); + +// In create(): +const map = this.make.tilemap({ key: 'demo_map' }); +const terrain = map.addTilesetImage('terrain_demo'); +const baseLayer = map.createLayer('Base Terrain', terrain); +``` + +--- + +## āœ… VERIFY CHECKLIST + +- [ ] Map opens in Tiled without errors +- [ ] All 3 tilesets load correctly +- [ ] All images display (no red X's) +- [ ] Spawn points have properties +- [ ] Collision layer has 3 boxes +- [ ] Can export to JSON successfully +- [ ] JSON file < 50KB + +**If all checked:** Ready for Phaser! šŸŽ® + +--- + +## šŸ†˜ TROUBLESHOOTING + +**Tilesets not loading?** +- Check image paths in .tsx files +- Make sure paths are relative: `../../assets/` + +**Can't see objects?** +- Check if correct layer is selected +- Objects only show on Object layers + +**Export fails?** +- Make sure map is saved first (Ctrl+S) +- Check for missing tileset references + +**Collision not working in game?** +- Verify collision layer exists +- Check object type = "collision" + +--- + +## šŸ“– FULL DOCS + +**Complete guide:** `/maps/demo_project/README.md` +**Implementation:** `/docs/KICKSTARTER_DEMO_IMPLEMENTATION_GUIDE.md` + +--- + +**MAP READY TO USE! šŸ—ŗļøāœØ** + +**Time to edit:** 0 min (already complete!) +**Time to export:** 30 seconds +**Time to integrate:** ~1 hour in Phaser + +**ENJOY BUILDING! šŸŽ®** diff --git a/maps/demo_project/README.md b/maps/demo_project/README.md new file mode 100644 index 000000000..b2a170581 --- /dev/null +++ b/maps/demo_project/README.md @@ -0,0 +1,494 @@ +# šŸ—ŗļø DOLINASMRTI DEMO PROJECT - TILED + +**Project Name:** Demo Project +**Map Name:** Micro Farm 8Ɨ8 +**Tile Size:** 64Ɨ64 pixels +**Map Size:** 512Ɨ512 pixels (8Ɨ8 tiles) +**Format:** Orthogonal +**Created:** Dec 30, 2025 + +--- + +## šŸ“ PROJECT STRUCTURE + +``` +maps/demo_project/ +ā”œā”€ā”€ README.md ← This file +ā”œā”€ā”€ demo_micro_farm.tmx ← Main map file (Tiled native) +ā”œā”€ā”€ demo_micro_farm.json ← Exported JSON (for Phaser.js) +ā”œā”€ā”€ tilesets/ ← All tileset definitions +│ ā”œā”€ā”€ terrain_demo.tsx ← Grass, dirt, tilled soil +│ ā”œā”€ā”€ crops_demo.tsx ← Wheat growth stages +│ └── objects_demo.tsx ← Buildings, decorations +ā”œā”€ā”€ templates/ ← Object templates +│ ā”œā”€ā”€ player_spawn.tx ← Kai spawn template +│ ā”œā”€ā”€ npc_spawn.tx ← NPC spawn template +│ └── collision_box.tx ← Collision template +└── objects/ ← Custom object types + └── object_types.json ← Object type definitions +``` + +--- + +## šŸŽØ TILESETS + +### **1. TERRAIN (terrain_demo.tsx)** + +**Type:** Collection of Images +**Tile Size:** 64Ɨ64 +**Count:** 4 tiles + +**Tiles:** +1. `grass_tile_styleA.png` - Base terrain +2. `dirt_tile_styleA.png` - Path variation +3. `tilled_dry_styleA.png` - Farmable dry soil +4. `tilled_watered_styleA.png` - Farmable wet soil + +**Usage:** Base terrain layer, tilled soil layer + +--- + +### **2. CROPS (crops_demo.tsx)** + +**Type:** Collection of Images +**Tile Size:** 64Ɨ64 +**Count:** 5 tiles + +**Tiles:** +1. `wheat_stage0_styleA.png` - Just planted (brown mound) +2. `wheat_stage1_styleA.png` - Seedling (tiny sprout) +3. `wheat_stage2_styleA.png` - Young plant (4-5 leaves) +4. `wheat_stage3_styleA.png` - Mature plant (full stalks) +5. `wheat_stage4_styleA.png` - Ready to harvest (golden) + +**Usage:** Crops layer (changes during gameplay) + +--- + +### **3. OBJECTS (objects_demo.tsx)** + +**Type:** Collection of Images +**Variable Sizes** + +**Buildings:** +1. `tent_styleA.png` (64Ɨ64) - Player base + +**Decorations:** +2. `campfire_styleA.png` (64Ɨ64) - Fire animation point +3. `dead_tree_styleA.png` (64Ɨ96) - Tall tree +4. `rock_styleA.png` (48Ɨ32) - Small rock + +**Usage:** Buildings layer, Decorations layer + +--- + +## šŸ“š LAYERS (Bottom to Top) + +### **1. Base Terrain** (Tile Layer) +- **Purpose:** Ground tiles (grass, dirt) +- **Tileset:** terrain_demo +- **Fill:** Entire 8Ɨ8 with grass +- **Properties:** None +- **Opacity:** 100% + +### **2. Tilled Soil** (Tile Layer) +- **Purpose:** Farmable areas +- **Tileset:** terrain_demo +- **Location:** 2Ɨ2 patch at (1,1) +- **Properties:** + - `farmable = true` + - `watered = false` (default) + +### **3. Crops** (Tile Layer) +- **Purpose:** Growing plants +- **Tileset:** crops_demo +- **Dynamic:** Yes (changes via code) +- **Initial:** Empty (or stage 0 for demo) + +### **4. Buildings** (Object Layer) +- **Purpose:** Structures with collision +- **Objects:** + - Tent at (6,1) - Type: `building` +- **Properties:** + - `collision = true` + - `interactable = false/true` + +### **5. Decorations** (Object Layer) +- **Purpose:** Visual elements +- **Objects:** + - Campfire at (6,5) - Type: `decoration` + - Dead tree at (0,0) - Type: `decoration` + - Rock at (4,0) - Type: `decoration` +- **Properties:** + - `collision = false` (most) + +### **6. Spawns** (Object Layer) +- **Purpose:** Entity spawn points +- **Objects:** + - Kai spawn at (2,5) - Type: `player` + - Zombie spawn at (4,4) - Type: `npc_zombie` +- **Properties (Kai):** + - `name = "kai_spawn"` + - `type = "player"` + - `facing = "south"` +- **Properties (Zombie):** + - `name = "zombie_1"` + - `type = "npc_zombie"` + - `ai = "idle_dig_loop"` + +### **7. Collision** (Object Layer) +- **Purpose:** Invisible collision boundaries +- **Objects:** + - Rectangle around tent + - Rectangle around tree + - Rectangle around rock +- **Properties:** + - `type = "collision"` +- **Visible:** No (for debugging only) + +--- + +## šŸ‘¤ PLAYER (Kai) + +### **Spawn Point** +- **Layer:** Spawns (Object Layer) +- **Type:** Rectangle (32Ɨ32) +- **Position:** Tile (2,5) = Pixel (128, 320) +- **Name:** `kai_spawn` + +### **Custom Properties:** +``` +type (string): "player" +facing (string): "south" +speed (int): 160 +health (int): 100 +``` + +### **Gameplay:** +- Spawns facing south (toward camera) +- Can move in 4 directions (WASD) +- Interacts with farmable tiles (E key) +- Waters crops (SPACE key) +- Harvests mature crops (H key) + +--- + +## 🧟 NPC - ZOMBIE WORKER + +### **Spawn Point** +- **Layer:** Spawns +- **Type:** Rectangle (32Ɨ32) +- **Position:** Tile (4,4) = Pixel (256, 256) +- **Name:** `zombie_1` + +### **Custom Properties:** +``` +type (string): "npc_zombie" +ai (string): "idle_dig_loop" +speed (int): 0 (stationary) +health (int): 50 +``` + +### **AI Behavior:** +- Idle for 5 seconds +- Play dig animation (1 second) +- Return to idle +- Loop forever + +--- + +## šŸ•ļø BUILDINGS + +### **TENT (Player Base)** +- **Layer:** Buildings +- **Position:** Tile (6,1) = Pixel (384, 64) +- **Size:** 64Ɨ64 +- **Type:** `building` + +**Properties:** +``` +name (string): "tent" +type (string): "building" +collision (bool): true +interactable (bool): false +description (string): "Your base camp. A place to rest." +``` + +**Collision:** Yes (player cannot walk through) + +--- + +## šŸŽØ DECORATIONS + +### **1. CAMPFIRE** +- **Position:** Tile (6,5) = Pixel (384, 320) +- **Size:** 64Ɨ64 +- **Type:** `decoration` + +**Properties:** +``` +name (string): "campfire" +animated (bool): true (future: flickering) +light_radius (int): 128 (future: lighting) +``` + +### **2. DEAD TREE** +- **Position:** Tile (0,0) = Pixel (0, 0) +- **Size:** 64Ɨ96 (tall) +- **Type:** `decoration` + +**Properties:** +``` +name (string): "dead_tree" +collision (bool): true +height (int): 96 +``` + +### **3. ROCK** +- **Position:** Tile (4,0) = Pixel (256, 0) +- **Size:** 48Ɨ32 +- **Type:** `decoration` + +**Properties:** +``` +name (string): "rock" +collision (bool): true +``` + +--- + +## 🚧 COLLISION SYSTEM + +### **Collision Boxes** +All on **Collision** layer (Object Layer) + +**1. Tent Collision** +- Rectangle at (384, 64) +- Size: 64Ɨ64 +- Type: `collision` + +**2. Tree Collision** +- Rectangle at (0, 0) +- Size: 48Ɨ64 (narrower than sprite) +- Type: `collision` + +**3. Rock Collision** +- Rectangle at (256, 0) +- Size: 40Ɨ28 (slightly smaller) +- Type: `collision` + +**In Phaser.js:** +```javascript +// Add all collision objects to static group +const collisionLayer = map.getObjectLayer('Collision'); +this.collisionGroup = this.physics.add.staticGroup(); + +collisionLayer.objects.forEach(obj => { + const rect = this.add.rectangle( + obj.x + obj.width/2, + obj.y + obj.height/2, + obj.width, obj.height, + 0xff0000, 0 // Invisible + ); + this.physics.add.existing(rect, true); + this.collisionGroup.add(rect); +}); + +// Collide player with group +this.physics.add.collider(this.player, this.collisionGroup); +``` + +--- + +## 🌾 FARMABLE TILES + +### **Tilled Soil Patch** +- **Layer:** Tilled Soil +- **Tiles:** 2Ɨ2 = 4 tiles +- **Position:** Rows 1-2, Columns 1-2 +- **Pixels:** (64,64) to (192,192) + +### **Tile Properties:** +Each tilled soil tile has: +``` +farmable (bool): true +watered (bool): false (default) +planted (bool): false (default) +crop_type (string): "" (empty until planted) +growth_stage (int): -1 (not planted) +``` + +### **Farming Code (Phaser.js):** +```javascript +// Track farmable tiles +this.farmTiles = [ + { x: 1, y: 1, worldX: 96, worldY: 96, planted: false }, + { x: 2, y: 1, worldX: 160, worldY: 96, planted: false }, + { x: 1, y: 2, worldX: 96, worldY: 160, planted: false }, + { x: 2, y: 2, worldX: 160, worldY: 160, planted: false } +]; +``` + +--- + +## šŸŽ® GAMEPLAY FLOW + +### **Demo Script Sequence:** + +**0:00 - Tutorial Start** +- Text: "Use WASD to move!" +- Kai can walk around + +**0:05 - Show Zombie** +- Camera pans to zombie at (4,4) +- Text: "Workers till the fields..." +- Zombie plays dig animation + +**0:10 - Back to Player** +- Camera pans back to Kai +- Text: "Press E near soil to plant seeds!" + +**0:15 - Farming Tutorial** +- Player plants wheat (manual or auto) +- Text: "Press SPACE to water!" +- Player waters crop + +**0:20 - Growth Timelapse** +- Wheat grows: stage 0 → 1 → 2 → 3 → 4 +- 2 seconds per stage (10 seconds total) +- Text: "Watch it grow!" + +**0:30 - Harvest** +- Text: "Press H to harvest!" +- Wheat disappears +- Inventory UI shows +1 wheat bundle + +**0:35 - Style Switch** +- Everything switches Style A → Style B +- Text: "Two art styles in one game!" + +**0:40 - Ending** +- Fade to black +- Text: "This is just 1% of DolinaSmrti..." +- Text: "Support us on Kickstarter!" + +**Total Length:** 45 seconds (repeatable) + +--- + +## šŸ“ MAP LAYOUT REFERENCE + +``` + 0 1 2 3 4 5 6 7 + ā”Œā”€ā”€ā”¬ā”€ā”€ā”¬ā”€ā”€ā”¬ā”€ā”€ā”¬ā”€ā”€ā”¬ā”€ā”€ā”¬ā”€ā”€ā”¬ā”€ā”€ā” +0 ā”‚šŸŒ³ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŖØā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚ Tree at (0,0), Rock at (4,0) + ā”œā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¤ +1 ā”‚šŸŒ±ā”‚šŸŸ«ā”‚šŸŸ«ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚ā›ŗā”‚šŸŒ±ā”‚ Tilled soil, Tent at (6,1) + ā”œā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¤ +2 ā”‚šŸŒ±ā”‚šŸŸ«ā”‚šŸŸ«ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚ Tilled soil + ā”œā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¤ +3 ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚ Open grass + ā”œā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¤ +4 ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸ§Ÿā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚ Zombie at (4,4) + ā”œā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¤ +5 ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸ‘¤ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸ”„ā”‚šŸŒ±ā”‚ Kai at (2,5), Campfire (6,5) + ā”œā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¤ +6 ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚ Open grass + ā”œā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¼ā”€ā”€ā”¤ +7 ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚šŸŒ±ā”‚ Open grass + ā””ā”€ā”€ā”“ā”€ā”€ā”“ā”€ā”€ā”“ā”€ā”€ā”“ā”€ā”€ā”“ā”€ā”€ā”“ā”€ā”€ā”“ā”€ā”€ā”˜ +``` + +**Legend:** +- 🌱 = Grass tile +- 🟫 = Tilled soil (farmable) +- šŸ‘¤ = Kai spawn point +- 🧟 = Zombie spawn +- ⛺ = Tent (building) +- šŸ”„ = Campfire (decoration) +- 🌳 = Dead tree (decoration) +- 🪨 = Rock (decoration) + +--- + +## šŸ”§ EXPORT SETTINGS + +### **For Phaser.js:** + +1. **File → Export As...** +2. Format: `JSON map files (*.json)` +3. Settings: + - Embed tilesets: `No` (external) + - Resolve object types: `Yes` + - Detach templates: `No` +4. Save to: `maps/demo_project/demo_micro_farm.json` + +### **JSON Structure:** +```json +{ + "compressionlevel": -1, + "height": 8, + "width": 8, + "tileheight": 64, + "tilewidth": 64, + "layers": [...], + "tilesets": [...], + "type": "map", + "version": "1.10" +} +``` + +--- + +## šŸ“‹ QUICK BUILD CHECKLIST + +- [ ] Create new map (8Ɨ8, 64Ɨ64 tiles) +- [ ] Add terrain tileset (4 tiles) +- [ ] Add crops tileset (5 tiles) +- [ ] Add objects tileset (4 objects) +- [ ] Create 7 layers (correct order!) +- [ ] Fill Base Terrain with grass +- [ ] Paint 2Ɨ2 tilled soil +- [ ] Place tent building +- [ ] Place 3 decorations +- [ ] Add Kai spawn point +- [ ] Add zombie spawn point +- [ ] Create collision boxes +- [ ] Set all custom properties +- [ ] Save as .tmx +- [ ] Export as .json +- [ ] Test in Phaser.js + +**Time:** ~2 hours ā˜• + +--- + +## šŸŽÆ SUCCESS CRITERIA + +**Map is ready when:** +1. āœ… All tilesets load without errors +2. āœ… Layers in correct order (terrain at bottom) +3. āœ… All spawns have custom properties +4. āœ… Collision objects properly placed +5. āœ… JSON exports successfully +6. āœ… File size < 50KB (lightweight) +7. āœ… No missing tile references + +--- + +## šŸš€ NEXT STEPS AFTER MAP + +1. Open Phaser.js project +2. Load `demo_micro_farm.json` +3. Create tilesets in Phaser +4. Spawn player at kai_spawn +5. Add NPC at zombie spawn +6. Test collision +7. Implement farming mechanics +8. Add UI overlay + +**See:** `docs/KICKSTARTER_DEMO_IMPLEMENTATION_GUIDE.md` + +--- + +**HAPPY MAPPING! šŸ—ŗļøāœØ** diff --git a/maps/demo_project/campfire.tsx b/maps/demo_project/campfire.tsx new file mode 100644 index 000000000..573435c92 --- /dev/null +++ b/maps/demo_project/campfire.tsx @@ -0,0 +1,4 @@ + + + + diff --git a/maps/demo_project/demo_micro_farm.tmx b/maps/demo_project/demo_micro_farm.tmx new file mode 100644 index 000000000..dd775c9c4 --- /dev/null +++ b/maps/demo_project/demo_micro_farm.tmx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + +1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1 + + + + + + +0,0,0,0,0,0,0,0, +0,3,3,0,0,0,0,0, +0,3,3,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0 + + + + + + +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/maps/demo_project/kai_survivor.tsx b/maps/demo_project/kai_survivor.tsx new file mode 100644 index 000000000..d084c778c --- /dev/null +++ b/maps/demo_project/kai_survivor.tsx @@ -0,0 +1,4 @@ + + + + diff --git a/maps/demo_project/sign_warning.tsx b/maps/demo_project/sign_warning.tsx new file mode 100644 index 000000000..a1a96f733 --- /dev/null +++ b/maps/demo_project/sign_warning.tsx @@ -0,0 +1,4 @@ + + + + diff --git a/maps/demo_project/tilesets/crops_demo.tsx b/maps/demo_project/tilesets/crops_demo.tsx new file mode 100644 index 000000000..7a24d27ad --- /dev/null +++ b/maps/demo_project/tilesets/crops_demo.tsx @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/maps/demo_project/tilesets/objects_demo.tsx b/maps/demo_project/tilesets/objects_demo.tsx new file mode 100644 index 000000000..6d01b57f6 --- /dev/null +++ b/maps/demo_project/tilesets/objects_demo.tsx @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/maps/demo_project/tilesets/terrain_demo.tsx b/maps/demo_project/tilesets/terrain_demo.tsx new file mode 100644 index 000000000..152dadd6f --- /dev/null +++ b/maps/demo_project/tilesets/terrain_demo.tsx @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/maps/demo_whitebg/README.md b/maps/demo_whitebg/README.md new file mode 100644 index 000000000..6cae58a93 --- /dev/null +++ b/maps/demo_whitebg/README.md @@ -0,0 +1,122 @@ +# šŸ—ŗļø WHITE BACKGROUND VERSION - TILED MAP + +**Location:** `maps/demo_whitebg/` +**Map File:** `demo_whitebg.tmx` +**Assets:** Using `demo_originals_with_white_bg/` folder +**Status:** āœ… READY! + +--- + +## šŸ“ PROJEKT STRUKTURA: + +``` +maps/demo_whitebg/ +ā”œā”€ā”€ demo_whitebg.tmx āœ… Main map (white BG) +└── tilesets/ + ā”œā”€ā”€ terrain_whitebg.tsx āœ… Grass, dirt, tilled soil + ā”œā”€ā”€ crops_whitebg.tsx āœ… Wheat stages 0-4 + └── objects_whitebg.tsx āœ… Tent, campfire, tree, rock +``` + +--- + +## šŸŽØ ASSET SOURCES: + +**All assets from:** +`assets/images/demo_originals_with_white_bg/` + +**Folders used:** +- `/terrain/` - Grass, dirt, tilled soil tiles +- `/crops/` - Wheat growth stages +- `/buildings/` - Tent +- `/environment/` - Campfire, dead tree, rock + +**Original files:** Backup with WHITE backgrounds (before transparency removal) + +--- + +## šŸ—ŗļø MAP LAYOUT: + +**Same as transparent version:** +- 8Ɨ8 tiles (512Ɨ512 pixels) +- 7 layers configured +- Grass terrain base +- 2Ɨ2 tilled soil at (1,1) +- Tent, campfire, tree, rock placed +- Kai spawn at (2,5) +- Zombie spawn at (4,4) +- Collision boxes ready + +**Difference:** Tiles have white backgrounds instead of transparency! + +--- + +## šŸ’” WHY USE WHITE BACKGROUND VERSION? + +**Good for:** +- āœ… Tiled preview (easier to see edges) +- āœ… Quick mockups without transparency issues +- āœ… Testing layout without alpha channel +- āœ… Easier sprite boundary visualization + +**For production:** +- Use transparent version (better for overlapping) +- White BG good for development/testing + +--- + +## šŸ”„ BOTH VERSIONS AVAILABLE: + +### **Version 1: Transparent (Production)** +- Location: `maps/demo_project/` +- Assets: `assets/images/demo/` (RGBA transparent) +- Use for: Final game, overlapping sprites + +### **Version 2: White BG (Development)** ← YOU ARE HERE +- Location: `maps/demo_whitebg/` +- Assets: `assets/images/demo_originals_with_white_bg/` +- Use for: Testing, quick edits, Tiled work + +--- + +## šŸ“– OPEN IN TILED: + +```bash +tiled maps/demo_whitebg/demo_whitebg.tmx +``` + +**Should be OPEN NOW!** āœ… + +--- + +## šŸ“¤ EXPORT (if needed): + +```bash +# In Tiled: +File → Export As... → demo_whitebg.json +``` + +--- + +## āœ… KAJ VIDITE ZDAJ: + +**V Tiled editor:** +- Map with white background tiles +- Easier to see tile boundaries! +- Same layout as transparent version +- All objects in same positions + +**Layers (same as before):** +1. Base Terrain (grass tiles) +2. Tilled Soil (2Ɨ2 patch) +3. Crops (empty) +4. Buildings (tent) +5. Decorations (campfire, tree, rock) +6. Spawns (Kai, zombie) +7. Collision (3 boxes) + +--- + +**UŽIVAJTE! šŸ—ŗļøāœØ** + +**White backgrounds make it easier to see sprite edges in Tiled!** diff --git a/maps/demo_whitebg/campfire.tsx b/maps/demo_whitebg/campfire.tsx new file mode 100644 index 000000000..273815b85 --- /dev/null +++ b/maps/demo_whitebg/campfire.tsx @@ -0,0 +1,4 @@ + + + + diff --git a/maps/demo_whitebg/demo_whitebg.tmx b/maps/demo_whitebg/demo_whitebg.tmx new file mode 100644 index 000000000..42676a2c1 --- /dev/null +++ b/maps/demo_whitebg/demo_whitebg.tmx @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + +1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1 + + + + + + +0,0,0,0,0,0,0,0, +0,3,3,0,0,0,0,0, +0,3,3,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0 + + + + + + +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/maps/demo_whitebg/tilesets/crops_whitebg.tsx b/maps/demo_whitebg/tilesets/crops_whitebg.tsx new file mode 100644 index 000000000..a6b3f9d49 --- /dev/null +++ b/maps/demo_whitebg/tilesets/crops_whitebg.tsx @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/maps/demo_whitebg/tilesets/objects_whitebg.tsx b/maps/demo_whitebg/tilesets/objects_whitebg.tsx new file mode 100644 index 000000000..c7b728ca8 --- /dev/null +++ b/maps/demo_whitebg/tilesets/objects_whitebg.tsx @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/maps/demo_whitebg/tilesets/terrain_whitebg.tsx b/maps/demo_whitebg/tilesets/terrain_whitebg.tsx new file mode 100644 index 000000000..288f33489 --- /dev/null +++ b/maps/demo_whitebg/tilesets/terrain_whitebg.tsx @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scripts/create_full_structure.sh b/scripts/create_full_structure.sh new file mode 100755 index 000000000..8d5131f8e --- /dev/null +++ b/scripts/create_full_structure.sh @@ -0,0 +1,200 @@ +#!/bin/bash +# Complete folder structure creator for DolinaSmrti +# Creates ~150+ organized folders for all game assets + +cd /Users/davidkotnik/repos/novafarma/assets/images + +echo "šŸ—‚ļø Creating complete asset structure..." + +# ======================================== +# BIOMES (18 total) +# ======================================== + +# 01. Dolina Farm (Starting) +mkdir -p biomes/01_dolina_farm/{terrain,buildings,props,crops,npcs,enemies} + +# 02. Dark Forest +mkdir -p biomes/02_dark_forest/{terrain,trees,buildings,props,npcs,enemies} + +# 03. Abandoned Town +mkdir -p biomes/03_abandoned_town/{terrain,buildings,streets,props,npcs,enemies} + +# 04. River Valley +mkdir -p biomes/04_river_valley/{terrain,water,buildings,props,npcs,enemies} + +# 05. Mountain Pass +mkdir -p biomes/05_mountain_pass/{terrain,rocks,buildings,props,npcs,enemies} + +# 06. Swamp +mkdir -p biomes/06_swamp/{terrain,water,buildings,props,plants,npcs,enemies} + +# 07. Desert +mkdir -p biomes/07_desert/{terrain,buildings,props,npcs,enemies} + +# 08. Snow Zone +mkdir -p biomes/08_snow_zone/{terrain,ice,buildings,props,npcs,enemies} + +# 09. Underground +mkdir -p biomes/09_underground/{terrain,crystals,buildings,props,npcs,enemies} + +# 10. Magical Grove +mkdir -p biomes/10_magical_grove/{terrain,magical_trees,buildings,props,plants,npcs,enemies} + +# 11. Ancient Ruins +mkdir -p biomes/11_ancient_ruins/{terrain,structures,buildings,props,npcs,enemies} + +# 12. Coastal Area +mkdir -p biomes/12_coastal_area/{terrain,water,buildings,props,npcs,enemies} + +# 13. Volcano +mkdir -p biomes/13_volcano/{terrain,lava,buildings,props,npcs,enemies} + +# 14. Crystal Caves +mkdir -p biomes/14_crystal_caves/{terrain,crystals,buildings,props,npcs,enemies} + +# 15. Floating Islands +mkdir -p biomes/15_floating_islands/{terrain,sky,buildings,props,npcs,enemies} + +# 16. Corrupted Lands +mkdir -p biomes/16_corrupted_lands/{terrain,corruption,buildings,props,npcs,enemies} + +# 17. Spirit Realm +mkdir -p biomes/17_spirit_realm/{terrain,ethereal,buildings,props,npcs,enemies} + +# 18. Final Zone +mkdir -p biomes/18_final_zone/{terrain,epic,buildings,props,npcs,enemies} + +# ======================================== +# CHARACTERS (Main) +# ======================================== + +mkdir -p characters/kai/{idle,walk,run,actions,combat,portraits,emotions} +mkdir -p characters/gronk/{idle,walk,run,actions,combat,portraits,emotions} +mkdir -p characters/grok/{idle,walk,run,actions,combat,portraits,emotions} +mkdir -p characters/ana/{idle,walk,run,actions,portraits,emotions,cutscenes} +mkdir -p characters/susi_dog/{idle,walk,run,actions} + +# ======================================== +# NPCS (Generic categories) +# ======================================== + +mkdir -p npcs/farmers/{idle,walk,work,portraits} +mkdir -p npcs/merchants/{idle,walk,work,portraits} +mkdir -p npcs/guards/{idle,walk,patrol,portraits} +mkdir -p npcs/civilians/{idle,walk,work,portraits} +mkdir -p npcs/special_characters/{idle,walk,unique,portraits} +mkdir -p npcs/children/{idle,walk,play,portraits} +mkdir -p npcs/elderly/{idle,walk,sit,portraits} + +# ======================================== +# ENEMIES (All types) +# ======================================== + +mkdir -p enemies/zombies/{common,soldier,mutant,boss} +mkdir -p enemies/animals/{wolves,bears,deer,birds} +mkdir -p enemies/mutants/{small,medium,large,boss} +mkdir -p enemies/magical_creatures/{sprites,elementals,wraiths,boss} +mkdir -p enemies/corrupted/{plants,animals,humanoids,boss} +mkdir -p enemies/bosses/{forest,town,mountain,desert,final} + +# ======================================== +# ITEMS (All categories) +# ======================================== + +# Tools +mkdir -p items/tools/{farming,combat,magic,fishing,mining} + +# Seeds +mkdir -p items/seeds/{crops,flowers,trees,magical} + +# Food +mkdir -p items/food/{raw,cooked,baked,preserved,special} + +# Resources +mkdir -p items/resources/{wood,stone,ore,gems,magical} + +# Equipment +mkdir -p items/equipment/{weapons,armor,accessories,special} + +# Magical +mkdir -p items/magical/{spells,scrolls,potions,artifacts,crystals} + +# Crafting +mkdir -p items/crafting/{materials,components,reagents} + +# ======================================== +# UI (Interface elements) +# ======================================== + +# HUD +mkdir -p ui/hud/{health,stamina,mana,buffs,debuffs} + +# Menus +mkdir -p ui/menus/{main,inventory,crafting,skills,quests,map,settings} + +# Dialogue +mkdir -p ui/dialogue/{boxes,portraits,buttons,backgrounds} + +# Icons +mkdir -p ui/icons/{items,skills,status,achievements,quest_markers} + +# Panels +mkdir -p ui/panels/{stats,equipment,social,achievements} + +# Buttons +mkdir -p ui/buttons/{normal,hover,pressed,disabled} + +# ======================================== +# EFFECTS (Visual effects) +# ======================================== + +# Magic +mkdir -p effects/magic/{fire,water,earth,air,dark,light,combo} + +# Weather +mkdir -p effects/weather/{rain,snow,fog,storm,wind} + +# Particles +mkdir -p effects/particles/{sparkles,smoke,dust,blood,energy} + +# Animations +mkdir -p effects/animations/{explosions,impacts,transitions,auras,shields} + +# Environmental +mkdir -p effects/environmental/{day_night,seasons,lighting} + +# ======================================== +# BUILDINGS (For all biomes) +# ======================================== + +mkdir -p buildings/residential/{houses,apartments,mansions} +mkdir -p buildings/commercial/{shops,markets,taverns} +mkdir -p buildings/industrial/{barns,mills,workshops} +mkdir -p buildings/special/{churches,schools,hospitals} +mkdir -p buildings/ruins/{damaged,destroyed,ancient} + +# ======================================== +# PROPS (Environmental objects) +# ======================================== + +mkdir -p props/natural/{rocks,trees,plants,water_features} +mkdir -p props/furniture/{indoor,outdoor} +mkdir -p props/decorative/{statues,signs,paintings} +mkdir -p props/interactive/{doors,chests,switches,levers} + +# ======================================== +# CUTSCENES +# ======================================== + +mkdir -p cutscenes/opening/{frames,backgrounds} +mkdir -p cutscenes/story/{act1,act2,act3} +mkdir -p cutscenes/ending/{frames,backgrounds} + +echo "" +echo "āœ… COMPLETE! Structure created:" +echo "" +find . -type d -maxdepth 1 | wc -l | xargs echo " Main categories:" +find . -type d -maxdepth 2 | wc -l | xargs echo " Subcategories:" +find . -type d -maxdepth 3 | wc -l | xargs echo " Total folders:" +echo "" +echo "šŸŽØ READY FOR MASS GENERATION!" diff --git a/scripts/generate_and_process.py b/scripts/generate_and_process.py index d4377c1c2..6e25f2677 100644 --- a/scripts/generate_and_process.py +++ b/scripts/generate_and_process.py @@ -7,7 +7,7 @@ DolinaSmrti Asset Production Pipeline import os import time import shutil -from pathlib import Path +from pathlib import Pathdata:image/jpeg;base64,/9j/2wCEAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSgBBwcHCggKEwoKEygaFhooKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKP/AABEIAoACgAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APqeiiikIKKKWgBKMUtFACUUppKACilooASilooASilooASiiloAQCilooASilooASjFLRQAmKMUtFACUUtFACUUtFACUUtFACUUtFAWEoopaAENFLRQAlGOaWigBMUYpaKAEoxS0UAJiilooASilooASilooASilpKACjFLRQAlFL2ooAQ0UtJQAYopaKAEooooAMUYopaAEopaKAEoo7UtACYoxS0UWASilooASilpKACilooASilooAKKKWmMQ0lLSUAFFFFIQUtJS0xiUtFFABSUtGKACkpcUUCCiiigYUUUUAJS0UUAFFFFAhKKWigYUUUUCEpaKSgYUUtFIAooopgJS0UUgCkpaKYCUtFFIApKWjFMBKWiigAooopCEpaKKYwpKWjFABRRRQAUUUUAFFGKKACiiigAooooAKSlxRQAUUUUAJS0UUAFFFFIApKWigApKWjFAhKWiigYUlLRTAKKKKQBRRiimAUUUfhQAUUUUABpKWkpAFFFFAgopaKYBRSUtIYUUUUwCiiigAooooAKKWg0AJRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFLSUAFFFFABRQKKAFoozSUAFFFFABRRS0gEopaSmAUUUUAFFFFABRS0lABRRRQAUUCloASiiigAo5oooAKKWigBKKKKACiiigAooooAKKKKACiiigAxRS5ooATmjmg0UAFFFLQAYpKUUGgBDTacaSkIKKKKAFooooAKKKKACiiimAClpKWgYYooozQAUUlFAC0lFLQAlLRRQIKSiigYUUoooAKKKKACkozRQAUtJS0AFFFJQAvSkoooAKKWigAoxRSZoEFFFFAwpaSlxQAYoopKACiiloATFLRRQAYoxRmkoAKWkooAXFFFFABQaSigApaSloAKKKDQAUUlFABS0lLQAUGikoAWikozQAUuKKKACkpaSgBaSiigApaKKACiikzQAppKM0UABpKWkpCCgUUUALRRRQMKKKKYBRRRQAUUUtACUUUGgAooooAKKKKAA0UUUAFFFFACig0lFABRRRQAUCiigBaKKQ0AFFFFABQKKXFABSUtJQAUUUUAFFFFABS0UlABmkpaKAClFJSigBKM0UUAJS0UUAFLSUUAFFFFABRSUtABRS0lAAaKKKACikpaAClopKAFzSUUUAFFFFAC0hpaSgAozRRQAUUUUALQKSigAooooAKKKKAENFBGaKQgoFFFAC0UlLTAKKKMUDClxRRQAUhpTSUAFFFLigBMUtAooAKDQaSgAoopaAExS0UUAIaKU0lABRiiloAMUUUUAFJRRQAUYoxS0AIKWig0AIaKKMUAFFLiigAFFFFACUUUuKAExS4oooAKKKSgAooFLQAmKWiigApDS0lABRRRQAYpRRRQAUlFFABRS0UAJS0UUAJRRRQAUYpcUUAFFFFACUUUUAFGKXFFABRRRQAhoopcUAJRRiloAKDRRQAhpDSmkoABRRRSEFLSUtMYUtJS0gCikopgFLSCloAKKKKACikooAKWkFLQAUUUmaAFoNJRQAUtIKWgAoopDQAuaTNFFABS0CigAoopKAFpKKKAFooFFABRRSUCFJpKKBQMWiii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K2kvNPhOhaufmFzZKAjN6vH0P1GD714Q3wE8eHxumnSrbyWnlrv1ZP8AVeUXwTg4zIBk7fbr3qVFrYfNfc83DQ2saIihdxCpGi5Zz6ADkmvVPAXwH8TeL2iuvEW/w9orfN5bjN1MP93+D/gX5GvoP4a/CHwz4EIubWB7/VyPm1C8w8o9kHRB9OfUmvRqajYHK5y/gTwJ4e8Dab9j8OafHbgjEkx+aWY+rueT9Og7CuoxS0VQhKWiimAUmaWkoAKMUtFABRRRSEBpKKKYwxS0CigAooooAKSiigApaKKACiiigApKWigAooooEFFFFAxKKWigAoFFFIAoNFFMBKKWigAxRRmigQUUUUDGmilpKACgUUUhC0CiigYUUUUwCiiigApRSUtABRQaSgAzRSUtABS0gpaACikooAKKKKAAUtJS0AFJQaKACiiigApaSloASiiigAooooAWiiigApKKKACiigUALRRSUALSZoooAKBRS0AFFGaSgBaSiigApRSUUALRRmkoAKKPwooAKUUlLQAUUhpKAFooooABS0CigAooNJQAUUUUAApaKSgBTSZoJooAKKKKAFooozQAUlFFABRRRQAUlLSUgCiigUCFooopjCiiigAooooAKKWkoAKSlooAKKWigAozRSUAFJS0UAAoxS0UAJRS0lAB+NFFFABS4oooADSUUUAFFFFABRiiloASiiigBKWigCgApaKSgAooooAKKBS0AGKKKSgAooooAKKWigBBQaWkNABSUtFABRS0UAJRmloNACUUUUAFApaKAEopTSUAFFFKKAEFFLRQAUlFFACUtFFABS0UUAJRQaKACiilxQAlFLQaGAlJS0lIAoFFFAhaKBRTAKWig0DCiiigApKKWgAoxRRQAYooooADSUUtABiiiigAoopM0ABoopRQAUUUUAFFFJQAUUUtABRRRSEFBozSZpjClxQKKACiiigANJRmloASloooAKKKKBBSUtJQMKWiigAopKWgApKKWgAAooooAKKKQ0CFpKBS0DDFFFFABRRRmgApKWigAooooAKKKSgAoopaACiiigAopKXNACUYpaSgBaKKKACkpaSgBDRSmm0gFFKKSlFAgpRSUCmMWiikoAKKKKAClpKWgAopKKACiiigApaSloAM0lFFABRRRQAYpaM0UAFJQaKACiiigBRRRQaAA0maKKACiiigBRRRRQAZpKKKACgUUUALRRSUABNFFFABS0lLQAUUlFABRRRQAClFJS0AFFJRQAZooooABS0lLQAUZpKKADNFFFACiiikoAWkoooAKKSloAKWiigBKKKKACgUUUALRRSUALSUUUAFBopKQBSUtIaBDqKKSgBaKSigYtFJRQIWikooGLRSUUALRSUUALRSUUCFozSUUDFopKKAFopKKBC0UlFAxaKSigBaKTNFADs0lJRQAtFJRQAtFJRQAtFJRQIWikooGLmjNJRQAtFJRQAtFJRQAtLTaKAFopKKYC0UlFIBaKSigBaKSigBaKSigBc0UlFAhaKSigYtFJRQAtFJRQAvaikooELRSUUDFzRSUUALRSUUCFopKKBi5ozSUUALRSUUAFFFFAgpKWkpgf/Z BASE_DIR = Path("/Users/davidkotnik/repos/novafarma") ASSETS_DIR = BASE_DIR / "assets" / "images" diff --git a/scripts/reorganize_assets.py b/scripts/reorganize_assets.py new file mode 100644 index 000000000..3f83b8ade --- /dev/null +++ b/scripts/reorganize_assets.py @@ -0,0 +1,146 @@ +#!/usr/bin/env python3 +""" +Reorganize assets with proper structure: +- Each asset gets its own subfolder +- Original 1024x1024 file: assetname_1024x1024.png +- Resized file: assetname_32x32.png (or other size) +""" + +import os +import shutil +from pathlib import Path +from PIL import Image + +# Target sizes for each category +RESIZE_CONFIG = { + 'terrain': 32, + 'crops': 32, + 'buildings': 32, + 'items': 16, + 'ui': None, # Keep original + 'effects': 32, + 'environment': { + 'campfire': 32, + 'dead_tree': (32, 64), + 'rock': 32 + }, + 'characters': 32, + 'enemies': 32 +} + +def get_target_size(category: str, filename: str): + """Get target resize dimensions""" + config = RESIZE_CONFIG.get(category) + + if config is None: + return None + + if isinstance(config, dict): + for key, size in config.items(): + if key in filename: + return size + return 32 + + return config + +def reorganize_asset(asset_path: Path, category_dir: Path, target_size): + """ + Reorganize single asset: + - Create subfolder with asset name + - Save original as assetname_1024x1024.png + - Save resized as assetname_32x32.png + """ + + try: + # Get asset base name (without extension) + asset_name = asset_path.stem + + # Create subfolder + asset_folder = category_dir / asset_name + asset_folder.mkdir(exist_ok=True) + + # Load original + img = Image.open(asset_path) + orig_width, orig_height = img.size + + # Save original with dimensions in name + original_filename = f"{asset_name}_{orig_width}x{orig_height}.png" + original_path = asset_folder / original_filename + img.save(original_path, 'PNG') + + print(f" šŸ“ {asset_name}/") + print(f" āœ… Original: {original_filename} ({orig_width}Ɨ{orig_height})") + + # Create resized version if needed + if target_size is not None: + if isinstance(target_size, tuple): + resized = img.resize(target_size, Image.Resampling.LANCZOS) + new_width, new_height = target_size + else: + resized = img.resize((target_size, target_size), Image.Resampling.LANCZOS) + new_width, new_height = target_size, target_size + + resized_filename = f"{asset_name}_{new_width}x{new_height}.png" + resized_path = asset_folder / resized_filename + resized.save(resized_path, 'PNG', optimize=True) + + print(f" āœ… Resized: {resized_filename} ({new_width}Ɨ{new_height})") + + return True + + except Exception as e: + print(f" āŒ Error with {asset_path.name}: {e}") + return False + +def process_category(base_dir: Path, category: str): + """Process all assets in category""" + + category_path = base_dir / category + if not category_path.exists(): + return 0 + + print(f"\n{'='*70}") + print(f"šŸ“‚ CATEGORY: {category}/") + print(f"{'='*70}") + + # Get all PNG files (not in subfolders) + png_files = [f for f in category_path.glob('*.png') if f.is_file()] + + if not png_files: + print(" No PNG files found in root") + return 0 + + count = 0 + for png_file in png_files: + target_size = get_target_size(category, png_file.stem) + if reorganize_asset(png_file, category_path, target_size): + # Remove original file after successful reorganization + png_file.unlink() + count += 1 + + return count + +def main(): + print("=" * 70) + print("šŸ—‚ļø ASSET REORGANIZATION: SUBFOLDERS WITH ORIGINALS + RESIZED") + print("=" * 70) + + demo_dir = Path('assets/images/demo') + print(f"\nšŸ“¦ Processing: {demo_dir}") + + total = 0 + for category in RESIZE_CONFIG.keys(): + if category != 'environment': + total += process_category(demo_dir, category) + + total += process_category(demo_dir, 'environment') + + print("\n" + "=" * 70) + print(f"āœ… COMPLETE! Reorganized {total} assets") + print("=" * 70) + print("\nšŸ“ Structure: category/assetname/") + print(" - assetname_1024x1024.png (original)") + print(" - assetname_32x32.png (resized)") + +if __name__ == "__main__": + main() diff --git a/scripts/resize_for_tiled.py b/scripts/resize_for_tiled.py new file mode 100644 index 000000000..de4a3407b --- /dev/null +++ b/scripts/resize_for_tiled.py @@ -0,0 +1,129 @@ +#!/usr/bin/env python3 +""" +Resize all demo assets to proper tile sizes for Tiled editor +Converts 1024x1024 generated images to game-appropriate sizes +""" + +import os +from pathlib import Path +from PIL import Image + +# Resize configurations +RESIZE_CONFIG = { + 'terrain': 64, # 64x64 tiles + 'crops': 64, # 64x64 tiles + 'buildings': 64, # 64x64 (tent is square) + 'items': 32, # 32x32 for inventory items + 'ui': None, # Keep original size for UI + 'effects': 48, # 48x48 for effects + 'environment': { # Variable sizes + 'campfire': 64, + 'dead_tree': (64, 96), # Tall sprite + 'rock': (48, 32) # Wide sprite + }, + 'characters': 64, # 64x64 for character sprites + 'enemies': 64 # 64x64 for enemies +} + +def resize_image(input_path: Path, output_path: Path, size): + """Resize image maintaining aspect ratio or forcing size""" + + try: + img = Image.open(input_path) + + if size is None: + # Keep original + if input_path != output_path: + img.save(output_path, 'PNG') + return True + + if isinstance(size, tuple): + # Force exact size (width, height) + resized = img.resize(size, Image.Resampling.LANCZOS) + else: + # Square resize + resized = img.resize((size, size), Image.Resampling.LANCZOS) + + resized.save(output_path, 'PNG', optimize=True) + print(f" āœ… {output_path.name}: {img.size} → {resized.size}") + return True + + except Exception as e: + print(f" āŒ Error with {input_path.name}: {e}") + return False + +def get_target_size(category: str, filename: str): + """Determine target size based on category and filename""" + + config = RESIZE_CONFIG.get(category) + + if config is None: + return None + + if isinstance(config, dict): + # Environment has variable sizes + for key, size in config.items(): + if key in filename: + return size + return 64 # Default for environment + + return config + +def resize_category(base_dir: Path, category: str): + """Resize all images in a category folder""" + + category_path = base_dir / category + if not category_path.exists(): + print(f"āš ļø Skipping {category} (not found)") + return 0 + + print(f"\nšŸ“ Processing: {category}/") + + png_files = list(category_path.glob('*.png')) + if not png_files: + print(f" No PNG files found") + return 0 + + count = 0 + for png_file in png_files: + size = get_target_size(category, png_file.stem) + if resize_image(png_file, png_file, size): + count += 1 + + return count + +def main(): + print("=" * 60) + print("šŸ–¼ļø RESIZING DEMO ASSETS FOR TILED") + print("=" * 60) + + # Resize transparent assets + demo_dir = Path('assets/images/demo') + print(f"\nšŸ“¦ TRANSPARENT ASSETS: {demo_dir}") + + total = 0 + for category in RESIZE_CONFIG.keys(): + if category != 'environment': # Handle environment specially + total += resize_category(demo_dir, category) + + # Environment with variable sizes + total += resize_category(demo_dir, 'environment') + + # Resize white background originals + orig_dir = Path('assets/images/demo_originals_with_white_bg') + if orig_dir.exists(): + print(f"\nšŸ“¦ WHITE BG ORIGINALS: {orig_dir}") + + for category in RESIZE_CONFIG.keys(): + if category != 'environment': + total += resize_category(orig_dir, category) + + total += resize_category(orig_dir, 'environment') + + print("\n" + "=" * 60) + print(f"āœ… COMPLETE! Resized {total} images") + print("=" * 60) + print("\nšŸ—ŗļø Ready for Tiled! All assets now proper game sizes.") + +if __name__ == "__main__": + main() diff --git a/scripts/resize_to_32px.py b/scripts/resize_to_32px.py new file mode 100644 index 000000000..fe2836dd9 --- /dev/null +++ b/scripts/resize_to_32px.py @@ -0,0 +1,119 @@ +#!/usr/bin/env python3 +""" +Resize to PROPER INDIE GAME sizes - 32x32 standard! +""" + +import os +from pathlib import Path +from PIL import Image + +# CORRECT sizes for indie games +RESIZE_CONFIG = { + 'terrain': 32, # 32x32 tiles (Stardew Valley standard!) + 'crops': 32, # 32x32 tiles + 'buildings': 32, # 32x32 + 'items': 16, # 16x16 for inventory items (smaller!) + 'ui': None, # Keep original + 'effects': 24, # 24x24 for effects + 'environment': { # Variable sizes + 'campfire': 32, + 'dead_tree': (32, 48), # Tall sprite + 'rock': (24, 16) # Wide sprite + }, + 'characters': 32, # 32x32 for characters + 'enemies': 32 # 32x32 for enemies +} + +def resize_image(input_path: Path, output_path: Path, size): + """Resize image maintaining quality""" + + try: + img = Image.open(input_path) + + if size is None: + if input_path != output_path: + img.save(output_path, 'PNG') + return True + + if isinstance(size, tuple): + resized = img.resize(size, Image.Resampling.LANCZOS) + else: + resized = img.resize((size, size), Image.Resampling.LANCZOS) + + resized.save(output_path, 'PNG', optimize=True) + print(f" āœ… {output_path.name}: {img.size} → {resized.size}") + return True + + except Exception as e: + print(f" āŒ {input_path.name}: {e}") + return False + +def get_target_size(category: str, filename: str): + """Determine target size""" + + config = RESIZE_CONFIG.get(category) + + if config is None: + return None + + if isinstance(config, dict): + for key, size in config.items(): + if key in filename: + return size + return 32 # Default + + return config + +def resize_category(base_dir: Path, category: str): + """Resize all images in category""" + + category_path = base_dir / category + if not category_path.exists(): + return 0 + + print(f"\nšŸ“ {category}/") + + png_files = list(category_path.glob('*.png')) + if not png_files: + return 0 + + count = 0 + for png_file in png_files: + size = get_target_size(category, png_file.stem) + if resize_image(png_file, png_file, size): + count += 1 + + return count + +def main(): + print("=" * 60) + print("šŸŽ® RESIZING TO PROPER INDIE GAME SIZES (32Ɨ32 STANDARD)") + print("=" * 60) + + demo_dir = Path('assets/images/demo') + print(f"\nšŸ“¦ Transparent assets: {demo_dir}") + + total = 0 + for category in RESIZE_CONFIG.keys(): + if category != 'environment': + total += resize_category(demo_dir, category) + + total += resize_category(demo_dir, 'environment') + + orig_dir = Path('assets/images/demo_originals_with_white_bg') + if orig_dir.exists(): + print(f"\nšŸ“¦ White BG originals: {orig_dir}") + + for category in RESIZE_CONFIG.keys(): + if category != 'environment': + total += resize_category(orig_dir, category) + + total += resize_category(orig_dir, 'environment') + + print("\n" + "=" * 60) + print(f"āœ… DONE! Resized {total} images to 32Ɨ32 standard!") + print("=" * 60) + print("\nšŸŽ® Perfect for indie games like Stardew Valley!") + +if __name__ == "__main__": + main() diff --git a/scripts/tile_align_and_rename.py b/scripts/tile_align_and_rename.py new file mode 100644 index 000000000..8dd53e035 --- /dev/null +++ b/scripts/tile_align_and_rename.py @@ -0,0 +1,163 @@ +#!/usr/bin/env python3 +""" +Resize all assets to EXACT multiples of 32px tile size +Rename files to include dimensions: filename_WxH.png +""" + +import os +from pathlib import Path +from PIL import Image +import shutil + +# Exact tile-aligned sizes (multiples of 32) +TILE_SIZE = 32 + +RESIZE_CONFIG = { + 'terrain': 32, # 1Ɨ1 tile + 'crops': 32, # 1Ɨ1 tile + 'buildings': 32, # 1Ɨ1 tile (tent) + 'items': 16, # 0.5Ɨ0.5 tile (inventory items) + 'ui': None, # Keep original + 'effects': 32, # 1Ɨ1 tile (changed from 24) + 'environment': { + 'campfire': 32, # 1Ɨ1 tile + 'dead_tree': (32, 64), # 1Ɨ2 tiles (changed from 32Ɨ48) + 'rock': 32 # 1Ɨ1 tile (changed from 24Ɨ16) + }, + 'characters': 32, # 1Ɨ1 tile + 'enemies': 32 # 1Ɨ1 tile +} + +def resize_and_rename(input_path: Path, output_dir: Path, size, backup=True): + """Resize image and rename with dimensions""" + + try: + img = Image.open(input_path) + + # Backup original if requested + if backup and input_path.parent == output_dir: + backup_path = input_path.parent / "originals" / input_path.name + backup_path.parent.mkdir(exist_ok=True) + if not backup_path.exists(): + shutil.copy2(input_path, backup_path) + + # Keep original if size is None + if size is None: + return True + + # Resize + if isinstance(size, tuple): + resized = img.resize(size, Image.Resampling.LANCZOS) + new_width, new_height = size + else: + resized = img.resize((size, size), Image.Resampling.LANCZOS) + new_width, new_height = size, size + + # Generate new filename with dimensions + stem = input_path.stem + + # Remove old dimensions if present + if '_' in stem: + parts = stem.rsplit('_', 1) + if 'x' in parts[-1] or parts[-1].replace('x', '').replace('style', '').isdigit(): + # Keep it as is for style suffixes + base_name = stem + else: + base_name = stem + else: + base_name = stem + + # New filename: originalname_WxH.png + new_filename = f"{base_name}_{new_width}x{new_height}.png" + output_path = output_dir / new_filename + + # Save + resized.save(output_path, 'PNG', optimize=True) + + # Delete old file if different name + if output_path != input_path and input_path.exists(): + input_path.unlink() + + print(f" āœ… {input_path.name} → {new_filename} ({img.size} → {resized.size})") + return True + + except Exception as e: + print(f" āŒ {input_path.name}: {e}") + return False + +def get_target_size(category: str, filename: str): + """Get target size for category""" + + config = RESIZE_CONFIG.get(category) + + if config is None: + return None + + if isinstance(config, dict): + for key, size in config.items(): + if key in filename: + return size + return 32 # Default + + return config + +def process_category(base_dir: Path, category: str): + """Process all images in category""" + + category_path = base_dir / category + if not category_path.exists(): + return 0 + + print(f"\nšŸ“ {category}/") + + png_files = list(category_path.glob('*.png')) + if not png_files: + return 0 + + count = 0 + for png_file in png_files: + # Skip already processed files with dimensions + if any(x in png_file.stem for x in ['_32x32', '_16x16', '_32x64', '_24x24']): + continue + + size = get_target_size(category, png_file.stem) + if resize_and_rename(png_file, category_path, size): + count += 1 + + return count + +def main(): + print("=" * 70) + print("šŸ“ TILE-ALIGNED RESIZE & RENAME (Multiples of 32px)") + print("=" * 70) + + demo_dir = Path('assets/images/demo') + print(f"\nšŸ“¦ Processing: {demo_dir}") + + total = 0 + for category in RESIZE_CONFIG.keys(): + if category != 'environment': + total += process_category(demo_dir, category) + + total += process_category(demo_dir, 'environment') + + # White BG originals + orig_dir = Path('assets/images/demo_originals_with_white_bg') + if orig_dir.exists(): + print(f"\nšŸ“¦ Processing: {orig_dir}") + + for category in RESIZE_CONFIG.keys(): + if category != 'environment': + total += process_category(orig_dir, category) + + total += process_category(orig_dir, 'environment') + + print("\n" + "=" * 70) + print(f"āœ… COMPLETE! Processed {total} images") + print("=" * 70) + print("\nšŸ“ All sizes now multiples of 32px!") + print("šŸ“ All files renamed with dimensions!") + print("\nšŸŽ® Perfect for Tiled!") + +if __name__ == "__main__": + main()