As built
Swarm
As-built
What the player can do
The horde is the swarm managed by IEnemyManager. Skulls spawn from the round and portal flow, steer as a group, and can be pushed by force fields and weapon wells. The player kills them for score. Rendering and pool size are on the enemy render config in as-built assets.
What ends it
A skull leaves the swarm when it dies. The swarm itself ends when the gameplay scope ends. New skull variants that are not in the enemy assets are not in the game yet.
What is saved
Nothing about individual skulls. Kill totals on a scored run are stored with the score.
Configuration
EnemyGlowConfig
Assets/Data/_AssetData/Addressables/DeepForestLabs/Slumber/Enemies/EnemyGlowConfig.asset
_glowColor: (0, 0, 0, 0.02745098)_glowIntensity: 1_baseGlow: 0_flashColor: (1, 0, 0, 1)_hitBoost: 1_deathBoost: 2_glowDownsample: 1_blurSpread: 3_occludeWithDepth: true
EnemyManagerConfig
Assets/Resources/EnemyManagerConfig.asset
_maxPoolSize: 10000_spawnBudgetPerFrame: 32_separationRadius: 3_separationWeight: 8_separationFalloffRadius: 4_cohesionWeight: 1_alignmentWeight: 0.5_perceptionRadius: 4_maxNeighbors: 6_seekWeight: 12_commitRadius: 5_commitSeekBoost: 1.1_noiseAmplitude: 4_noiseFrequency: 0.8_minSpeed: 5_maxSpeed: 10_steeringForce: 50_velocityDamping: 2_verticalDamping: 5_contactRadius: 1.2_contactCooldown: 0.5_hoverHeight: 0.5_wallProbeRadius: 0.5_collisionPushIterations: 4_maxEjectSteps: 6_maxStepDistance: 0.75_floorY: 0_floorPushMultiplier: 2.5_spawnBurstSpeed: 25_spawnGraceDuration: 0.5_hitFlashDuration: 0.5_staggerGridRebuild: true_gateGlowToActivity: true_glowLingerSeconds: 0.35
EnemyRenderConfig
Assets/EnemyRenderConfig.asset
_visuals (3)[0]Type: FlyingSkullMesh: Assets/Art/DemonsDungeon/Enemies/Skull/Meshes/M_Skull.fbxMaterial: Assets/Materials/Skull.matLayer: 12
[1]Type: FlyingSkullMesh: Assets/Art/DemonsDungeon/Enemies/Skull/Meshes/M_Skull.fbxMaterial: Assets/Materials/Skull.matLayer: 12
[2]Type: FlyingSkullMesh: Assets/Art/DemonsDungeon/Enemies/Skull/Meshes/M_Skull.fbxMaterial: Assets/Materials/Skull.matLayer: 12
_spawnWeights (3)_healthScales (3)_scoreMultipliers (3)_visualScales (3)_scaleJitterFactors (12)[0]: 0.9[1]: 0.95[2]: 1[3]: 1.02[4]: 1.05[5]: 1.1[6]: 1.2[7]: 1.25[8]: 1.3[9]: 1.5[10]: 1.7[11]: 2
_scaleJitterWeights (12)[0]: 2[1]: 4[2]: 16[3]: 8[4]: 4[5]: 2[6]: 2[7]: 2[8]: 1[9]: 1[10]: 1[11]: 1
_cullCompute: Assets/Shaders/EnemyCull.compute_boundingRadius: 1.5_impostorMaterials (3)[0]: Assets/Art/Enemies/Skull/Impostor/Skull_1A_Impostor.mat[1]: Assets/Art/Enemies/Skull/Impostor/Skull_2A_Impostor.mat[2]: Assets/Art/Enemies/Skull/Impostor/Skull_3A_Impostor.mat
_impostorMaterial: Assets/Art/Enemies/Skull/Impostor/Skull_1A_Impostor.mat_lod0ScreenSize: 0.3
ForceFieldConfig
Assets/Data/_AssetData/Addressables/DeepForestLabs/Slumber/Enemies/ForceFieldConfig.asset
_maxSources: 16_priorityPull: 100_priorityFuneralRites: 80_prioritySingularityFlight: 70_priorityGraviton: 60_priorityShock: 50_priorityGravityCrumb: 40_prioritySingularityLinger: 40_priorityWound: 20_protectedPull: true
SwarmBehaviorConfig
Assets/Data/_AssetData/Addressables/DeepForestLabs/Slumber/Enemies/SwarmBehaviorConfig.asset
_woundClosureEnabled: true_woundKillCount: 10_woundKillWindowSeconds: 0.2_woundAttractRadius: 8_woundAttractForce: 3_woundAttractTtlSeconds: 0.4_woundFireCooldownSeconds: 0.4_rolesEnabled: true_defaultRoleMixLeaderFraction: 0.03StragglerFraction: 0.15
_leaderWeightsSeekMul: 1.25CohesionMul: 0.65AlignmentMul: 0.75CommitMul: 1.45SeparationMul: 0.425SpeedMul: 1.12
_followerWeightsSeekMul: 1CohesionMul: 1AlignmentMul: 1CommitMul: 1SeparationMul: 0.5SpeedMul: 1
_stragglerWeightsSeekMul: 0.8CohesionMul: 0.66AlignmentMul: 0.66CommitMul: 0.66SeparationMul: 0.5SpeedMul: 0.89