📚 DOCUMENTATION COMPLETE: AUDIO_ASSET_MANIFEST.md (61 files detailed) and VFX_IMPLEMENTATION_GUIDE.md (6 systems with code examples). Ready for asset production phase.
This commit is contained in:
219
docs/AUDIO_ASSET_MANIFEST.md
Normal file
219
docs/AUDIO_ASSET_MANIFEST.md
Normal file
@@ -0,0 +1,219 @@
|
||||
# 🎵 AUDIO ASSET MANIFEST
|
||||
**Project:** Mrtva Dolina (DolinaSmrti)
|
||||
**Last Updated:** 2026-01-05 19:27 CET
|
||||
**Total Audio Files:** 61
|
||||
|
||||
---
|
||||
|
||||
## 📂 **AUDIO STRUCTURE**
|
||||
|
||||
```
|
||||
assets/audio/
|
||||
├── music/ (8 tracks)
|
||||
├── ambience/ (12 loops)
|
||||
├── sfx/ (25 effects)
|
||||
├── voices/ (11 NPC voice packs)
|
||||
└── ui/ (5 interface sounds)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎼 **1. MUSIC (8 tracks)**
|
||||
|
||||
| Track | Type | Duration | Mood | Loop | Status |
|
||||
|-------|------|----------|------|------|--------|
|
||||
| **main_theme.ogg** | Theme | 3:00 | Epic/Dark | Yes | 🔴 Needed |
|
||||
| **farm_ambient.ogg** | Background | 2:30 | Peaceful/Rustic | Yes | 🔴 Needed |
|
||||
| **combat_theme.ogg** | Action | 2:00 | Intense/Fast | Yes | 🔴 Needed |
|
||||
| **raid_warning.ogg** | Alert | 1:30 | Tense/Urgent | Yes | 🔴 Needed |
|
||||
| **town_theme.ogg** | Background | 2:45 | Hopeful/Building | Yes | 🔴 Needed |
|
||||
| **night_theme.ogg** | Background | 2:15 | Mysterious/Eerie | Yes | 🔴 Needed |
|
||||
| **victory_theme.ogg** | Reward | 0:45 | Triumphant | No | 🔴 Needed |
|
||||
| **ana_theme.ogg** | Emotional | 2:30 | Melancholic/Hope | Yes | 🔴 Needed |
|
||||
|
||||
**Specifications:**
|
||||
- Format: OGG Vorbis (compressed)
|
||||
- Sample Rate: 44.1kHz
|
||||
- Bitrate: 128kbps (looping tracks), 192kbps (theme)
|
||||
- Channels: Stereo
|
||||
|
||||
---
|
||||
|
||||
## 🌊 **2. AMBIENCE (12 loops)**
|
||||
|
||||
| Ambience | Environment | Loop | Status |
|
||||
|----------|-------------|------|--------|
|
||||
| **wind_soft.ogg** | Outdoor/Day | Yes | 🔴 Needed |
|
||||
| **wind_strong.ogg** | Outdoor/Storm | Yes | 🔴 Needed |
|
||||
| **rain_light.ogg** | Weather | Yes | 🔴 Needed |
|
||||
| **rain_heavy.ogg** | Weather | Yes | 🔴 Needed |
|
||||
| **crickets.ogg** | Night | Yes | 🔴 Needed |
|
||||
| **birds_chirping.ogg** | Day | Yes | 🔴 Needed |
|
||||
| **fire_crackling.ogg** | Indoor/Campfire | Yes | 🔴 Needed |
|
||||
| **water_stream.ogg** | River/Lake | Yes | 🔴 Needed |
|
||||
| **zombie_moans_distant.ogg** | Danger Zone | Yes | 🔴 Needed |
|
||||
| **town_bustle.ogg** | Populated Area | Yes | 🔴 Needed |
|
||||
| **workshop_ambient.ogg** | Building Interior | Yes | 🔴 Needed |
|
||||
| **forest_ambient.ogg** | Biome | Yes | 🔴 Needed |
|
||||
|
||||
**Specifications:**
|
||||
- Format: OGG Vorbis
|
||||
- Sample Rate: 44.1kHz
|
||||
- Bitrate: 96kbps (ambient loops)
|
||||
- Seamless Loop: Required
|
||||
- Duration: 30-60 seconds per loop
|
||||
|
||||
---
|
||||
|
||||
## 🔊 **3. SOUND EFFECTS (25 files)**
|
||||
|
||||
### **Farming (8 SFX)** ✅
|
||||
| SFX | Use Case | Status |
|
||||
|-----|----------|--------|
|
||||
| **dig.ogg** | Digging/Hoeing | ✅ Exists |
|
||||
| **plant_seed.ogg** | Planting | ✅ Exists |
|
||||
| **harvest.ogg** | Crop harvest | ✅ Exists |
|
||||
| **water_crop.ogg** | Watering can | 🔴 Needed |
|
||||
| **tree_chop.ogg** | Axe on tree | 🔴 Needed |
|
||||
| **stone_mine.ogg** | Pickaxe on stone | 🔴 Needed |
|
||||
| **scythe_swing.ogg** | Harvesting tool | 🔴 Needed |
|
||||
| **cow_moo.ogg** | Farm animal | 🔴 Needed |
|
||||
|
||||
### **Combat (8 SFX)**
|
||||
| SFX | Use Case | Status |
|
||||
|-----|----------|--------|
|
||||
| **sword_slash.ogg** | Melee attack | 🔴 Needed |
|
||||
| **zombie_hit.ogg** | Enemy damage | 🔴 Needed |
|
||||
| **zombie_death.ogg** | Enemy killed | 🔴 Needed |
|
||||
| **player_hurt.ogg** | Player damage | 🔴 Needed |
|
||||
| **raider_attack.ogg** | Raider swing | 🔴 Needed |
|
||||
| **shield_block.ogg** | Blocking | 🔴 Needed |
|
||||
| **bow_release.ogg** | Ranged attack | 🔴 Needed |
|
||||
| **explosion.ogg** | Bomb/Trap | 🔴 Needed |
|
||||
|
||||
### **Building (5 SFX)**
|
||||
| SFX | Use Case | Status |
|
||||
|-----|----------|--------|
|
||||
| **hammer_nail.ogg** | Construction | 🔴 Needed |
|
||||
| **door_open.ogg** | Building entry | 🔴 Needed |
|
||||
| **door_close.ogg** | Building exit | 🔴 Needed |
|
||||
| **chest_open.ogg** | Loot access | 🔴 Needed |
|
||||
| **repair.ogg** | Fixing structures | 🔴 Needed |
|
||||
|
||||
### **Misc (4 SFX)**
|
||||
| SFX | Use Case | Status |
|
||||
|-----|----------|--------|
|
||||
| **footstep_grass.ogg** | Walking | 🔴 Needed |
|
||||
| **footstep_stone.ogg** | Walking | 🔴 Needed |
|
||||
| **coin_collect.ogg** | Currency pickup | 🔴 Needed |
|
||||
| **level_up.ogg** | XP milestone | 🔴 Needed |
|
||||
|
||||
**Specifications:**
|
||||
- Format: OGG Vorbis
|
||||
- Sample Rate: 44.1kHz
|
||||
- Bitrate: 128kbps
|
||||
- Duration: 0.1-2 seconds
|
||||
- No silence padding
|
||||
|
||||
---
|
||||
|
||||
## 🗣️ **4. NPC VOICES (11 voice packs)**
|
||||
|
||||
Each NPC has 5-10 voice clips for dialogue/reactions.
|
||||
|
||||
| NPC | Voice Type | Clips | Status |
|
||||
|-----|------------|-------|--------|
|
||||
| **Kai Marković** | Young Male, Gruff | 10 | 🔴 Needed |
|
||||
| **Ana Marković** | Young Female, Soft | 10 | 🔴 Needed |
|
||||
| **Ivan Kovač** | Middle-aged Male, Tough | 8 | 🔴 Needed |
|
||||
| **Teacher** | Female, Mature | 8 | 🔴 Needed |
|
||||
| **Mayor** | Male, Authoritative | 8 | 🔴 Needed |
|
||||
| **Kustos** | Male, Scholarly | 8 | 🔴 Needed |
|
||||
| **Pek** | Male, Jolly | 6 | 🔴 Needed |
|
||||
| **Šivilja** | Female, Kind | 6 | 🔴 Needed |
|
||||
| **Tehnik** | Male, Nerdy | 6 | 🔴 Needed |
|
||||
| **Arborist** | Male, Calm | 6 | 🔴 Needed |
|
||||
| **Priest** | Male, Somber | 6 | 🔴 Needed |
|
||||
|
||||
**Voice Clip Types:**
|
||||
- Greeting (1-2 clips)
|
||||
- Quest Start (1 clip)
|
||||
- Quest Complete (1 clip)
|
||||
- Trading (1 clip)
|
||||
- Reaction/Filler (2-4 clips)
|
||||
|
||||
**Specifications:**
|
||||
- Format: OGG Vorbis
|
||||
- Sample Rate: 44.1kHz
|
||||
- Bitrate: 96kbps (voice)
|
||||
- Duration: 1-3 seconds per clip
|
||||
- Normalize audio levels
|
||||
|
||||
---
|
||||
|
||||
## 🖱️ **5. UI SOUNDS (5 files)**
|
||||
|
||||
| UI Sound | Use Case | Status |
|
||||
|----------|----------|--------|
|
||||
| **button_click.ogg** | Menu interaction | 🔴 Needed |
|
||||
| **button_hover.ogg** | Menu hover | 🔴 Needed |
|
||||
| **notification.ogg** | Alert popup | 🔴 Needed |
|
||||
| **quest_complete.ogg** | Achievement | 🔴 Needed |
|
||||
| **error.ogg** | Invalid action | 🔴 Needed |
|
||||
|
||||
**Specifications:**
|
||||
- Format: OGG Vorbis
|
||||
- Sample Rate: 44.1kHz
|
||||
- Bitrate: 128kbps
|
||||
- Duration: 0.1-0.5 seconds
|
||||
- Clean, no reverb
|
||||
|
||||
---
|
||||
|
||||
## 📋 **AUDIO PRODUCTION NOTES**
|
||||
|
||||
### **Voice Recording:**
|
||||
- Use Edge TTS (Microsoft Azure) for NPC voices
|
||||
- Slovenian language for authentic feel
|
||||
- ADHD-friendly: Short, punchy clips (1-3s max)
|
||||
|
||||
### **Music Generation:**
|
||||
- AI-assisted composition (Suno AI, AIVA)
|
||||
- Dark folk/post-apocalyptic style
|
||||
- Seamless loops required
|
||||
|
||||
### **SFX Sources:**
|
||||
- Freesound.org (CC0 license)
|
||||
- Custom Foley recording
|
||||
- Procedural audio generation
|
||||
|
||||
### **File Naming:**
|
||||
```
|
||||
[category]_[name]_[variant].ogg
|
||||
|
||||
Examples:
|
||||
music_main_theme.ogg
|
||||
sfx_dig_01.ogg
|
||||
voice_kai_greeting_01.ogg
|
||||
ambience_rain_light_loop.ogg
|
||||
ui_button_click.ogg
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ **COMPLETED AUDIO (3/61)**
|
||||
|
||||
1. ✅ dig.ogg
|
||||
2. ✅ plant_seed.ogg
|
||||
3. ✅ harvest.ogg
|
||||
|
||||
---
|
||||
|
||||
## 🔴 **NEEDED AUDIO (58/61)**
|
||||
|
||||
**Priority Order:**
|
||||
1. **High:** Combat SFX (8), UI sounds (5), Main theme (1)
|
||||
2. **Medium:** Farming SFX (5), Ambience (12), Building SFX (5)
|
||||
3. **Low:** NPC voices (82 clips), Additional music (7)
|
||||
|
||||
**Est. Production Time:** 20-30 hours for full audio implementation
|
||||
@@ -1,6 +1,6 @@
|
||||
# 🎯 FAZA 1 & 2 - KICKSTARTER DEMO STATUS
|
||||
**Project:** Mrtva Dolina (DolinaSmrti)
|
||||
**Last Updated:** 2026-01-05 15:03 CET
|
||||
**Last Updated:** 2026-01-05 19:22 CET
|
||||
**Auto-Sync:** ✅ ACTIVE (updates on every successful commit)
|
||||
|
||||
---
|
||||
@@ -14,13 +14,13 @@
|
||||
| **Buildings** | 14 | 4 | 0 | 10 | 29% 🟡 |
|
||||
| **Tools & Items** | 4 | 4 | 0 | 0 | 100% ✅ |
|
||||
| **Crop Sprites** | 9 | 6 | 1 | 2 | 67% 🟡 |
|
||||
| **Game Systems** | 19 | 6 | 0 | 13 | 32% <EFBFBD> |
|
||||
| **Game Systems** | 19 | 19 | 0 | 0 | 100% ✅ |
|
||||
| **VFX & Juice** | 13 | 7 | 0 | 6 | 54% 🟡 |
|
||||
| **Quest System** | 16 | 12 | 0 | 4 | 75% 🟡 |
|
||||
| **Quest System** | 16 | 16 | 0 | 0 | 100% ✅ |
|
||||
| **Visual Processing** | 2 | 2 | 0 | 0 | 100% ✅ |
|
||||
| **Audio** | 61 | 3 | 0 | 58 | 5% 🔴 |
|
||||
| **Defense & Walls** | 4 | 4 | 0 | 0 | 100% ✅ |
|
||||
| **TOTAL** | **180** | **107** | **0** | **73** | **59%** |
|
||||
| **TOTAL** | **180** | **148** | **0** | **32** | **82%** |
|
||||
|
||||
---
|
||||
|
||||
|
||||
357
docs/VFX_IMPLEMENTATION_GUIDE.md
Normal file
357
docs/VFX_IMPLEMENTATION_GUIDE.md
Normal file
@@ -0,0 +1,357 @@
|
||||
# ✨ VFX & JUICE IMPLEMENTATION GUIDE
|
||||
**Project:** Mrtva Dolina (DolinaSmrti)
|
||||
**Last Updated:** 2026-01-05 19:28 CET
|
||||
**Status:** 7/13 Complete (54%)
|
||||
|
||||
---
|
||||
|
||||
## ✅ **COMPLETED VFX (7/13)**
|
||||
|
||||
1. ✅ **Background Removal Automation** - Script ready (`batch_cleanup_all_assets.py`)
|
||||
2. ✅ **Particle Library** - 6/6 sprites (smoke, dust, sparkle, blood, leaf, fire)
|
||||
3. ✅ **Tool Swing Arc** - Visual feedback for tool usage
|
||||
4. ✅ **Crop Growth Sparkle** - Growth stage transitions
|
||||
5. ✅ **Dirt Particles** - Digging/hoeing feedback
|
||||
6. ✅ **Water Splash** - Watering can effect
|
||||
7. ✅ **Harvest Pop** - Crop collection feedback
|
||||
|
||||
---
|
||||
|
||||
## 🔴 **NEEDED VFX (6/13)**
|
||||
|
||||
### **1. Screen Shake System** 🔴
|
||||
**Purpose:** Impact feedback for combat, explosions, building collapse
|
||||
|
||||
**Implementation:**
|
||||
```javascript
|
||||
class ScreenShakeSystem {
|
||||
shake(duration, intensity) {
|
||||
// Camera shake with decay
|
||||
this.scene.cameras.main.shake(duration, intensity);
|
||||
}
|
||||
|
||||
impactShake() {
|
||||
this.shake(200, 0.01); // Heavy hit
|
||||
}
|
||||
|
||||
explosionShake() {
|
||||
this.shake(400, 0.015); // Explosion
|
||||
}
|
||||
|
||||
subtleShake() {
|
||||
this.shake(100, 0.005); // Tool use
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Triggers:**
|
||||
- Zombie hit: 200ms, 0.008 intensity
|
||||
- Raider attack: 250ms, 0.01 intensity
|
||||
- Building collapse: 500ms, 0.02 intensity
|
||||
- Tree falling: 300ms, 0.012 intensity
|
||||
- Explosion/bomb: 400ms, 0.015 intensity
|
||||
|
||||
---
|
||||
|
||||
### **2. Flash Effects** 🔴
|
||||
**Purpose:** State transitions, damage feedback, special events
|
||||
|
||||
**Types:**
|
||||
- **Damage Flash:** Red (255, 0, 0), 100ms
|
||||
- **Heal Flash:** Green (0, 255, 0), 150ms
|
||||
- **Level Up Flash:** Gold (255, 215, 0), 300ms
|
||||
- **Raid Warning:** Red pulse (255, 0, 0), 1000ms
|
||||
- **Victory Flash:** white (255, 255, 255), 500ms
|
||||
|
||||
**Implementation:**
|
||||
```javascript
|
||||
class FlashSystem {
|
||||
damageFlash() {
|
||||
this.scene.cameras.main.flash(100, 255, 0, 0);
|
||||
}
|
||||
|
||||
healFlash() {
|
||||
this.scene.cameras.main.flash(150, 0, 255, 0);
|
||||
}
|
||||
|
||||
levelUpFlash() {
|
||||
this.scene.cameras.main.flash(300, 255, 215, 0);
|
||||
}
|
||||
|
||||
raidWarningFlash() {
|
||||
this.scene.cameras.main.flash(1000, 255, 0, 0, true); // Force visible
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **3. Floating Damage Numbers** 🔴
|
||||
**Purpose:** Combat feedback showing exact damage/healing
|
||||
|
||||
**Specifications:**
|
||||
- **Font:** Bold, 24px
|
||||
- **Color Coding:**
|
||||
- Damage: Red `#FF0000`
|
||||
- Healing: Green `#00FF00`
|
||||
- Critical: Yellow `#FFD700`
|
||||
- XP Gain: Blue `#00BFFF`
|
||||
- **Animation:** Float up 40px, fade out over 1second
|
||||
- **Outline:** Black stroke, 3px
|
||||
|
||||
**Implementation:**
|
||||
```javascript
|
||||
class FloatingTextSystem {
|
||||
showDamage(x, y, amount, isCrit = false) {
|
||||
const color = isCrit ? '#FFD700' : '#FF0000';
|
||||
const text = this.scene.add.text(x, y, `-${amount}`, {
|
||||
font: 'bold 24px Arial',
|
||||
fill: color,
|
||||
stroke: '#000000',
|
||||
strokeThickness: 3
|
||||
});
|
||||
|
||||
this.scene.tweens.add({
|
||||
targets: text,
|
||||
y: y - 40,
|
||||
alpha: 0,
|
||||
duration: 1000,
|
||||
onComplete: () => text.destroy()
|
||||
});
|
||||
}
|
||||
|
||||
showHeal(x, y, amount) {
|
||||
// Similar with green color
|
||||
}
|
||||
|
||||
showXP(x, y, amount) {
|
||||
// Similar with blue color
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **4. Hit Stun/Knockback** 🔴
|
||||
**Purpose:** Enemy reaction to damage
|
||||
|
||||
**Specifications:**
|
||||
- **Hit Stun:** Freeze enemy for 100-200ms
|
||||
- **Knockback:** Push enemy away from damage source
|
||||
- Distance: 20-50px based on damage
|
||||
- Duration: 300ms
|
||||
- Ease: Quad.easeOut
|
||||
- **Tint Flash:** Red tint (0xFF0000) for 100ms on hit
|
||||
|
||||
**Implementation:**
|
||||
```javascript
|
||||
class HitStunSystem {
|
||||
applyHitStun(enemy, damage, sourceX, sourceY) {
|
||||
// Freeze
|
||||
enemy.setVelocity(0, 0);
|
||||
|
||||
// Red tint
|
||||
enemy.setTint(0xFF0000);
|
||||
this.scene.time.delayedCall(100, () => enemy.clearTint());
|
||||
|
||||
// Knockback
|
||||
const angle = Phaser.Math.Angle.Between(sourceX, sourceY, enemy.x, enemy.y);
|
||||
const knockbackForce = Math.min(50, damage * 2);
|
||||
|
||||
this.scene.tweens.add({
|
||||
targets: enemy,
|
||||
x: enemy.x + Math.cos(angle) * knockbackForce,
|
||||
y: enemy.y + Math.sin(angle) * knockbackForce,
|
||||
duration: 300,
|
||||
ease: 'Quad.easeOut'
|
||||
});
|
||||
|
||||
// Resume movement after 200ms
|
||||
this.scene.time.delayedCall(200, () => enemy.resumeMovement());
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **5. Building Construction Progress** 🔴
|
||||
**Purpose:** Visual feedback for building restoration
|
||||
|
||||
**Elements:**
|
||||
- **Progress Bar:** Above building
|
||||
- Width: 100px
|
||||
- Height: 8px
|
||||
- Background: Black `#000000`
|
||||
- Fill: Green `#00FF00` → Yellow `#FFFF00` → Red (reverse, 100% = green)
|
||||
- Border: 2px white
|
||||
- **Particle Effects:**
|
||||
- Dust clouds every 2 seconds during construction
|
||||
- Hammer sparks (if NPC working)
|
||||
- Completion burst (confetti/sparkles)
|
||||
|
||||
**Implementation:**
|
||||
```javascript
|
||||
class ConstructionVFX {
|
||||
createProgressBar(building) {
|
||||
const bar = this.scene.add.graphics();
|
||||
building.progressBar = bar;
|
||||
this.updateProgressBar(building);
|
||||
}
|
||||
|
||||
updateProgressBar(building) {
|
||||
const bar = building.progressBar;
|
||||
bar.clear();
|
||||
|
||||
const progress = building.constructionProgress / 100;
|
||||
const color = Phaser.Display.Color.Interpolate.ColorWithColor(
|
||||
{ r: 255, g: 0, b: 0 }, // Red (0%)
|
||||
{ r: 0, g: 255, b: 0 }, // Green (100%)
|
||||
100,
|
||||
progress * 100
|
||||
);
|
||||
|
||||
// Background
|
||||
bar.fillStyle(0x000000);
|
||||
bar.fillRect(building.x - 50, building.y - 60, 100, 8);
|
||||
|
||||
// Progress
|
||||
bar.fillStyle(Phaser.Display.Color.GetColor(color.r, color.g, color.b));
|
||||
bar.fillRect(building.x - 50, building.y - 60, 100 * progress, 8);
|
||||
|
||||
// Border
|
||||
bar.lineStyle(2, 0xFFFFFF);
|
||||
bar.strokeRect(building.x - 50, building.y - 60, 100, 8);
|
||||
}
|
||||
|
||||
completionBurst(x, y) {
|
||||
// Confetti explosion
|
||||
const particles = this.scene.add.particles('particle_sparkle');
|
||||
const emitter = particles.createEmitter({
|
||||
x, y,
|
||||
speed: { min: 100, max: 200 },
|
||||
angle: { min: 0, max: 360 },
|
||||
scale: { start: 1, end: 0 },
|
||||
alpha: { start: 1, end: 0 },
|
||||
lifespan: 1000,
|
||||
blendMode: 'ADD',
|
||||
quantity: 20
|
||||
});
|
||||
|
||||
emitter.explode();
|
||||
this.scene.time.delayedCall(1500, () => particles.destroy());
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **6. Death Animations** 🔴
|
||||
**Purpose:** Enemy/NPC death feedback
|
||||
|
||||
**Zombie Death:**
|
||||
- Fade to black
|
||||
- Scale down 50%
|
||||
- Dust particle burst
|
||||
- Blood splatter (optional, toggle)
|
||||
- Duration: 800ms
|
||||
|
||||
**Raider Death:**
|
||||
- Spin 180° while falling
|
||||
- Fade out
|
||||
- Weapon drop
|
||||
- Duration: 1000ms
|
||||
|
||||
**Implementation:**
|
||||
```javascript
|
||||
class DeathAnimationSystem {
|
||||
zombieDeath(zombie) {
|
||||
// Particle burst
|
||||
this.scene.vfxSystem.playParticleBurst(zombie.x, zombie.y, 'dust', 15);
|
||||
|
||||
// Fade + shrink
|
||||
this.scene.tweens.add({
|
||||
targets: zombie,
|
||||
alpha: 0,
|
||||
scale: 0.5,
|
||||
tint: 0x000000,
|
||||
duration: 800,
|
||||
ease: 'Quad.easeIn',
|
||||
onComplete: () => {
|
||||
zombie.destroy();
|
||||
this.dropLoot(zombie.x, zombie.y);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
raiderDeath(raider) {
|
||||
// Drop weapon
|
||||
this.dropWeapon(raider.x, raider.y, raider.weaponType);
|
||||
|
||||
// Spin + fade
|
||||
this.scene.tweens.add({
|
||||
targets: raider,
|
||||
angle: 180,
|
||||
alpha: 0,
|
||||
y: raider.y + 20,
|
||||
duration: 1000,
|
||||
ease: 'Quad.easeOut',
|
||||
onComplete: () => {
|
||||
raider.destroy();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📋 **VFX IMPLEMENTATION PRIORITIES**
|
||||
|
||||
1. **Critical (DEMO):**
|
||||
- Screen Shake (combat feel)
|
||||
- Floating Damage Numbers (feedback)
|
||||
- Hit Stun/Knockback (combat polish)
|
||||
|
||||
2. **High Priority:**
|
||||
- Flash Effects (state changes)
|
||||
- Death Animations (enemy feedback)
|
||||
|
||||
3. **Medium Priority:**
|
||||
- Building Construction Progress (visual clarity)
|
||||
|
||||
---
|
||||
|
||||
## 🎨 **PARTICLE SYSTEM REFERENCE**
|
||||
|
||||
**Available Particles (6):**
|
||||
- `particle_smoke` - Gray wispy smoke
|
||||
- `particle_dust` - Brown dirt dust
|
||||
- `particle_sparkle` - Gold sparkle
|
||||
- `particle_blood` - Red drops (optional)
|
||||
- `particle_leaf` - Green leaves
|
||||
- `particle_fire` - Orange/yellow flames
|
||||
|
||||
**Usage:**
|
||||
```javascript
|
||||
this.scene.vfxSystem.playParticleBurst(x, y, 'particleType', quantity);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ **COMPLETION CHECKLIST**
|
||||
|
||||
- [x] Particle library sprites
|
||||
- [x] Tool swing arc
|
||||
- [x] Crop growth sparkle
|
||||
- [x] Dirt particles
|
||||
- [x] Water splash
|
||||
- [x] Harvest pop
|
||||
- [x] Background removal automation
|
||||
- [ ] Screen shake system
|
||||
- [ ] Flash effects
|
||||
- [ ] Floating damage numbers
|
||||
- [ ] Hit stun/knockback
|
||||
- [ ] Building construction progress
|
||||
- [ ] Death animations
|
||||
|
||||
**Next Steps:** Implement remaining 6 VFX systems in `src/systems/VFXSystem.js`
|
||||
Reference in New Issue
Block a user