# glebdot/b2_archive architecture

> Architecture diagram of the GitHub repository glebdot/b2_archive, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/glebdot/b2_archive
- Repository: https://github.com/glebdot/b2_archive

## Overview

BlundersGame is an archived Unreal Engine 4 third-person-shooter prototype. Its source tree centers on player movement and weapons, enemy behavior and combat, and arena encounter control, with pickups, interactables, and HUD support. The sampled movement manager initializes movement states and momentum, while enemy damage processing applies armor and status effects. The enemy controller starts its behavior tree and maintains player blackboard state; arena path controllers subscribe to arena lifecycle delegates. Beyond these sampled links, subsystem connections are inferred only from names and directory structure, so uncertain wiring is omitted.

Main entry points: [`Source/BlundersGame/Private/PlayerBase/MovementManager.cpp`](https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/PlayerBase/MovementManager.cpp) (Movement Manager), [`Source/BlundersGame/Private/DamageComponents/DamageHandlerComponent.cpp`](https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/DamageComponents/DamageHandlerComponent.cpp) (Enemy Damage), [`Source/BlundersGame/Private/EnemyAI/EnemyParentAIController.cpp`](https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/EnemyAI/EnemyParentAIController.cpp) (Enemy AI Controller), [`Source/BlundersGame/Private/Enemies/EnemyBaseCharacter.cpp`](https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/Enemies/EnemyBaseCharacter.cpp) (Enemy Characters)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_player["Player Gameplay"]
  node_player_actor["Player Character"]
  node_movement["Movement Manager"]
  node_movement_states["Movement States"]
  node_momentum["Momentum"]
end

subgraph group_combat["Combat"]
  node_weapons["Player Weapons"]
  node_damage["Enemy Damage"]
  node_player_damage["Player Armor"]
  node_status["Status Effects"]
end

subgraph group_enemy["Enemy Gameplay"]
  node_enemy_actor["Enemy Characters"]
  node_enemy_ai["Enemy AI Controller"]
  node_ai_tasks["Behavior Tasks"]
  node_ai_services["AI Services"]
  node_enemy_projectiles["Enemy Projectiles"]
end

subgraph group_arena["Arena Flow"]
  node_arena_master["Arena Master<br/>[ArenaMaster.cpp]"]
  node_spawning["Enemy Spawning<br/>[Spawner.cpp]"]
  node_arena_paths["Arena Path Control"]
end

subgraph group_support["Game Support"]
  node_game_mode["Game Mode"]
  node_pickups["Resource Pickups"]
  node_hud["Player HUD<br/>[PlayerHUD.cpp]"]
end

node_player_user(("Player"))

node_player_user -->|"controls"| node_player_actor
node_movement -->|"initializes"| node_momentum
node_movement -->|"initializes"| node_movement_states
node_movement -->|"updates speed"| node_player_actor
node_movement -->|"checks jump overlap"| node_enemy_actor
node_enemy_ai -->|"possesses"| node_enemy_actor
node_enemy_ai -->|"starts behavior tree"| node_ai_tasks
node_ai_services -->|"writes blackboard"| node_enemy_ai
node_damage -->|"reduces health"| node_enemy_actor
node_damage -->|"creates and updates"| node_status
node_damage -->|"delegates armor damage"| node_player_damage
node_arena_paths -->|"subscribes to lifecycle"| node_arena_master
node_arena_master --> node_spawning

click node_player_actor "https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/PlayerBase/PlayerCharacter.cpp"
click node_movement "https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/PlayerBase/MovementManager.cpp"
click node_movement_states "https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/PlayerMovementStates/PlayerMovementState.cpp"
click node_momentum "https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/PlayerBase/PlayerMovement/MomentumAccumulatorComponent.cpp"
click node_weapons "https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/PlayerWeapons/Base/WeaponryComponent.cpp"
click node_damage "https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/DamageComponents/DamageHandlerComponent.cpp"
click node_player_damage "https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/DamageComponents/ArmourDamageHandlerComponent.cpp"
click node_status "https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/DamageComponents/StatusEffects/StatusEffectBase.cpp"
click node_enemy_actor "https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/Enemies/EnemyBaseCharacter.cpp"
click node_enemy_ai "https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/EnemyAI/EnemyParentAIController.cpp"
click node_ai_tasks "https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/EnemyAI/Tasks/EnemyMoveToBTTaskNode.cpp"
click node_ai_services "https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/EnemyAI/Services/AvoidanceVelCalcBTService.cpp"
click node_enemy_projectiles "https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/Enemies/EnemyProjectiles/EnemyProjectile.cpp"
click node_arena_master "https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/ArenaMaster/ArenaMaster.cpp"
click node_spawning "https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/ArenaMaster/SpawnComponents/Spawner.cpp"
click node_arena_paths "https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/ArenaMaster/PathControllers/ArenaPathController.cpp"
click node_game_mode "https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/GameManagment/BlundersGameModeBase.cpp"
click node_pickups "https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/PlayerBase/ResourcePickUps/PlayerResourcePickUpParent.cpp"
click node_hud "https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/PlayerBase/UI/PlayerHUD.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_player_actor,node_movement,node_movement_states,node_momentum toneBlue
class node_weapons,node_damage,node_player_damage,node_status toneAmber
class node_enemy_actor,node_enemy_ai,node_ai_tasks,node_ai_services,node_enemy_projectiles toneMint
class node_arena_master,node_spawning,node_arena_paths toneRose
class node_game_mode,node_pickups,node_hud,node_player_user toneIndigo
```

## Components

### Player Gameplay

- [Player Character](https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/PlayerBase/PlayerCharacter.cpp): `Source/BlundersGame/Private/PlayerBase/PlayerCharacter.cpp`
- [Movement Manager](https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/PlayerBase/MovementManager.cpp): `Source/BlundersGame/Private/PlayerBase/MovementManager.cpp`
- [Movement States](https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/PlayerMovementStates/PlayerMovementState.cpp): `Source/BlundersGame/Private/PlayerMovementStates/PlayerMovementState.cpp`
- [Momentum](https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/PlayerBase/PlayerMovement/MomentumAccumulatorComponent.cpp): `Source/BlundersGame/Private/PlayerBase/PlayerMovement/MomentumAccumulatorComponent.cpp`

### Combat

- [Player Weapons](https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/PlayerWeapons/Base/WeaponryComponent.cpp): `Source/BlundersGame/Private/PlayerWeapons/Base/WeaponryComponent.cpp`
- [Enemy Damage](https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/DamageComponents/DamageHandlerComponent.cpp): `Source/BlundersGame/Private/DamageComponents/DamageHandlerComponent.cpp`
- [Player Armor](https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/DamageComponents/ArmourDamageHandlerComponent.cpp): `Source/BlundersGame/Private/DamageComponents/ArmourDamageHandlerComponent.cpp`
- [Status Effects](https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/DamageComponents/StatusEffects/StatusEffectBase.cpp): `Source/BlundersGame/Private/DamageComponents/StatusEffects/StatusEffectBase.cpp`

### Enemy Gameplay

- [Enemy Characters](https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/Enemies/EnemyBaseCharacter.cpp): `Source/BlundersGame/Private/Enemies/EnemyBaseCharacter.cpp`
- [Enemy AI Controller](https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/EnemyAI/EnemyParentAIController.cpp): `Source/BlundersGame/Private/EnemyAI/EnemyParentAIController.cpp`
- [Behavior Tasks](https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/EnemyAI/Tasks/EnemyMoveToBTTaskNode.cpp): `Source/BlundersGame/Private/EnemyAI/Tasks/EnemyMoveToBTTaskNode.cpp`
- [AI Services](https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/EnemyAI/Services/AvoidanceVelCalcBTService.cpp): `Source/BlundersGame/Private/EnemyAI/Services/AvoidanceVelCalcBTService.cpp`
- [Enemy Projectiles](https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/Enemies/EnemyProjectiles/EnemyProjectile.cpp): `Source/BlundersGame/Private/Enemies/EnemyProjectiles/EnemyProjectile.cpp`

### Arena Flow

- [Arena Master](https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/ArenaMaster/ArenaMaster.cpp): `Source/BlundersGame/Private/ArenaMaster/ArenaMaster.cpp`
- [Enemy Spawning](https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/ArenaMaster/SpawnComponents/Spawner.cpp): `Source/BlundersGame/Private/ArenaMaster/SpawnComponents/Spawner.cpp`
- [Arena Path Control](https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/ArenaMaster/PathControllers/ArenaPathController.cpp): `Source/BlundersGame/Private/ArenaMaster/PathControllers/ArenaPathController.cpp`

### Game Support

- [Game Mode](https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/GameManagment/BlundersGameModeBase.cpp): `Source/BlundersGame/Private/GameManagment/BlundersGameModeBase.cpp`
- [Resource Pickups](https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/PlayerBase/ResourcePickUps/PlayerResourcePickUpParent.cpp): `Source/BlundersGame/Private/PlayerBase/ResourcePickUps/PlayerResourcePickUpParent.cpp`
- [Player HUD](https://github.com/glebdot/b2_archive/blob/main/Source/BlundersGame/Private/PlayerBase/UI/PlayerHUD.cpp): `Source/BlundersGame/Private/PlayerBase/UI/PlayerHUD.cpp`

### Other components

- **Player**

## Connections

- Player → Player Character: controls
- Movement Manager → Momentum: initializes
- Movement Manager → Movement States: initializes
- Movement Manager → Player Character: updates speed
- Movement Manager → Enemy Characters: checks jump overlap
- Enemy AI Controller → Enemy Characters: possesses
- Enemy AI Controller → Behavior Tasks: starts behavior tree
- AI Services → Enemy AI Controller: writes blackboard
- Enemy Damage → Enemy Characters: reduces health
- Enemy Damage → Status Effects: creates and updates
- Enemy Damage → Player Armor: delegates armor damage
- Arena Path Control → Arena Master: subscribes to lifecycle
- Arena Master → Enemy Spawning
