# tunahanyavuz/vampiresurvivals_game_practice_rust_bevy architecture

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

- Interactive diagram: https://gitdiagram.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy
- Repository: https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy

## Overview

This is a Bevy-based Vampire Survivors-style survival game. The core loop moves players through escalating enemy waves, fires weapons automatically, collects XP, and offers weapon upgrades until game over. LAN hosting and joining extend that loop with replicated state and remote input; menus, configuration, audio, and world presentation support the experience. Arrows follow plugin registration and explicit behavior visible in sampled excerpts; unsampled feature modules are included where their role is established by the README or tree, without guessing their internal call wiring.

Main entry points: [`src/plugins/enemy.rs`](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/enemy.rs) (Enemy waves), [`src/plugins/player.rs`](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/player.rs) (Player movement), [`src/plugins/weapons/upgrades.rs`](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/weapons/upgrades.rs) (Upgrade choices), [`src/plugins/weapons/core.rs`](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/weapons/core.rs) (Weapon combat)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_play["Survival gameplay"]
  node_player["Player movement<br/>[player.rs]"]
  node_enemy["Enemy waves<br/>[enemy.rs]"]
  node_boss["Boss encounters<br/>[boss.rs]"]
  node_reinforce["Reinforcements<br/>[reinforcements.rs]"]
end

subgraph group_progress["Combat progression"]
  node_weapons["Weapon combat<br/>[core.rs]"]
  node_upgrade["Upgrade choices<br/>[upgrades.rs]"]
  node_upgrade_ui["Upgrade screen<br/>[upgrade_screen.rs]"]
  node_score["Score tracking<br/>[score.rs]"]
end

subgraph group_multiplayer["LAN multiplayer"]
  node_net["Network transport<br/>[network.rs]"]
  node_lobby["Lobby connection<br/>[lobby.rs]"]
end

subgraph group_experience["Game experience"]
  node_menu["Main menu<br/>[main_menu.rs]"]
  node_escape["Escape menu<br/>[escape_menu.rs]"]
  node_settings["Settings<br/>[settings.rs]"]
  node_locale["Localization<br/>[locale.rs]"]
  node_ground["Infinite ground<br/>[ground.rs]"]
  node_particles["Particle effects"]
  node_audio["Audio playback<br/>[audio.rs]"]
end

subgraph group_foundation["Shared runtime"]
  node_assets["Texture assets"]
  node_config["Game configuration<br/>[config.rs]"]
  node_timers["Gameplay timers<br/>[timers.rs]"]
  node_common["Shared game entities<br/>[common.rs]"]
  node_game["Game orchestration<br/>[game.rs]"]
  node_states["Game states<br/>[game_state.rs]"]
end

node_user(("Player"))
node_peer(("LAN peer"))
node_bevy["Bevy runtime"]

node_user -->|"chooses mode"| node_menu
node_user -->|"moves"| node_player
node_player -->|"engages"| node_enemy
node_enemy -->|"deals damage"| node_player
node_enemy -->|"requests support"| node_reinforce
node_enemy -->|"spawns stages"| node_boss
node_player -->|"owns weapons"| node_weapons
node_weapons -->|"attacks"| node_enemy
node_enemy -->|"yields XP"| node_upgrade
node_upgrade -->|"presents choices"| node_upgrade_ui
node_upgrade_ui -->|"selects upgrade"| node_upgrade
node_upgrade -->|"applies stats"| node_weapons
node_enemy -->|"tracks kills"| node_score
node_lobby -->|"starts connection"| node_net
node_peer -->|"joins session"| node_lobby
node_player -->|"forwards input"| node_net
node_net -->|"delivers snapshots"| node_player
node_upgrade -->|"sends upgrade state"| node_net
node_menu -->|"changes state"| node_states
node_escape -->|"changes state"| node_states
node_settings -->|"changes state"| node_states
node_game -->|"sets up players"| node_player
node_game -->|"coordinates state"| node_states
node_enemy -->|"reads wave data"| node_config
node_enemy -->|"reads sprites"| node_assets
node_ground -->|"reads textures"| node_assets
node_weapons -->|"spawns effects"| node_particles
node_weapons -->|"plays sounds"| node_audio
node_upgrade -->|"localizes options"| node_locale
node_menu -->|"localizes labels"| node_locale
node_player -->|"uses collision helpers"| node_common
node_bevy -->|"runs app"| node_game
node_timers -->|"updates systems"| node_bevy

click node_player "https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/player.rs"
click node_enemy "https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/enemy.rs"
click node_boss "https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/boss.rs"
click node_reinforce "https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/reinforcements.rs"
click node_weapons "https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/weapons/core.rs"
click node_upgrade "https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/weapons/upgrades.rs"
click node_upgrade_ui "https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/weapons/upgrade_screen.rs"
click node_score "https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/score.rs"
click node_net "https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/network.rs"
click node_lobby "https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/lobby.rs"
click node_menu "https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/main_menu.rs"
click node_escape "https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/escape_menu.rs"
click node_settings "https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/settings.rs"
click node_locale "https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/locale.rs"
click node_ground "https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/ground.rs"
click node_particles "https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/particle_effects.rs"
click node_audio "https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/audio.rs"
click node_assets "https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/texture_handling.rs"
click node_config "https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/config.rs"
click node_timers "https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/timers.rs"
click node_common "https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/common.rs"
click node_game "https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/game.rs"
click node_states "https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/game_state.rs"

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,node_enemy,node_boss,node_reinforce toneBlue
class node_weapons,node_upgrade,node_upgrade_ui,node_score toneAmber
class node_net,node_lobby toneMint
class node_menu,node_escape,node_settings,node_locale,node_ground,node_particles,node_audio toneRose
class node_assets,node_config,node_timers,node_common,node_game,node_states,node_user,node_peer,node_bevy toneIndigo
```

## Components

### Survival gameplay

- [Player movement](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/player.rs): `src/plugins/player.rs`
- [Enemy waves](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/enemy.rs): `src/plugins/enemy.rs`
- [Boss encounters](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/boss.rs): `src/plugins/boss.rs`
- [Reinforcements](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/reinforcements.rs): `src/plugins/reinforcements.rs`

### Combat progression

- [Weapon combat](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/weapons/core.rs): `src/plugins/weapons/core.rs`
- [Upgrade choices](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/weapons/upgrades.rs): `src/plugins/weapons/upgrades.rs`
- [Upgrade screen](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/weapons/upgrade_screen.rs): `src/plugins/weapons/upgrade_screen.rs`
- [Score tracking](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/score.rs): `src/plugins/score.rs`

### LAN multiplayer

- [Network transport](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/network.rs): `src/plugins/network.rs`
- [Lobby connection](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/lobby.rs): `src/plugins/lobby.rs`

### Game experience

- [Main menu](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/main_menu.rs): `src/plugins/main_menu.rs`
- [Escape menu](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/escape_menu.rs): `src/plugins/escape_menu.rs`
- [Settings](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/settings.rs): `src/plugins/settings.rs`
- [Localization](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/locale.rs): `src/plugins/locale.rs`
- [Infinite ground](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/ground.rs): `src/plugins/ground.rs`
- [Particle effects](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/particle_effects.rs): `src/plugins/particle_effects.rs`
- [Audio playback](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/audio.rs): `src/plugins/audio.rs`

### Shared runtime

- [Texture assets](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/texture_handling.rs): `src/plugins/texture_handling.rs`
- [Game configuration](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/config.rs): `src/plugins/config.rs`
- [Gameplay timers](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/timers.rs): `src/plugins/timers.rs`
- [Shared game entities](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/common.rs): `src/plugins/common.rs`
- [Game orchestration](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/game.rs): `src/plugins/game.rs`
- [Game states](https://github.com/tunahanyavuz/vampiresurvivals_game_practice_rust_bevy/blob/main/src/plugins/game_state.rs): `src/plugins/game_state.rs`

### Other components

- **Player**
- **LAN peer**
- **Bevy runtime**

## Connections

- Player → Main menu: chooses mode
- Player → Player movement: moves
- Player movement → Enemy waves: engages
- Enemy waves → Player movement: deals damage
- Enemy waves → Reinforcements: requests support
- Enemy waves → Boss encounters: spawns stages
- Player movement → Weapon combat: owns weapons
- Weapon combat → Enemy waves: attacks
- Enemy waves → Upgrade choices: yields XP
- Upgrade choices → Upgrade screen: presents choices
- Upgrade screen → Upgrade choices: selects upgrade
- Upgrade choices → Weapon combat: applies stats
- Enemy waves → Score tracking: tracks kills
- Lobby connection → Network transport: starts connection
- LAN peer → Lobby connection: joins session
- Player movement → Network transport: forwards input
- Network transport → Player movement: delivers snapshots
- Upgrade choices → Network transport: sends upgrade state
- Main menu → Game states: changes state
- Escape menu → Game states: changes state
- Settings → Game states: changes state
- Game orchestration → Player movement: sets up players
- Game orchestration → Game states: coordinates state
- Enemy waves → Game configuration: reads wave data
- Enemy waves → Texture assets: reads sprites
- Infinite ground → Texture assets: reads textures
- Weapon combat → Particle effects: spawns effects
- Weapon combat → Audio playback: plays sounds
- Upgrade choices → Localization: localizes options
- Main menu → Localization: localizes labels
- Player movement → Shared game entities: uses collision helpers
- Bevy runtime → Game orchestration: runs app
- Gameplay timers → Bevy runtime: updates systems
