Files
ThordekkCore/COMBAT_IMPLEMENTATION_PLAN.md
T
2026-01-20 21:27:50 -03:00

450 lines
15 KiB
Markdown

# TrinityCore PlayerBot - Combat Implementation Plan
## Enterprise-Grade Combat Behavior System
**Date**: 2025-10-07
**Status**: 🚀 **READY TO IMPLEMENT**
**Target**: Complete, production-ready combat AI for 5000+ concurrent bots
---
## Executive Summary
Based on comprehensive analysis by 3 specialized agents (wow-mechanics-expert, cpp-architecture-optimizer, wow-bot-behavior-designer), we have identified what EXISTS in the combat system and what's MISSING. This plan implements the missing components to achieve enterprise-grade combat behavior.
### What We Found
**✅ EXISTING (Already Working)**:
- 119 ClassAI implementations with complete rotations
- Polling-based combat updates (100ms, <0.1ms decision time)
- Target selection system with role awareness
- Threat management with multi-target tracking
- Basic interrupt framework
- Combat movement strategy with positioning
- Resource management per class
- Cooldown tracking system
**❌ MISSING (Need Implementation)**:
- Defensive cooldown automation (no centralized manager)
- Dispel/Purge priority system (no coordination)
- AoE decision making (no intelligent switching)
- Advanced positioning (no mechanic prediction)
- Group coordination utilities (no synchronized actions)
### Key Architectural Decision
**COMBAT STAYS POLLING-BASED** - We do NOT add Manager Event Handlers to combat.
**Why?**:
- Combat needs <1ms reaction time; events add 100-300ms latency
- ClassAI inherits from BotAI (core AI), not BehaviorManager
- Combat state changes constantly (would fire hundreds of events/second)
- Current polling architecture works perfectly
**What We're Building**: Utility managers that ClassAI can call directly during OnCombatUpdate().
---
## Implementation Phases
### PHASE 1: Core Combat Utilities (Week 1 - Priority P0)
**Goal**: Implement missing coordination utilities that all ClassAI implementations can use.
#### 1.1 DefensiveBehaviorManager
**File**: `src/modules/Playerbot/AI/CombatBehaviors/DefensiveBehaviorManager.h/cpp`
**Status**: Header created (400 lines), needs .cpp implementation
**Lines**: ~800 lines implementation
**Features**:
- Health threshold tracking (role-specific)
- Incoming DPS calculation (3-second rolling window)
- Defensive priority evaluation (5 levels)
- Cooldown tier system (Immunity → Regeneration)
- External defensive coordination (Pain Suppression, etc.)
- Consumables management (potions, healthstones)
**Performance**: <0.02ms per update
**Integration**: Called from ClassAI::OnCombatUpdate()
```cpp
void WarriorAI::OnCombatUpdate(uint32 diff) {
if (_defensiveManager->NeedsDefensive()) {
if (uint32 spell = _defensiveManager->SelectDefensive()) {
CastSpell(spell);
return;
}
}
// ... continue rotation
}
```
#### 1.2 InterruptRotationManager
**File**: `src/modules/Playerbot/AI/CombatBehaviors/InterruptRotationManager.h/cpp`
**Status**: Header created (350 lines), needs .cpp implementation
**Lines**: ~700 lines implementation
**Features**:
- Global interrupt spell database (priority 1-5)
- Rotation queue for fairness
- Delayed scheduling (wait for CD)
- Fallback strategies (Stun → Silence → LOS → Defensive)
- Group coordination (one interrupt per cast)
**Performance**: <0.01ms per cast evaluation
**Integration**: Event-driven from spell cast detection
```cpp
void OnEnemySpellCast(Unit* caster, uint32 spellId) {
ObjectGuid interrupter = _interruptManager->SelectInterrupter(caster, spellId);
if (interrupter == GetBotGuid()) {
ExecuteInterrupt(caster);
}
}
```
#### 1.3 DispelCoordinator
**File**: `src/modules/Playerbot/AI/CombatBehaviors/DispelCoordinator.h/cpp`
**Status**: Design complete, needs full implementation
**Lines**: ~600 lines total
**Features**:
- Debuff priority matrix (Death → Trivial)
- Dynamic priority adjustment (role, health, spread mechanics)
- Dispeller assignment (best available by mana, range, CD)
- Purge system (immunity > enrage > major buffs)
**Performance**: <0.012ms per check
---
### PHASE 2: Advanced Combat Logic (Week 2 - Priority P0)
#### 2.1 AoEDecisionManager
**File**: `src/modules/Playerbot/AI/CombatBehaviors/AoEDecisionManager.h/cpp`
**Status**: New component, full implementation needed
**Lines**: ~500 lines total
**Features**:
- Enemy clustering detection (spatial partitioning)
- AoE breakpoint calculation (2/3/5/8+ targets)
- Resource efficiency scoring (AoE vs single-target DPS)
- Cleave positioning optimization
- DoT spread prioritization
**Performance**: <0.015ms per evaluation
**Integration**:
```cpp
bool WarriorAI::ShouldUseWhirlwind() {
return _aoeManager->GetOptimalStrategy() == AoEStrategy::FULL_AOE &&
_aoeManager->GetTargetCount() >= 3;
}
```
#### 2.2 CooldownStackingOptimizer
**File**: `src/modules/Playerbot/AI/CombatBehaviors/CooldownStackingOptimizer.h/cpp`
**Status**: Design complete, needs implementation
**Lines**: ~700 lines total
**Features**:
- Boss phase detection (Normal/Burn/Defensive/Add/Transition/Execute)
- Cooldown stacking windows (calculate multiplicative buffs)
- Phase-based reservation (save for burn phases)
- Bloodlust alignment
- Diminishing returns calculation
**Performance**: <0.018ms per evaluation
---
### PHASE 3: Combat Intelligence (Week 3 - Priority P1)
#### 3.1 CombatStateAnalyzer
**File**: `src/modules/Playerbot/AI/CombatBehaviors/CombatStateAnalyzer.h/cpp`
**Status**: Design complete, needs implementation
**Lines**: ~800 lines total
**Features**:
- Combat situation detection (10 types: Normal, AoE Heavy, Burst Needed, etc.)
- Combat metrics tracking (group DPS, incoming DPS, health, resources)
- Historical analysis (last 10 updates)
- Emergency detection (tank dead, healer dead, wipe imminent)
**Performance**: <0.030ms per analysis
#### 3.2 AdaptiveBehaviorManager
**File**: `src/modules/Playerbot/AI/CombatBehaviors/AdaptiveBehaviorManager.h/cpp`
**Status**: Design complete, needs implementation
**Lines**: ~600 lines total
**Features**:
- Behavior profile system (conditions + actions)
- Automatic strategy switching
- Group composition adaptation (no tank/healer handling)
- Dynamic role assignment
**Performance**: <0.015ms per update
---
### PHASE 4: Integration & Testing (Week 4)
#### 4.1 Integration Layer
**File**: `src/modules/Playerbot/AI/CombatBehaviors/CombatBehaviorIntegration.h/cpp`
**Lines**: ~400 lines total
**Purpose**: Provide easy integration point for ClassAI implementations.
```cpp
class EnhancedCombatAI : public ClassAI {
protected:
std::unique_ptr<CombatBehaviorIntegration> _combatBehaviors;
public:
void OnCombatUpdate(uint32 diff) override {
// Update all behaviors
_combatBehaviors->Update(diff);
// Check for high-priority actions
if (_combatBehaviors->HandleEmergencies())
return;
// Standard rotation
UpdateRotation(GetTargetUnit());
}
};
```
#### 4.2 CMakeLists.txt Updates
**File**: `src/modules/Playerbot/CMakeLists.txt`
Add new combat behavior files:
```cmake
# Combat Behaviors (Phase 4: Complete Combat System)
${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/DefensiveBehaviorManager.cpp
${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/DefensiveBehaviorManager.h
${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/InterruptRotationManager.cpp
${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/InterruptRotationManager.h
${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/DispelCoordinator.cpp
${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/DispelCoordinator.h
${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/AoEDecisionManager.cpp
${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/AoEDecisionManager.h
${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/CooldownStackingOptimizer.cpp
${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/CooldownStackingOptimizer.h
${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/CombatStateAnalyzer.cpp
${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/CombatStateAnalyzer.h
${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/AdaptiveBehaviorManager.cpp
${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/AdaptiveBehaviorManager.h
${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/CombatBehaviorIntegration.cpp
${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/CombatBehaviorIntegration.h
```
#### 4.3 Testing Plan
1. **Unit Tests** (per component):
- Defensive priority calculation
- Interrupt assignment fairness
- Dispel coordination
- AoE breakpoint detection
- Cooldown stacking math
2. **Integration Tests**:
- 5-man dungeon simulation
- Boss encounter with mechanics
- Group coordination scenarios
- Edge cases (no tank, no healer)
3. **Performance Tests**:
- 100 bots in combat simultaneously
- CPU profiling per component
- Memory leak detection
- Scalability to 5000 bots
---
## File Structure
```
src/modules/Playerbot/AI/CombatBehaviors/
├── DefensiveBehaviorManager.h (400 lines - EXISTS)
├── DefensiveBehaviorManager.cpp (800 lines - TODO)
├── InterruptRotationManager.h (350 lines - EXISTS)
├── InterruptRotationManager.cpp (700 lines - TODO)
├── DispelCoordinator.h (350 lines - TODO)
├── DispelCoordinator.cpp (600 lines - TODO)
├── AoEDecisionManager.h (300 lines - TODO)
├── AoEDecisionManager.cpp (500 lines - TODO)
├── CooldownStackingOptimizer.h (350 lines - TODO)
├── CooldownStackingOptimizer.cpp (700 lines - TODO)
├── CombatStateAnalyzer.h (400 lines - TODO)
├── CombatStateAnalyzer.cpp (800 lines - TODO)
├── AdaptiveBehaviorManager.h (300 lines - TODO)
├── AdaptiveBehaviorManager.cpp (600 lines - TODO)
├── CombatBehaviorIntegration.h (200 lines - TODO)
├── CombatBehaviorIntegration.cpp (400 lines - TODO)
└── COMBAT_BEHAVIOR_DESIGN.md (1750 lines - EXISTS)
```
**Total New Code**: ~8,600 lines
**Existing Design Docs**: 3 comprehensive markdown files
---
## Performance Budget
**Per-Bot Combat Update** (100ms frequency):
```
Component Time % of Budget
──────────────────────────────────────────────────────
DefensiveBehaviorManager 20μs 20%
InterruptRotationManager 8μs 8%
DispelCoordinator 12μs 12%
AoEDecisionManager 15μs 15%
CooldownStackingOptimizer 18μs 18%
CombatStateAnalyzer 30μs 30%
AdaptiveBehaviorManager 15μs 15%
──────────────────────────────────────────────────────
TOTAL 118μs 118%
```
**Performance Optimization Needed**: 18% over budget (18μs)
**Optimization Strategies**:
1. Cache-friendly access patterns
2. Lazy evaluation for expensive checks
3. Batch processing for similar operations
4. Early exit conditions
5. Update frequency tiering (some checks every 200ms instead of 100ms)
**After Optimization**: Target 85μs total (<0.1ms)
---
## Memory Budget
**Per-Bot Memory Addition**:
```
Component Memory
────────────────────────────────────────
DefensiveState ~500 bytes
DamageHistory (30 entries) ~1 KB
InterrupterTracking ~800 bytes
DispelCoordination ~1 KB
AoEDecision ~600 bytes
CooldownOptimizer ~1.5 KB
CombatMetrics (10 history) ~2 KB
AdaptiveBehavior ~800 bytes
────────────────────────────────────────
TOTAL ~8.2 KB
```
**Acceptable**: Well within 10MB per-bot budget
---
## Claude.md Compliance Checklist
**✅ File Modification Hierarchy**:
- [ ] Module-only implementation (preferred)
- [ ] All files in `src/modules/Playerbot/`
- [ ] No core file modifications
- [ ] Zero TrinityCore refactoring
**✅ No Shortcuts**:
- [ ] Complete implementations (no TODOs)
- [ ] Full error handling
- [ ] Comprehensive edge case coverage
- [ ] Production-ready code quality
**✅ Performance Requirements**:
- [ ] <0.1% CPU per bot target
- [ ] <10MB memory per bot
- [ ] Thread-safe operations
- [ ] Tested at scale (5000 bots)
**✅ Quality Requirements**:
- [ ] TrinityCore API usage validated
- [ ] Coding standards compliance
- [ ] Comprehensive documentation
- [ ] Unit tests for all components
---
## Implementation Sequence
### Week 1 (P0 - Critical Combat Utilities)
**Day 1-2**: DefensiveBehaviorManager.cpp (800 lines)
**Day 3-4**: InterruptRotationManager.cpp (700 lines)
**Day 5**: DispelCoordinator.h/cpp (950 lines)
### Week 2 (P0 - Advanced Combat Logic)
**Day 1-2**: AoEDecisionManager.h/cpp (800 lines)
**Day 3-4**: CooldownStackingOptimizer.h/cpp (1050 lines)
**Day 5**: Testing and bugfixes
### Week 3 (P1 - Combat Intelligence)
**Day 1-2**: CombatStateAnalyzer.h/cpp (1200 lines)
**Day 3-4**: AdaptiveBehaviorManager.h/cpp (900 lines)
**Day 5**: Integration layer (600 lines)
### Week 4 (Integration & Testing)
**Day 1**: CMakeLists.txt updates, compilation
**Day 2**: Unit tests
**Day 3**: Integration tests
**Day 4**: Performance profiling and optimization
**Day 5**: Documentation and commit
---
## Success Metrics
**Technical**:
- ✅ Clean compilation with zero errors
- ✅ All unit tests passing
- ✅ <0.1ms per-bot decision time
- ✅ Linear scaling to 5000 bots
- ✅ Zero memory leaks
**Quality**:
- ✅ 80% of human player combat effectiveness
- ✅ <200ms reaction time to threats
- ✅ 90% interrupt success rate
- ✅ 70% reduction in unnecessary deaths
- ✅ Coordinated group actions
**Integration**:
- ✅ Zero ClassAI implementations broken
- ✅ Backward compatible with existing code
- ✅ Optional usage (bots work without new features)
- ✅ Clean separation of concerns
---
## Next Steps
**IMMEDIATE** (Now):
1. Create CombatBehaviors directory
2. Implement DefensiveBehaviorManager.cpp
3. Implement InterruptRotationManager.cpp
4. Test compilation
5. Commit Phase 1
**This plan is READY TO EXECUTE**. All analysis complete, designs finalized, headers created. Time to implement!
---
## Related Documentation
- `WOW_112_BOT_COMBAT_REQUIREMENTS.md` - WoW 11.2 combat requirements (579 lines)
- `COMBAT_ARCHITECTURE_ANALYSIS.md` - Architecture analysis (407 lines)
- `COMBAT_BEHAVIOR_DESIGN.md` - Complete behavior designs (1760 lines)
- `DefensiveBehaviorManager.h` - Defensive system header (398 lines)
- `InterruptRotationManager.h` - Interrupt system header (422 lines)
**Total Documentation**: 3,566 lines of comprehensive design and analysis
---
**Status**: 📋 **PLAN COMPLETE - READY TO IMPLEMENT**
**Next Action**: Create DefensiveBehaviorManager.cpp
**Estimated Completion**: 4 weeks for full combat behavior system