# arctictom/sandborneclean architecture

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

- Interactive diagram: https://gitdiagram.com/arctictom/sandborneclean
- Repository: https://github.com/arctictom/sandborneclean

## Overview

Sandborne is an Unreal Engine third-person, Souls-like game project. The visible native gameplay path is the game mode selecting the ThirdPersonCharacter Blueprint, whose C++ character implementation configures movement, camera, and input. Content assets indicate additional interaction, enemy, UI, level, animation, and environment capabilities, but their Blueprint wiring cannot be verified from the supplied excerpts. The graph therefore shows those content subsystems without guessed connections.

Main entry points: [`Source/SandborneClean/SandborneCleanGameMode.cpp`](https://github.com/arctictom/sandborneclean/blob/dev/development/Source/SandborneClean/SandborneCleanGameMode.cpp) (Game mode), [`Source/SandborneClean/SandborneCleanCharacter.cpp`](https://github.com/arctictom/sandborneclean/blob/dev/development/Source/SandborneClean/SandborneCleanCharacter.cpp) (Native character), [`Content/ThirdPersonCPP/Blueprints/ThirdPersonCharacter.uasset`](https://github.com/arctictom/sandborneclean/blob/dev/development/Content/ThirdPersonCPP/Blueprints/ThirdPersonCharacter.uasset) (Character Blueprint), [`Source/SandborneClean/SandborneCleanCharacter.h`](https://github.com/arctictom/sandborneclean/blob/dev/development/Source/SandborneClean/SandborneCleanCharacter.h) (Character API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Gameplay runtime"]
  node_gamemode["Game mode"]
  node_nativecharacter["Native character"]
  node_characterbp["Character Blueprint"]
  node_controllerbp["Player controller"]
  node_enemybp["Enemy<br/>[Enemy_BP.uasset]"]
  node_gameassets["Game mode Blueprint"]
  node_characterheader["Character API"]
  node_modeheader["Game mode API"]
end

subgraph group_content["Game content"]
  node_interactions["Interaction actors"]
  node_pickup["Sword pickup"]
  node_switch["Switch interaction"]
  node_interface["Interaction interface"]
  node_interactionui["Interaction UI"]
  node_playerui["Player UI<br/>[PlayerUI_BP.uasset]"]
end

subgraph group_world["World and assets"]
  node_level["Example level"]
  node_altlevel["Alternate level"]
  node_geometry["Environment meshes"]
  node_weapons["Sword assets<br/>[sword.uasset]"]
end

subgraph group_presentation["Character presentation"]
  node_animations["Character animations"]
  node_ledge["Ledge movement"]
  node_sidemove["Ledge side movement<br/>[MoveLeft.uasset]"]
end

node_player(("Player"))

node_gamemode -->|"selects default pawn"| node_characterbp
node_nativecharacter -->|"declares API"| node_characterheader
node_gamemode -->|"implements API"| node_modeheader

click node_gamemode "https://github.com/arctictom/sandborneclean/blob/dev/development/Source/SandborneClean/SandborneCleanGameMode.cpp"
click node_nativecharacter "https://github.com/arctictom/sandborneclean/blob/dev/development/Source/SandborneClean/SandborneCleanCharacter.cpp"
click node_characterbp "https://github.com/arctictom/sandborneclean/blob/dev/development/Content/ThirdPersonCPP/Blueprints/ThirdPersonCharacter.uasset"
click node_controllerbp "https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Player/PlayerController_BP.uasset"
click node_enemybp "https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Player/Enemy_BP.uasset"
click node_gameassets "https://github.com/arctictom/sandborneclean/blob/dev/development/Content/SandborneCleanGameMode_BP.uasset"
click node_interactions "https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Interactions/BP_InteractionParent.uasset"
click node_pickup "https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Interactions/BP_InteractionPickup_Sword.uasset"
click node_switch "https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Interactions/BP_Interaction_Switch.uasset"
click node_interface "https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Interactions/NewInterface.uasset"
click node_interactionui "https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Interactions/WBP_Interaction_UI.uasset"
click node_playerui "https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Player/PlayerUI_BP.uasset"
click node_level "https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Levels/ThirdPersonExampleMap.umap"
click node_altlevel "https://github.com/arctictom/sandborneclean/blob/dev/development/Content/_Levels/ThirdPersonExampleMap.umap"
click node_geometry "https://github.com/arctictom/sandborneclean/blob/dev/development/Content/ThirdPerson/Meshes/Linear_Stair_StaticMesh.uasset"
click node_weapons "https://github.com/arctictom/sandborneclean/blob/dev/development/Content/sword.uasset"
click node_animations "https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Mannequin/Animations/ThirdPerson_AnimBP.uasset"
click node_ledge "https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Mannequin/Animations/LedgeGrabAndClimb/Climb_Montage.uasset"
click node_sidemove "https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Mannequin/Animations/LedgeSideMovement/MoveLeft.uasset"
click node_characterheader "https://github.com/arctictom/sandborneclean/blob/dev/development/Source/SandborneClean/SandborneCleanCharacter.h"
click node_modeheader "https://github.com/arctictom/sandborneclean/blob/dev/development/Source/SandborneClean/SandborneCleanGameMode.h"

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_gamemode,node_nativecharacter,node_characterbp,node_controllerbp,node_enemybp,node_gameassets,node_characterheader,node_modeheader toneBlue
class node_interactions,node_pickup,node_switch,node_interface,node_interactionui,node_playerui toneAmber
class node_level,node_altlevel,node_geometry,node_weapons toneMint
class node_animations,node_ledge,node_sidemove toneRose
class node_player toneIndigo
```

## Components

### Gameplay runtime

- [Game mode](https://github.com/arctictom/sandborneclean/blob/dev/development/Source/SandborneClean/SandborneCleanGameMode.cpp): `Source/SandborneClean/SandborneCleanGameMode.cpp`
- [Native character](https://github.com/arctictom/sandborneclean/blob/dev/development/Source/SandborneClean/SandborneCleanCharacter.cpp): `Source/SandborneClean/SandborneCleanCharacter.cpp`
- [Character Blueprint](https://github.com/arctictom/sandborneclean/blob/dev/development/Content/ThirdPersonCPP/Blueprints/ThirdPersonCharacter.uasset): `Content/ThirdPersonCPP/Blueprints/ThirdPersonCharacter.uasset`
- [Player controller](https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Player/PlayerController_BP.uasset): `Content/Player/PlayerController_BP.uasset`
- [Enemy](https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Player/Enemy_BP.uasset): `Content/Player/Enemy_BP.uasset`
- [Game mode Blueprint](https://github.com/arctictom/sandborneclean/blob/dev/development/Content/SandborneCleanGameMode_BP.uasset): `Content/SandborneCleanGameMode_BP.uasset`
- [Character API](https://github.com/arctictom/sandborneclean/blob/dev/development/Source/SandborneClean/SandborneCleanCharacter.h): `Source/SandborneClean/SandborneCleanCharacter.h`
- [Game mode API](https://github.com/arctictom/sandborneclean/blob/dev/development/Source/SandborneClean/SandborneCleanGameMode.h): `Source/SandborneClean/SandborneCleanGameMode.h`

### Game content

- [Interaction actors](https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Interactions/BP_InteractionParent.uasset): `Content/Interactions/BP_InteractionParent.uasset`
- [Sword pickup](https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Interactions/BP_InteractionPickup_Sword.uasset): `Content/Interactions/BP_InteractionPickup_Sword.uasset`
- [Switch interaction](https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Interactions/BP_Interaction_Switch.uasset): `Content/Interactions/BP_Interaction_Switch.uasset`
- [Interaction interface](https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Interactions/NewInterface.uasset): `Content/Interactions/NewInterface.uasset`
- [Interaction UI](https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Interactions/WBP_Interaction_UI.uasset): `Content/Interactions/WBP_Interaction_UI.uasset`
- [Player UI](https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Player/PlayerUI_BP.uasset): `Content/Player/PlayerUI_BP.uasset`

### World and assets

- [Example level](https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Levels/ThirdPersonExampleMap.umap): `Content/Levels/ThirdPersonExampleMap.umap`
- [Alternate level](https://github.com/arctictom/sandborneclean/blob/dev/development/Content/_Levels/ThirdPersonExampleMap.umap): `Content/_Levels/ThirdPersonExampleMap.umap`
- [Environment meshes](https://github.com/arctictom/sandborneclean/blob/dev/development/Content/ThirdPerson/Meshes/Linear_Stair_StaticMesh.uasset): `Content/ThirdPerson/Meshes/Linear_Stair_StaticMesh.uasset`
- [Sword assets](https://github.com/arctictom/sandborneclean/blob/dev/development/Content/sword.uasset): `Content/sword.uasset`

### Character presentation

- [Character animations](https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Mannequin/Animations/ThirdPerson_AnimBP.uasset): `Content/Mannequin/Animations/ThirdPerson_AnimBP.uasset`
- [Ledge movement](https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Mannequin/Animations/LedgeGrabAndClimb/Climb_Montage.uasset): `Content/Mannequin/Animations/LedgeGrabAndClimb/Climb_Montage.uasset`
- [Ledge side movement](https://github.com/arctictom/sandborneclean/blob/dev/development/Content/Mannequin/Animations/LedgeSideMovement/MoveLeft.uasset): `Content/Mannequin/Animations/LedgeSideMovement/MoveLeft.uasset`

### Other components

- **Player**

## Connections

- Game mode → Character Blueprint: selects default pawn (evidence: `Source/SandborneClean/SandborneCleanGameMode.cpp`)
- Native character → Character API: declares API (evidence: `Source/SandborneClean/SandborneCleanCharacter.cpp`)
- Game mode → Game mode API: implements API (evidence: `Source/SandborneClean/SandborneCleanGameMode.cpp`)
