Le systeme d'IA ennemie evolue avec la progression du joueur pour maintenir le challenge.
flowchart LR
subgraph Inputs
Wave[Wave Number]
Player[Player Threat]
end
subgraph DifficultyManager
Scale[Stat Scaling]
Features[Feature Activation]
Counter[Counter-Measures]
end
subgraph Outputs
AI[Enemy AI Behavior]
Stats[Enemy Stats]
end
Wave --> Scale
Wave --> Features
Player --> Counter
Scale --> Stats
Features --> AI
Counter --> AI
style DifficultyManager fill:#7c3aed,color:#fff
// Multiplicateur base sur la wavefloatgetDifficultyMultiplier(uint16_twave){return1.0f+0.15f*std::log2(1.0f+wave*0.5f);}// HP scale avec le multiplicateur completfloatgetScaledHealth(uint8_tbaseHP,uint16_twave){returnbaseHP*getDifficultyMultiplier(wave);}// Vitesse scale moins vite (cap a +50%)floatgetScaledSpeed(floatbaseSpeed,uint16_twave){floatmult=1.0f+0.1f*std::log2(1.0f+wave*0.3f);returnbaseSpeed*std::min(mult,1.5f);}
Les ennemis calculent ou le joueur sera pour intercepter.
structPredictiveShot{staticVec2fcalculateLeadDirection(Vec2fenemyPos,Vec2fplayerPos,Vec2fplayerVelocity,floatbulletSpeed,floatleadFactor// 0.0 = pas de prediction, 1.0 = parfait){floatdistance=(playerPos-enemyPos).length();floattimeToHit=distance/bulletSpeed;Vec2fpredictedPos=playerPos+playerVelocity*timeToHit*leadFactor;return(predictedPos-enemyPos).normalized();}};