# malicehightopp1/project-riptide architecture

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

- Interactive diagram: https://gitdiagram.com/malicehightopp1/project-riptide
- Repository: https://github.com/malicehightopp1/project-riptide

## Overview

Project Riptide is an Unreal Engine action-RPG prototype. Its visible workflow runs from menu class selection into a playable character, where player input triggers combat abilities and character progression is reflected in HUD and stats widgets. Enemy characters and Blueprint Gameplay Ability System assets provide additional combat content. The C++ excerpts establish several runtime calls; Blueprint asset internals and the README are unavailable, so links involving those assets are not asserted.

Main entry points: [`Source/Project_Riptide/Private/GameplayAbilitySystems/Characters/Player/PlayerCharacter.cpp`](https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/Characters/Player/PlayerCharacter.cpp) (Player Character), [`Source/Project_Riptide/Private/GameplayAbilitySystems/Characters/BaseCharacter.cpp`](https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/Characters/BaseCharacter.cpp) (Base Character), [`Source/Project_Riptide/Private/GameplayAbilitySystems/GameplayAbilities/CombatGameplayAbility.cpp`](https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/GameplayAbilities/CombatGameplayAbility.cpp) (Combat Ability), [`Source/Project_Riptide/Private/GameplayAbilitySystems/Widgets/StatsMenuWidget.cpp`](https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/Widgets/StatsMenuWidget.cpp) (Stats Menu)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_menu["Menu and Selection"]
  node_menu_mode["Menu Game Mode<br/>[MenuGameMode.cpp]"]
  node_menu_widget["Main Menu<br/>[MainMenuWidget.cpp]"]
  node_class_card["Class Card"]
  node_game_instance["Class Selection State"]
end

subgraph group_characters["Characters and Input"]
  node_player["Player Character"]
  node_base["Base Character<br/>[BaseCharacter.cpp]"]
  node_enemy["Enemy Character<br/>[EnemyCharacter.cpp]"]
  node_movement["Character Movement"]
end

subgraph group_combat["Combat and Progression"]
  node_ability_system["Combat Ability System"]
  node_attributes["Combat Attributes"]
  node_ability["Combat Ability"]
  node_tags["Combat Tags"]
  node_ability_assets["Ability and Effect Assets"]
end

subgraph group_ui["Player Interface"]
  node_hud["Player HUD"]
  node_stats_menu["Stats Menu"]
  node_stat_row["Stat Row<br/>[StatRowWidget.h]"]
end

node_actor(("Player"))

node_menu_mode -->|"creates"| node_menu_widget
node_class_card -->|"selects class"| node_menu_widget
node_player -->|"reads selection"| node_game_instance
node_player -->|"forwards ability input"| node_ability_system
node_base -->|"creates and initializes"| node_ability_system
node_base -->|"creates"| node_attributes
node_base -->|"grants startup abilities"| node_ability
node_ability -->|"reads damage multiplier"| node_attributes
node_player -->|"creates HUD"| node_hud
node_player -->|"creates and refreshes"| node_stats_menu
node_stats_menu -->|"uses rows"| node_stat_row
node_player -.->|"receives input"| node_actor

click node_player "https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/Characters/Player/PlayerCharacter.cpp"
click node_base "https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/Characters/BaseCharacter.cpp"
click node_enemy "https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/Characters/Enemies/EnemyCharacter.cpp"
click node_movement "https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/Characters/CharacterMovement/BaseMovementComponent.h"
click node_menu_mode "https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/GameControllers/MenuGameMode.cpp"
click node_menu_widget "https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/Widgets/MainMenuWidget.cpp"
click node_class_card "https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/Widgets/ClassInformationWidget.cpp"
click node_game_instance "https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/GameControllers/CombatGameInstance.h"
click node_ability_system "https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/AbilitySystemComponent/CombatAbilitysystemComponent.cpp"
click node_attributes "https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/AttributeSets/CombatAttributeSet.cpp"
click node_ability "https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/GameplayAbilities/CombatGameplayAbility.cpp"
click node_tags "https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/Tags/CombatGameplayTags.cpp"
click node_ability_assets "https://github.com/malicehightopp1/project-riptide/tree/main/Content/_MyFiles/GAS"
click node_hud "https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/Widgets/PlayerHUDWidget.cpp"
click node_stats_menu "https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/Widgets/StatsMenuWidget.cpp"
click node_stat_row "https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/Widgets/StatRowWidget.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_menu_mode,node_menu_widget,node_class_card,node_game_instance toneBlue
class node_player,node_base,node_enemy,node_movement toneAmber
class node_ability_system,node_attributes,node_ability,node_tags,node_ability_assets toneMint
class node_hud,node_stats_menu,node_stat_row toneRose
class node_actor toneIndigo
```

## Components

### Menu and Selection

- [Menu Game Mode](https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/GameControllers/MenuGameMode.cpp): `Source/Project_Riptide/Private/GameplayAbilitySystems/GameControllers/MenuGameMode.cpp`
- [Main Menu](https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/Widgets/MainMenuWidget.cpp): `Source/Project_Riptide/Private/GameplayAbilitySystems/Widgets/MainMenuWidget.cpp`
- [Class Card](https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/Widgets/ClassInformationWidget.cpp): `Source/Project_Riptide/Private/GameplayAbilitySystems/Widgets/ClassInformationWidget.cpp`
- [Class Selection State](https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/GameControllers/CombatGameInstance.h): `Source/Project_Riptide/Private/GameplayAbilitySystems/GameControllers/CombatGameInstance.h`

### Characters and Input

- [Player Character](https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/Characters/Player/PlayerCharacter.cpp): `Source/Project_Riptide/Private/GameplayAbilitySystems/Characters/Player/PlayerCharacter.cpp`
- [Base Character](https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/Characters/BaseCharacter.cpp): `Source/Project_Riptide/Private/GameplayAbilitySystems/Characters/BaseCharacter.cpp`
- [Enemy Character](https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/Characters/Enemies/EnemyCharacter.cpp): `Source/Project_Riptide/Private/GameplayAbilitySystems/Characters/Enemies/EnemyCharacter.cpp`
- [Character Movement](https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/Characters/CharacterMovement/BaseMovementComponent.h): `Source/Project_Riptide/Private/GameplayAbilitySystems/Characters/CharacterMovement/BaseMovementComponent.h`

### Combat and Progression

- [Combat Ability System](https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/AbilitySystemComponent/CombatAbilitysystemComponent.cpp): `Source/Project_Riptide/Private/GameplayAbilitySystems/AbilitySystemComponent/CombatAbilitysystemComponent.cpp`
- [Combat Attributes](https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/AttributeSets/CombatAttributeSet.cpp): `Source/Project_Riptide/Private/GameplayAbilitySystems/AttributeSets/CombatAttributeSet.cpp`
- [Combat Ability](https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/GameplayAbilities/CombatGameplayAbility.cpp): `Source/Project_Riptide/Private/GameplayAbilitySystems/GameplayAbilities/CombatGameplayAbility.cpp`
- [Combat Tags](https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/Tags/CombatGameplayTags.cpp): `Source/Project_Riptide/Private/GameplayAbilitySystems/Tags/CombatGameplayTags.cpp`
- [Ability and Effect Assets](https://github.com/malicehightopp1/project-riptide/tree/main/Content/_MyFiles/GAS): `Content/_MyFiles/GAS`

### Player Interface

- [Player HUD](https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/Widgets/PlayerHUDWidget.cpp): `Source/Project_Riptide/Private/GameplayAbilitySystems/Widgets/PlayerHUDWidget.cpp`
- [Stats Menu](https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/Widgets/StatsMenuWidget.cpp): `Source/Project_Riptide/Private/GameplayAbilitySystems/Widgets/StatsMenuWidget.cpp`
- [Stat Row](https://github.com/malicehightopp1/project-riptide/blob/main/Source/Project_Riptide/Private/GameplayAbilitySystems/Widgets/StatRowWidget.h): `Source/Project_Riptide/Private/GameplayAbilitySystems/Widgets/StatRowWidget.h`

### Other components

- **Player**

## Connections

- Menu Game Mode → Main Menu: creates (evidence: `Source/Project_Riptide/Private/GameplayAbilitySystems/GameControllers/MenuGameMode.cpp`)
- Class Card → Main Menu: selects class (evidence: `Source/Project_Riptide/Private/GameplayAbilitySystems/Widgets/ClassInformationWidget.cpp`)
- Player Character → Class Selection State: reads selection (evidence: `Source/Project_Riptide/Private/GameplayAbilitySystems/Characters/Player/PlayerCharacter.cpp`)
- Player Character → Combat Ability System: forwards ability input (evidence: `Source/Project_Riptide/Private/GameplayAbilitySystems/Characters/Player/PlayerCharacter.cpp`)
- Base Character → Combat Ability System: creates and initializes (evidence: `Source/Project_Riptide/Private/GameplayAbilitySystems/Characters/BaseCharacter.cpp`)
- Base Character → Combat Attributes: creates (evidence: `Source/Project_Riptide/Private/GameplayAbilitySystems/Characters/BaseCharacter.cpp`)
- Base Character → Combat Ability: grants startup abilities (evidence: `Source/Project_Riptide/Private/GameplayAbilitySystems/Characters/BaseCharacter.cpp`)
- Combat Ability → Combat Attributes: reads damage multiplier (evidence: `Source/Project_Riptide/Private/GameplayAbilitySystems/GameplayAbilities/CombatGameplayAbility.cpp`)
- Player Character → Player HUD: creates HUD (evidence: `Source/Project_Riptide/Private/GameplayAbilitySystems/Characters/Player/PlayerCharacter.cpp`)
- Player Character → Stats Menu: creates and refreshes (evidence: `Source/Project_Riptide/Private/GameplayAbilitySystems/Characters/Player/PlayerCharacter.cpp`)
- Stats Menu → Stat Row: uses rows (evidence: `Source/Project_Riptide/Private/GameplayAbilitySystems/Widgets/StatsMenuWidget.cpp`)
- Player Character → Player: receives input
