From d29748b8abbfde38fc36f1638ca58101c64c8c7d Mon Sep 17 00:00:00 2001 From: CatryBenoit Date: Fri, 4 Sep 2026 17:06:28 +0200 Subject: [PATCH] =?UTF-8?q?S=C3=A9lection=20rapide=20d'=C3=A9quipement,=20?= =?UTF-8?q?mort=20par=20chute,=20fixes=20inventaire/audio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Ajoute le menu de sélection rapide (WB_QuickSelect, IA_QuickSelectAGIS/IA_QuickEquipAGIS) et l'écran de mort (WB_YouDied) sur Inventory_Player. - Corrige le mauvais placement des items dans les slots d'équipement (désalignement entre PlayerInventoryPart1/2 et les widgets d'équip slot). - Corrige le bourdonnement audio permanent causé par une double instance de Ultra_Dynamic_Weather créée en PIE. - Renomme Systems/Blueprints/d/SandboxCharacter_CMC_ABP vers son bon dossier. - Met à jour Architecture_Projet.md et ajoute le skill de maintenance associé. - Inclut le fix de config audio (DefaultEngine.ini) et les changements de config moteur associés. Co-Authored-By: Claude Sonnet 5 --- .../skills/maintain-architecture-doc/SKILL.md | 70 +++ Architecture_Projet.md | 552 +++++++++++++++--- Config/DefaultEngine.ini | 33 +- Content/BP_GameInstance.uasset | 4 +- Content/BP_TickManager.uasset | 4 +- .../CHT_CMCCharacterAnimations.uasset | 4 +- .../CHT_PoseSearchDatabases.uasset | 4 +- .../CHT_PoseSearchDatabases_Dense.uasset | 4 +- ...T_PoseSearchDatabases_ExtremeSparse.uasset | 4 +- .../CHT_PoseSearchDatabases_Sparse.uasset | 4 +- .../Coreinventory/Inventory_Player.uasset | 4 +- .../InventoryData/PlayerInventoryPart1.uasset | 4 +- .../InventoryData/PlayerInventoryPart2.uasset | 4 +- Content/Maps/DevMap/MapDev1.umap | 4 +- Content/SandboxCharacter_CMC.uasset | 4 +- .../BP_NotifyState_EarlyTransition.uasset | 4 +- .../SandboxCharacter_CMC_ABP.uasset | 3 + .../d/SandboxCharacter_CMC_ABP.uasset | 3 - .../Inputs/Actions/IA_QuickEquipAGIS.uasset | 3 + .../Inputs/Actions/IA_QuickSelectAGIS.uasset | 3 + .../Other/Inputs/IMC_AGIS_Character.uasset | 4 +- .../Movement/BPC_ClimbingComponent.uasset | 4 +- .../Movement/CR_ClimbingGraphV2.uasset | 4 +- .../Movement/CR_Mannequin_BasicFootIK.uasset | 4 +- .../Climbing/CR_ClimbingGraphV2.uasset | 4 +- .../Climbing/CR_Mannequin_BasicFootIK.uasset | 4 +- Content/Systems/Stats/ACStats.uasset | 4 +- Content/Systems/Stats/AC_Stats.uasset | 4 +- .../Blueprints/Ultra_Dynamic_Weather.uasset | 4 +- .../InventoryMenu/WB_InventoryPart1.uasset | 4 +- .../InventoryMenu/WB_InventoryPart2.uasset | 4 +- .../Widgets/Other/WB_QuickSelect.uasset | 3 + .../Widgets/Other/WB_YouDied.uasset | 3 + .../Inventory_UI/Widgets/WB_Container.uasset | 4 +- 34 files changed, 650 insertions(+), 123 deletions(-) create mode 100644 .claude/skills/maintain-architecture-doc/SKILL.md create mode 100644 Content/Systems/Blueprints/SandboxCharacter_CMC_ABP.uasset delete mode 100644 Content/Systems/Blueprints/d/SandboxCharacter_CMC_ABP.uasset create mode 100644 Content/Systems/Inventory/Other/Inputs/Actions/IA_QuickEquipAGIS.uasset create mode 100644 Content/Systems/Inventory/Other/Inputs/Actions/IA_QuickSelectAGIS.uasset create mode 100644 Content/UI/Inventory_UI/Widgets/Other/WB_QuickSelect.uasset create mode 100644 Content/UI/Inventory_UI/Widgets/Other/WB_YouDied.uasset diff --git a/.claude/skills/maintain-architecture-doc/SKILL.md b/.claude/skills/maintain-architecture-doc/SKILL.md new file mode 100644 index 00000000..ba983f1c --- /dev/null +++ b/.claude/skills/maintain-architecture-doc/SKILL.md @@ -0,0 +1,70 @@ +--- +name: maintain-architecture-doc +description: Maintient Architecture_Projet.md (documentation de référence de l'architecture du projet ProjectF) synchronisé avec la structure réelle du projet. À utiliser avant et après toute création, suppression, déplacement ou renommage de fichier/dossier, ou toute évolution significative d'un système de gameplay. +--- + +# Maintenir `Architecture_Projet.md` + +## Rôle de ce document + +`Architecture_Projet.md` (à la racine du projet) est la **documentation de référence de l'architecture complète du projet ProjectF**, écrite en priorité pour des modèles d'IA. Il décrit l'arborescence complète du projet, le rôle de chaque dossier/fichier important, les dépendances entre systèmes et les conventions à respecter. + +**Ce document n'a de valeur que s'il reste synchronisé avec l'état réel du projet.** Un `Architecture_Projet.md` obsolète est pire qu'utile : il fait perdre du temps et induit en erreur les futures sessions d'IA qui lui font confiance. + +## Quand utiliser ce skill + +Utilise ce skill (consultation et/ou mise à jour) dans les cas suivants : + +1. **Avant** de modifier la structure du projet de façon un peu conséquente (créer un nouveau système, réorganiser un dossier, migrer des assets) : lis `Architecture_Projet.md` pour comprendre où les choses vivent actuellement et où ton changement doit s'insérer, en cohérence avec les conventions déjà en place (voir §1.4/§1.5 du document). +2. **Après** toute action qui change la structure du projet, notamment : + - création d'un fichier ou dossier important (Blueprint, Widget, DataAsset, Struct, Enum, Input Action, système de gameplay…) ; + - suppression d'un fichier ou dossier documenté ; + - déplacement d'un fichier ou dossier documenté ; + - renommage d'un fichier ou dossier documenté ; + - évolution suffisamment importante d'un système existant (nouvelle responsabilité, nouveau fichier central, changement de dépendances entre systèmes). +3. Quand tu n'es pas sûr de savoir où se trouve un système ou un type de fichier avant de commencer une tâche — consulte le document plutôt que d'explorer le projet à l'aveugle. + +Pour une petite modification purement interne à un Blueprint déjà documenté (ajouter une fonction, une variable, corriger un bug de logique) qui ne change ni son rôle général ni l'arborescence, une mise à jour du document n'est en général PAS nécessaire — sauf si la description existante du fichier devient trompeuse. + +## Comment mettre à jour le document + +1. **Localise la bonne section.** Le document est organisé par grande zone (`§3 Content/Core/`, `§4 Content/Systems/`, `§5 Content/Data/`, `§6 Content/UI/`, `§7 Items/PCG/Maps/VFX/Prop`, `§8 assets tiers`). Trouve la section correspondant au dossier concerné avant d'éditer — ne duplique pas une entrée dans plusieurs sections. + +2. **Fichier créé** → ajoute une ligne dans l'arborescence du dossier concerné, avec une description courte (une phrase, orientée "à quoi ça sert" / "quel rôle" — pas une paraphrase du nom de fichier). Suis le format déjà utilisé : + ```text + ├── NomDuFichier.uasset → Rôle en une phrase. + ``` + Si le fichier crée un nouveau sous-système notable, ajoute-le aussi à la vue de dépendances (§1.3) si pertinent. + +3. **Fichier/dossier supprimé** → retire entièrement son entrée. Ne laisse jamais une ligne qui référence un chemin qui n'existe plus. Si sa suppression change une dépendance décrite en §1.3, corrige aussi cette section. + +4. **Fichier/dossier déplacé ou renommé** → corrige le chemin (et le nom) à l'endroit où il apparaît. S'il change de section logique (ex. un Blueprint qui quitte `Systems/Inventory/` pour un nouveau dossier `Systems/Crafting/`), déplace aussi son entrée dans la bonne section du document, pas seulement son chemin. + +5. **Nouveau système de gameplay** (nouveau dossier sous `Content/Systems//` ou équivalent) → crée une nouvelle sous-section dans `§4` (ou une nouvelle section de premier niveau si le système est majeur), avec : + - la liste de ses fichiers importants et leur rôle ; + - ses dépendances avec les autres systèmes, ajoutées à `§1.3` si le système interagit avec l'inventaire, les stats, ou le personnage. + +6. **Évolution significative d'un système existant** → mets à jour sa description pour refléter son rôle actuel. Ne laisse pas une description qui décrit un comportement qui n'existe plus. + +7. **Nouveau dossier d'assets tiers volumineux** (Marketplace, Fab, packs d'animation…) → ajoute-le en `§8` avec une description sommaire d'une ligne, SANS lister ses fichiers individuellement (voir règle de détail ci-dessous). + +## Règle de niveau de détail + +- Un fichier "important" à documenter individuellement = il porte de la **logique ou des données de gameplay** propres au projet (Blueprint, Widget, ActorComponent, DataAsset, Struct, Enum, Input Action, GameMode/PlayerController, système PCG…). +- Un fichier purement artistique (texture, mesh, clip d'animation individuel, matériau de variante, miniature) n'a **pas** besoin d'entrée dédiée : il suffit que son dossier parent soit listé et décrit brièvement. Ne gonfle pas le document en énumérant chaque texture d'un pack d'assets. +- Un dossier d'assets tiers volumineux (Marketplace, Megascans, packs de mocap) est décrit en une ligne (`§8`), pas détaillé fichier par fichier. + +## Vérification de cohérence + +Avant de terminer une tâche qui a touché à la structure du projet, vérifie que : + +- chaque chemin mentionné dans `Architecture_Projet.md` correspondant à ta zone de travail existe toujours réellement (pas de faux positif après un déplacement/renommage que tu aurais oublié de répercuter) ; +- les nouveaux fichiers importants que tu as créés apparaissent bien dans le document, avec une description ; +- les fichiers que tu as supprimés n'apparaissent plus nulle part dans le document (y compris dans `§1.3` Dépendances et dans les tableaux de conventions si applicable) ; +- si tu as un doute sur l'exhaustivité, un simple `find -type f` (ou `Glob`) suffit à comparer rapidement la réalité du dossier concerné avec ce que le document décrit — inutile de ré-auditer tout le projet à chaque fois, seulement la zone que tu viens de modifier. + +## Ce qu'il ne faut jamais faire + +- Ne jamais terminer une tâche qui a modifié la structure du projet (création/suppression/déplacement/renommage de fichier ou dossier important, nouveau système) sans avoir mis à jour `Architecture_Projet.md` en conséquence. +- Ne jamais laisser une description qui ne correspond plus à la réalité "parce que ce n'est pas grave" — un document d'architecture légèrement faux est plus dangereux qu'un document incomplet mais honnête. +- Ne jamais dupliquer une entrée dans deux sections différentes du document après un déplacement (supprime l'ancienne en ajoutant la nouvelle). diff --git a/Architecture_Projet.md b/Architecture_Projet.md index e17835f0..47836908 100644 --- a/Architecture_Projet.md +++ b/Architecture_Projet.md @@ -1,77 +1,495 @@ # 🏗️ Architecture du Projet — ProjectF -*Projet Unreal Engine 5 — Vue d'ensemble de l'arborescence* - -``` -ProjectF/ -│ -├── 📄 .gitattributes # Règles Git (LFS, line-ending) -├── 📄 .gitignore # Fichiers ignorés par Git -├── 📄 .mcp.json # Configuration MCP (Model Context Protocol) -├── 📄 ProjectF.uproject # Fichier principal du projet UE5 -├── 📄 README.md # Documentation du projet -│ -├── ⚙️ Config/ # Configuration du moteur et du jeu -│ ├── 📁 Layouts/ # Dispositions d'éditeur (workspaces) -│ ├── 📄 DefaultEditor.ini # Paramètres de l'éditeur UE -│ ├── 📄 DefaultEngine.ini # Configuration du moteur (rendu, physique…) -│ ├── 📄 DefaultGame.ini # Réglages du jeu (classes par défaut, tags…) -│ ├── 📄 DefaultGameplayTags.ini # Tags GameplayFramework -│ └── 📄 DefaultInput.ini # Mappage des entrées clavier/souris/manette -│ -├── 🎨 Content/ # Assets du jeu (UAsset, Blueprints, Maps…) -│ │ -│ ├── 📁 Animations/ # Clips et séquences d'animation (8 éléments) -│ ├── 📁 Audio/ # Sons, musiques, SoundCues (vide) -│ ├── 📁 Characters/ # Blueprints et meshes des personnages (2 éléments) -│ ├── 📁 Collections/ # GameplayCollection pour regroupement d'assets (vide) -│ ├── 📁 Core/ # Assets fondamentaux du jeu (3 éléments) -│ ├── 📁 Data/ # Tables de données, DataAssets, CurveTables (4 éléments) -│ ├── 📁 Developers/ # Outils et assets de développement (1 élément) -│ ├── 📁 Fab/ # Assets générés ou importés via Fab (5 éléments) -│ ├── 📁 Items/ # Objets interactifs, pickups, inventaire (27 éléments) -│ ├── 📁 Maps/ # Niveaux et niveaux de streaming (1 élément) -│ ├── 📁 Misc/ # Assets divers sans catégorie spécifique (1 élément) -│ ├── 📁 Prop/ # Props statiques et décoratifs (1 élément) -│ ├── 📁 Systems/ # Systèmes de jeu : GameMode, PlayerController… (10 éléments) -│ ├── 📁 Thumbnails/ # Prévisualisations et icônes d'assets (3 éléments) -│ ├── 📁 UI/ # Widgets UMG, menus, HUD (3 éléments) -│ ├── 📁 VFX/ # Particules, Niagara, effets visuels (9 éléments) -│ ├── 📁 __ExternalActors__/ # Actors créés dynamiquement hors éditeur -│ └── 📁 __ExternalObjects__/ # Objets externes liés au projet -│ -├── 🔧 .vscode/ # Configuration VS Code -│ └── 📄 mcp.json # Configuration MCP pour VS Code -│ -├── 🔧 .codex/ # Configuration Codex CLI -│ └── 📄 config.toml # Paramètres Codex -│ -├── 🔧 .cursor/ # Configuration Cursor IDE -│ └── 📄 mcp.json # Configuration MCP pour Cursor -│ -└── 🔧 .gemini/ # Configuration Gemini CLI - └── 📄 settings.json # Paramètres Gemini -``` +> **Ce document est la référence d'architecture du projet, destinée en priorité aux modèles d'IA (Claude, etc.) qui vont lire, modifier ou créer du contenu dans ce projet Unreal Engine.** +> Il doit permettre de comprendre **où se trouve chaque système, quel fichier est responsable de quoi, et où ajouter du nouveau contenu** — sans avoir à explorer tout le projet à chaque session. +> +> ⚠️ **Ce document doit rester à jour.** Voir la section [10. Maintenir ce document à jour](#10-maintenir-ce-document-à-jour) et le skill `maintain-architecture-doc`. --- -## Dossiers exclus (générés automatiquement par Unreal Engine) +## 1. Vue d'ensemble du projet -| Dossier | Raison de l'exclusion | -|---|---| -| `Intermediate/` | Fichiers intermédiaires de compilation | -| `Saved/` | Sauvegardes, logs, captures, profils | -| `Binaries/` | Exécutables et bibliothèques compilées | -| `DerivedDataCache/` | Cache de données dérivées du moteur | +### 1.1 Nature du projet ---- +- **Moteur** : Unreal Engine **5.8**. +- **Aucun code C++** : il n'y a pas de dossier `Source/`. Tout le gameplay est écrit en **Blueprint visuel**, dans `Content/`. +- **Genre** : jeu de survie / extraction en vue 3e personne avec un **inventaire en grille façon "Escape from Tarkov"** (armure, sac à dos, armes, munitions, craft sur feu de camp/fonderie, générateurs, lecteurs de carte magnétique, coffres, PNJ pillables, véhicules). +- **Multijoueur** : le système d'inventaire est répliqué (RPC client/serveur visibles partout dans `Inventory_Player`, ex. `Request Switch Weapon SERVER`, `Disarm Request SERVER`). Le projet doit donc être pensé serveur-autoritaire pour tout ce qui touche à l'inventaire, aux stats et au combat. -## Résumé rapide +### 1.2 Les grandes couches du projet -| Catégorie | Dossiers | Description | +Le projet est construit par empilement de **trois grands blocs** de contenu, plus une couche d'outillage IA : + +1. **Framework de personnage / locomotion ("Sandbox Character")** — `Content/Systems/Blueprints/` + Basé sur le sample officiel Epic "Motion Matching" (plugins `Mover`, `MotionWarping`, `MotionTrajectory`, `Chooser`, `AnimationLocomotionLibrary`, `AnimationWarping`). Gère le mouvement, la caméra, le Motion Matching, le traversal (vault/mantle/climb), les modes de mouvement personnalisés. **Ce framework est en grande partie template/tiers** : n'y toucher qu'en connaissance de cause. + +2. **Système d'inventaire AGIS** ("Advanced Grid Inventory System", asset marketplace) — `Content/Core/Coreinventory/`, `Content/Systems/Inventory/`, `Content/UI/Inventory_UI/`, `Content/Data/Inventory_Data/`. + C'est le **cœur du gameplay** : inventaire en grille, équipement, craft, loot, sauvegarde. La quasi-totalité des systèmes de jeu ajoutés par l'équipe (stats, mort, sélection rapide d'équipement, interactables) se branchent sur ce système. + +3. **Systèmes de jeu spécifiques au projet**, ajoutés par-dessus AGIS — `Content/Systems/Stats/`, `Content/Systems/Scent/`, `Content/Systems/Movable_Object/`, `Content/Systems/Door/`, `Content/PCG/`, `Content/Items/`, `Content/UI/Widgets/` (HUD, pause menu). C'est ici que la majorité des évolutions de gameplay futures doivent être ajoutées. + +4. **Outillage IA** — plugins `VibeUE`, `EditorToolset`, `ModelContextProtocol`, `Terminal` (déclarés dans `ProjectF.uproject`) + `.mcp.json` à la racine. Ils exposent l'éditeur Unreal (Blueprints, Widgets, Input, PCG, Landscape, Niagara, etc.) à un serveur MCP local (`http://127.0.0.1:8000/mcp`) piloté par des agents Claude. **C'est le mécanisme par lequel un modèle d'IA lit/modifie ce projet** — voir la section [9. Notes pour les IA](#9-notes-pour-les-ia-pièges-connus-de-loutillage) pour les pièges connus. + +En plus de cela, deux couches d'assets tiers volumineuses sont présentes mais **ne contiennent pas de logique de gameplay propre au projet** : le pack météo **UltraDynamicSky** (`Content/Systems/Weather/UltraDynamicSky/`) et diverses bibliothèques d'assets 3D Fab/Megascans/Quixel (`Content/Fab/`, `Content/Megaplant_Library/`, une bonne partie de `Content/Animations/` et `Content/Characters/`). + +### 1.3 Dépendances principales entre systèmes + +``` +Character (Pawn, géré par le framework "Sandbox Character") + │ + ├─ Composant Inventory_Player (Content/Core/Coreinventory/Inventory_Player) + │ └─ hérite de Inventory_Equipper (équipement d'armes/objets) + │ └─ hérite de Inventory__Main (cœur générique AGIS : slots, containers, réseau) + │ + │ Inventory_Player pilote/possède : + │ ├─ WB_InventoryScreen (UI d'inventaire complète, créée à la demande) + │ │ └─ WB_InventoryPart1 / WB_InventoryPart2 + │ │ └─ WB_EquipSlot → WB_Container → WB_InventorySlot → WB_Item + │ ├─ WB_QuickSelect (roue de sélection rapide d'équipement, 4 slots) + │ └─ Les Input Actions IA_*AGIS via l'IMC_AGIS_Character / IMC_AGIS_InventoryTab + │ + ├─ Composant AC_Stats (Content/Systems/Stats/AC_Stats) + │ └─ Vie, mort (OnDeath), Revive → déclenche WB_YouDied et le respawn du Character + │ + ├─ Composants de mouvement (Content/Systems/Movement/, Systems/Blueprints/MovementModes/) + │ └─ AC_ClimbingComponent, AC_Cover, AC_TraversalLogic, AC_PreCMCTick, AC_VisualOverrideManager… + │ + └─ Autres composants gameplay (AC_ScentPoint, etc.) + +Interactables (Content/Systems/Inventory/Interactables/*) + └─ Implémentent BPI_Interactable, exposent un inventaire via un composant + Inventory_Storage / Inventory_Vendor / Inventory_Crafting (mêmes bases AGIS que le joueur) + → consultés par Inventory_Player lors d'une interaction (touche IA_InteractAGIS) + +Données d'items (Content/Data/Inventory_Data/, Content/Items/) + └─ DT_Items (DataTable), ItemDefaults / ItemInfo (structs), DD_Item (DataAsset par item) + alimentent à la fois l'UI d'inventaire ET les Blueprints d'objets sous Content/Items/BP_Item_* +``` + +### 1.4 Conventions de nommage des assets + +| Préfixe | Signification | Exemple | |---|---|---| -| **Contenu artistique** | Animations, Audio, Characters, Prop, VFX | Assets visuels et sonores | -| **Design du jeu** | Items, Maps, Systems, Data | Logique et contenu de gameplay | -| **Interface** | UI, Thumbnails | Éléments d'interface utilisateur | -| **Infrastructure** | Core, Collections, Misc | Fondations techniques | -| **Outils** | Developers, Fab | Ressources de développement | +| `BP_` | Blueprint d'acteur | `BP_Campfire`, `BP_Item_Helmet` | +| `WB_` / `WBP_` | Widget Blueprint (UMG) | `WB_InventoryScreen`, `WBP_PauseMenu` | +| `AC_` | ActorComponent | `AC_Stats`, `AC_ClimbingComponent` | +| `IA_` | Input Action (Enhanced Input) | `IA_InteractAGIS`, `IA_QuickSelectAGIS` | +| `IMC_` | Input Mapping Context | `IMC_AGIS_Character` | +| `E_` / `EM_` | Enum | `E_MovementMode`, `EM_Road_Type` | +| `S_` / `ST_` | Struct | `S_TraversalCheckInputs`, `ST_Weather_Zone_forecasts` | +| `M_` | Material | `M_Road`, `M_Campfire` | +| `MI_` | Material Instance | `MI_Black`, `MI_Bottle` | +| `SM_` | Static Mesh | `SM_Campfire`, `SM_RifleAdvanced` | +| `SKM_` | Skeletal Mesh | `SKM_BodyArmor` | +| `PA_` | Physics Asset | `PA_BodyArmor` | +| `T_` | Texture | `T_Helmet` | +| `RT_` | Render Target | `RT_InspectRenderer` | +| `DT_` | Data Table | `DT_Items` | +| `DD_` | Data Definition (DataAsset) | `DD_Item` | +| `ML_` | Macro Library (Blueprint) | `ML_InventoryMacros` | +| `SG_` | SaveGame | `SG_AGIS_UID`, `SG_AGIS_World` | +| `GM_` / `PC_` | GameMode / PlayerController | `GM_Sandbox`, `PC_Sandbox` | +| `CR_` | Control Rig | `CR_ClimbingGraphV2` | +| `ABP_` | Animation Blueprint | `ABP_GenericRetarget` | +| `AM_` | Anim Modifier / Anim Montage | `AM_ReloadHip` | +| `NS_` | Niagara System | `NS_Tornado` | +| `BPI_` | Blueprint Interface | `BPI_Interactable` | + +Le suffixe `AGIS` sur beaucoup d'assets (`IA_InteractAGIS`, `WB_...AGIS`, fonctions "Target is Inventory Player") signale qu'ils appartiennent au **socle marketplace AGIS**, par opposition aux ajouts spécifiques au projet. + +### 1.5 Conventions importantes à respecter + +- **Ne jamais renommer/déplacer** les assets du socle AGIS (`Content/Core/Coreinventory/`, une bonne partie de `Content/Systems/Inventory/`, `Content/UI/Inventory_UI/Widgets/WB_Container|WB_EquipSlot|WB_InventorySlot|WB_Item`) sans nécessité — de nombreuses références internes au plugin marketplace en dépendent. +- **Nouveau système de gameplay** → créer un dossier dédié sous `Content/Systems//`, à l'image de `Systems/Stats/`, `Systems/Scent/`, `Systems/Movable_Object/`. +- **Nouvel objet d'inventaire (item)** → suivre le patron existant dans `Content/Items/` : un Blueprint `BP_Item_` (héritant de `_BP_ItemBase` ou d'une base spécialisée dans `Items/BaseBlueprints/`), ses assets (mesh/matériau/texture) dans un sous-dossier `Content/Items//` ou `Content/Items/Resources//`, et une entrée dans `DT_Items` / les DataAssets sous `Content/Data/Inventory_Data/DataAssets/`. +- **Nouvel Input Action lié à l'inventaire** → `Content/Systems/Inventory/Other/Inputs/Actions/`, mappé dans `IMC_AGIS_Character` ou `IMC_AGIS_InventoryTab`. **Input Action de déplacement/caméra générique** → `Content/Core/PlayerController/Input/`, mappé dans `IMC_Sandbox`. +- **Nouveau widget d'inventaire** → `Content/UI/Inventory_UI/Widgets/`. **Nouveau widget hors inventaire** (HUD, menus) → `Content/UI/Widgets/`. +- Le clavier cible est **AZERTY** ; privilégier des touches identiques physiquement sur QWERTY/AZERTY pour les nouveaux raccourcis (ex. `V`, `B`). +- Réplication réseau : toute action qui modifie l'état du jeu côté inventaire/stats doit suivre le patron `Request X SERVER` (Custom Event `...SERVER`, `Replicated From Client, Executes On Server`) déjà présent dans `Inventory_Player`. + +--- + +## 2. Vue d'ensemble de l'arborescence racine + +```text +ProjectF/ +├── .gitattributes → Règles Git (LFS, line-endings) +├── .gitignore → Exclut Binaries/, Intermediate/, Saved/, DerivedDataCache/, .vscode/… +├── .mcp.json → Déclare le serveur MCP "unreal-mcp" (http://127.0.0.1:8000/mcp) utilisé par les agents IA +├── ProjectF.uproject → Fichier projet UE5.8 : liste des plugins activés (voir §1.2/§8) +├── README.md → Description minimale du projet +├── Architecture_Projet.md → CE DOCUMENT +│ +├── .claude/ → Skills et configuration Claude Code pour ce projet +│ └── skills/ +│ └── maintain-architecture-doc/SKILL.md → Skill de maintenance de ce document (voir §10) +│ +├── .codex/, .cursor/, .gemini/, .vscode/ → Configuration d'IDE / d'agents IA tiers (mcp.json, config.toml…) +│ +├── Config/ → Configuration moteur & jeu (voir détail §7) +├── Content/ → Tous les assets du jeu (voir détail §3 à §6) +│ +├── Binaries/, Intermediate/, Saved/, DerivedDataCache/ → Générés par l'éditeur, exclus de Git, jamais à éditer/documenter +``` + +### 2.1 ⚠️ Fichiers isolés directement à la racine de `Content/` + +Quelques fichiers importants vivent directement sous `Content/`, hors de toute organisation par dossier — à connaître avant de chercher "où est le personnage" ou "où est le GameInstance" : + +```text +Content/ +├── SandboxCharacter_CMC.uasset → ⭐ Le Blueprint du PERSONNAGE JOUEUR lui-même (Character/Pawn). Référencé par GM_Dev, GM_Sandbox, PC_Sandbox, Gamemode_AGIS, WB_InventoryScreen, WBP_PauseMenu, BP_Moveble_Object, BP_Simply_Door, AC_PreCMCTick, AC_ClimbingComponent et son propre Anim BP (Systems/Blueprints/SandboxCharacter_CMC_ABP). C'est le point d'entrée central de tout le gameplay. +├── BP_GameInstance.uasset → GameInstance réellement utilisé par le projet (à ne pas confondre avec `Core/Coreinventory/GameInstance_AGIS`, la base du plugin — vérifier lequel des deux est configuré comme GameInstance par défaut avant de supposer que c'est l'un ou l'autre). +└── DT_DemoTags.uasset (+ .T3D) → DataTable de tags, probablement un reste de test/démo. Aucune référence trouvée dans le projet au 2026-09-04 — candidate à la suppression, mais volontairement laissée en l'état (non confirmée inutile). +``` + + +--- + +## 3. `Content/Core/` — Socle inventaire (AGIS) + Player Controller + Tick + +Le cœur technique de l'inventaire et des entrées génériques du joueur. + +```text +Content/Core/ +├── Coreinventory/ → Cœur du plugin AGIS (composants, données, sauvegarde) +│ ├── Inventory__Main.uasset → ActorComponent BASE : logique générique de containers/slots, réplication réseau. Racine de la hiérarchie d'inventaire. +│ ├── Inventory_Equipper.uasset → hérite de Inventory__Main : ajoute la logique d'équipement (armes/objets tenus en main) +│ ├── Inventory_Player.uasset → hérite de Inventory_Equipper : composant d'inventaire du JOUEUR. Contient toute la logique spécifique projet ajoutée cette session (SelectQuickSlot, ToggleQuickEquip, GetQuickSlotItemInfo, graphe INPUTS avec tous les bindings Enhanced Input du joueur) +│ ├── Inventory_Storage.uasset → Inventaire des containers de stockage (coffres, trunk, etc.) +│ ├── Inventory_Vendor.uasset → Inventaire des PNJ vendeurs +│ ├── Inventory_Crafting.uasset → Inventaire des stations de craft (campfire, smelter, générateur) +│ ├── BP_AttachmentHandler.uasset → ActorComponent gérant les attachements sur les armes (silencieux, lampe, chargeur…) +│ ├── CombatComponent.uasset → ActorComponent : logique de combat (tir, dégâts) liée aux armes AGIS +│ ├── BP_SM_DroppedMesh.uasset → Acteur représentant un objet lâché au sol (mesh statique + interaction de ramassage) +│ ├── ItemMesh_STATIC.uasset / ItemMesh_Skeletal.uasset → Acteurs générant le rendu 3D d'un item tenu/lâché (mesh statique ou squelettal) +│ ├── DD_Item.uasset → DataAsset décrivant un item (référencé par ItemDefaults) +│ ├── FL_AGIS.uasset → Function Library : fonctions statiques utilitaires du plugin AGIS +│ ├── ML_AGISDefaults.uasset → Macro Library : macros par défaut du plugin +│ ├── ML_AGIS_UMG.uasset → Macro Library : macros dédiées à l'UI (UMG) +│ ├── ML_InventoryMacros.uasset → Macro Library : macros génériques d'inventaire +│ ├── GameInstance_AGIS.uasset → GameInstance de base du plugin (état persistant entre les maps) +│ ├── Gamemode_AGIS.uasset → GameMode de base du plugin (indépendant de GM_Sandbox, voir §4) +│ ├── PlayerController_AGIS.uasset → PlayerController de base du plugin +│ └── SG_AGIS_UID.uasset / SG_AGIS_World.uasset → SaveGame : compteur d'UID uniques / état persistant du monde (sauvegarde) +│ +├── PlayerController/ → Input générique du joueur (mouvement, caméra), indépendant de l'inventaire +│ ├── IA_InitiateClimb / IA_LeapFromClimb / IA_MovingClimb.uasset → Input Actions liées à l'escalade +│ └── Input/ +│ ├── IMC_Sandbox.uasset → Input Mapping Context PRINCIPAL du personnage (mouvement, caméra, saut…) +│ └── IA_Move, IA_Look, IA_Jump, IA_Sprint, IA_Run, IA_Walk, IA_Crouch, IA_Prone, IA_Strafe, +│ IA_Aim, IA_Interact, IA_ESC, IA_NextPawn, IA_Traverse, IA_TeleportToTarget, +│ IA_SwimmingDeep, IA_TwinStick_AimDirection, IA_Move_WorldSpace, IA_Look_Gamepad, +│ IA_NextVisualOverride, IA_rool.uasset → Input Actions individuelles mappées dans IMC_Sandbox +│ +└── Tick/ → Système de gestion centralisée du Tick (perf) + ├── BPI_TickManager.uasset → Interface implémentée par les acteurs qui veulent être "tickés" par le manager + ├── BP_TickManager.uasset → Acteur central qui distribue les ticks (probablement à fréquence configurable) + └── E_TickFrequency.uasset → Enum des fréquences de tick disponibles +``` + +--- + +## 4. `Content/Systems/` — Systèmes de gameplay + +### 4.1 `Systems/Inventory/` — Extension du socle AGIS pour ce projet + +```text +Content/Systems/Inventory/ +├── BP_Spawner.uasset → Acteur de spawn (probablement spawn d'items/loot en début de partie) +├── DT_Items.uasset → DataTable listant tous les items du jeu (clé pour créer/reconnaître un item) +│ +├── Interactables/ → Tout ce que le joueur peut "interagir" avec (touche IA_InteractAGIS) +│ ├── BP_EnemyPuppet.uasset → PNJ/mannequin pillable +│ ├── BP_Vendor.uasset → PNJ vendeur (utilise Inventory_Vendor) +│ ├── CraftingInteractables/ +│ │ ├── Campfire/BP_Campfire.uasset → Station de cuisson/craft (feu de camp) + ses assets (mesh, matériaux) +│ │ └── Smelter/BP_Smelter.uasset → Station de fonte de minerai + ses assets +│ ├── FuelGenerator/BP_Generator.uasset → Générateur électrique (consomme du carburant) +│ ├── KeycardReader/BP_KeycardReader.uasset → Lecteur de carte magnétique (déverrouillage) +│ ├── Other/BP_SimpleDoor.uasset → Porte interactable simple +│ └── Storages/ +│ ├── BP_StorageBox.uasset, BP_Trunk.uasset, BP_SphereStorage.uasset, _BP_StorageBase.uasset → Coffres/contenants de stockage (héritent de _BP_StorageBase) +│ └── Deadbody/BP_Deadman.uasset → Cadavre pillable +│ +├── Interfaces/ → Interfaces Blueprint (contrats partagés) +│ ├── BPI_Interactable.uasset → Contrat pour tout objet interactible (implémenté par tous les Interactables ci-dessus) +│ ├── BPI_SlotWidgets.uasset → Contrat pour les widgets de slot d'inventaire +│ ├── BPI_HoldableItem.uasset → Contrat pour un item tenable en main +│ ├── BPI_WeaponAGIS.uasset → Contrat pour les armes +│ ├── BPI_DamageFeedback.uasset → Contrat de retour visuel/sonore lors de dégâts +│ └── BPI_GameInstance_AGIS.uasset → Contrat exposé par le GameInstance côté AGIS +│ +├── Other/ → Assets d'appoint de l'inventaire +│ ├── Animations/ → Animations liées aux armes/mains nues (Jog, Rifle, TurnInPlace, WALK) — clips Motion Matching (MM_*) et montages (AM_*) +│ ├── Fonts/ → Polices utilisées par l'UI d'inventaire +│ ├── Inputs/ +│ │ ├── Actions/ → **Toutes** les Input Actions liées à l'inventaire (IA_*AGIS), y compris IA_QuickSelectAGIS et IA_QuickEquipAGIS (sélection rapide, ajoutées pour ce projet) +│ │ ├── IMC_AGIS_Character.uasset → Mapping Context actif en jeu (personnage) : touches 1/2/3/4, F, V, B, etc. +│ │ └── IMC_AGIS_InventoryTab.uasset → Mapping Context actif quand l'inventaire plein écran est ouvert +│ ├── InspectCapture/ → Rendu d'inspection d'objet (RT_InspectRenderer + BP_InspectRenderer + M_Inspect) +│ └── Materials/ → Matériaux génériques réutilisés par les items (MI_Black, MI_Red, M_Metal, M_Outline…) +│ +└── Utilities/ → Outils d'éditeur (Editor Utility Widgets) pour la création de containers/inventaires + ├── EUW_ContainersCreator.uasset, EUW_WidgetToInventoryData.uasset + └── Others/WB_ContainerSpecsUtility.uasset, WB_CreatorContainerUtility.uasset +``` + +### 4.2 `Systems/Blueprints/` — Framework de personnage / locomotion ("Sandbox Character") + +Contenu très largement issu du sample Epic **Motion Matching** (plugins `Mover`, `MotionTrajectory`, `Chooser`, `AnimationLocomotionLibrary`). À traiter comme un framework tiers : préférer l'étendre plutôt que le réécrire. + +```text +Content/Systems/Blueprints/ +├── BPI_SandboxCharacter_Pawn.uasset → Interface du Pawn joueur (point d'entrée du framework de locomotion) +├── BPI_SandboxCharacter_ABP.uasset → Interface de l'Anim Blueprint du personnage +├── AC_TraversalLogic.uasset → ActorComponent : logique de traversal (vault/mantle/climb contextuel) +├── AC_PreCMCTick.uasset → ActorComponent : logique exécutée avant le tick du mouvement (Mover/CMC) +├── AC_VisualOverrideManager.uasset → ActorComponent : gestion des overrides visuels du personnage +├── GM_Sandbox.uasset / PC_Sandbox.uasset → GameMode / PlayerController du framework de locomotion (indépendants de Gamemode_AGIS/PlayerController_AGIS, voir §3) +│ +├── Cameras/ → Système de caméra (Camera Rigs modulaires) +│ ├── CameraAsset_SandboxCharacter, CameraDirector_SandboxCharacter, CHT_CameraRig +│ ├── E_CameraMode.uasset, E_CameraStyle.uasset +│ └── Rigs/CameraRig_* (Close/Medium/Far × Aim/Freecam/Strafe, CrouchOffset, CollisionOffset, TwinStick…) +│ +├── MovementModes/ → Modes de mouvement personnalisés (plugin Mover) +│ ├── BP_MovementMode_Walking / _Falling / _Slide +│ ├── BP_MovementTransition_ToSlide / _FromSlide +│ └── BP_ClimbingMode.uasset +│ +├── ControlRigs/CR_Biped_FootPlacement.uasset → Control Rig : placement des pieds (foot IK) +├── RetargetedCharacters/ABP_GenericRetarget.uasset → Anim BP générique pour le retargeting +│ +├── AnimModifiers/ → Anim Modifiers (post-traitement de clips d'animation à l'import) +├── AnimNotifies/ → Anim Notifies personnalisées (BP_AnimNotify_FoleyEvent*, BP_NotifyState_EarlyTransition/MontageBlendOut) + enums associés +│ +├── Data/ → Structs/Enums/Curves partagés par tout le framework de locomotion +│ ├── E_Gait, E_Stance, E_MovementMode, E_MovementState, E_MovementDirection(Bias), E_RotationMode, +│ │ E_AnalogStickBehavior, E_ExperimentalStateMachineState, E_TraversalActionType +│ ├── S_CharacterPropertiesForAnimation / _ForCamera / _ForTraversal, S_BlendStackInputs, +│ │ S_MoverCustomInputs, S_PlayerInputState, S_TraversalCheckInputs/Result, +│ │ S_TraversalChooserInputs/Outputs, S_ChooserOutputs, S_MovementDirectionThresholds, +│ │ S_RotationOffsetCurveChooser_Inputs, S_DebugGraphLineProperties +│ ├── Curve_RotationOffset_* , Curve_StrafeSpeedMap, CHT_RotationOffsetCurve → Curve Tables pilotant les offsets d'animation +│ └── BFL_HelpfulFunctions.uasset, BPI_InteractionTransform.uasset +│ +├── SmartObjects/ → Intégration du plugin SmartObject (points d'ancrage d'animation contextuelle) +│ ├── CHPA_SmartObject, AC_SmartObjectAnimation +│ └── SmartObjectAnimationPayload, SmartObjectSelectionInputs/Outputs +│ +└── SandboxCharacter_CMC_ABP.uasset → Anim Blueprint principal du personnage joueur (piloté par `/Game/SandboxCharacter_CMC`). Anciennement égaré dans un dossier `d/` mal nommé — déplacé ici (nettoyage du 2026-09-04). +``` + +### 4.3 Autres systèmes de gameplay (ajouts spécifiques au projet) + +```text +Content/Systems/ +├── Stats/ +│ └── AC_Stats.uasset → ActorComponent ACTIF : gère la vie du personnage (Health), la mort (bIsDead, dispatcher OnDeath), Heal, Revive (voir §1.3). Ajouté cette session pour le système de mort/respawn. +│ +├── Door/ +│ ├── Garage_Door/BP_Garage_door.uasset → Porte de garage interactable +│ └── Simply_Door/BP_Simply_Door.uasset → Porte simple interactable +│ +├── Movement/ +│ ├── Climbing/AC_ClimbingComponent.uasset, CR_ClimbingGraphV2.uasset (Control Rig), CR_Mannequin_BasicFootIK.uasset, ClimbingMaterial.uasset +│ └── Cover/AC_Cover.uasset → ActorComponent : système de couverture (cover system) +│ +├── Scent/BP_ScentPoint.uasset → Point émetteur d'odeur (probablement pour une IA de traque par l'odorat) +├── Movable_Object/BP_Moveble_Object.uasset → Objet physique déplaçable par le joueur +├── Interact_Interface.uasset → Interface d'interaction générique (racine de Systems/, à distinguer de BPI_Interactable dans Inventory/Interfaces/) +│ +└── Weather/ + ├── Tornado/BP_Tornado.uasset, NS_Tornado.uasset → Tornade dynamique (acteur + système Niagara), spécifique au projet + └── UltraDynamicSky/ → 🧩 **Asset marketplace tiers complet** (~789 fichiers : Blueprints, matériaux, sons, textures de ciel/météo dynamique). Ne pas modifier directement ; utiliser ses points d'extension documentés par le plugin (Weather_Presets, Climate_Presets, Sky_Modifiers). Structure interne : Blueprints/ (Enum, Functions, Occlusion, Sky_Modifiers, Sound, System, Tools, Utilities, Weather_Effects, Widgets), Materials/, Meshes/, Particles/, Sound/, Textures/, Maps/ (map de démo du plugin). +``` + +--- + +## 5. `Content/Data/` — Structures de données globales + +```text +Content/Data/ +├── DataTable/DT_Season.uasset → DataTable des saisons (météo) +│ +├── Enums/ +│ ├── E_CoverD.uasset, E_WeaponType.uasset +│ ├── Enums/E_BodyPart.uasset +│ └── Movement_enum/Weapon_Equip.uasset +│ (⚠️ à ne pas confondre avec Data/Inventory_Data/Enumerations/ ci-dessous — deux emplacements d'enums coexistent) +│ +├── Structure/Weather/ → Structs météo (ST_Season, ST_WeatherZoneState, ST_Weather_Zone_CurentWeather/forecasts/_Data, ST_Zone_Influance) +│ +└── Inventory_Data/ → Données du système d'inventaire AGIS + ├── DataAssets/ + │ ├── AttachmentData/ → AttachmentData (base) + AttachmentData_AdvancedRifle, AttachmentData_Flashlight : configuration des attachements d'armes + │ ├── ContainerGroupData/ → Un DataAsset par "groupe de containers" (Backpack BIG/SMALL, Box/Chest Storage, Vest_1/2, ExampleStorage…) : définit la mise en page des slots d'un contenant + │ └── InventoryData/ → Un DataAsset par inventaire prédéfini (PlayerInventoryPart1/2, CardReader_Inventory, Generator_Inventory, Vehicle_Inventory) + ├── Enumerations/ → Enums spécifiques AGIS : EAnimOverlayState, EBallDirections, EFourDirections/ETwoDirections, EInteractionType, EItemActions, ENestingRules, EPrintType, EReloadType, EServerVerificationType, ESlotAppearance, EVendorBuyOption + └── Structures/ → Structs spécifiques AGIS + ├── ItemDefaults.uasset → Struct CENTRALE décrivant un item (Name, etc.) — lue par WB_Item et par la logique de sélection rapide (Inventory_Player) + ├── ItemInfo, SlotInfo, SlotAddress, SlotAppearance, SubItemInfo, RandomSubItem + ├── ContainerInfo, ContainerAppearance + ├── AttachmentInfo, EquipSlot_KeySettings/_OwnContainersSettings/_TextureSettings/_TitleSettings + ├── ClientWidgetData, CombinedTexturesInfo, TextureInfo + ├── CraftingSlotRowInfo, DragSounds, DebugPrint, FindResult, InspectCameraInfo, InteractCosmetics, ItemActorInfo, MenuActions + └── SaveStructures/SaveData_Player, SaveData_Storages, Savedata_ItemActor → Structures de sauvegarde (non encore branchées à un vrai système de save, voir §1.3 du système de mort) +``` + +--- + +## 6. `Content/UI/` — Interfaces utilisateur + +```text +Content/UI/ +├── Inventory_UI/ → TOUTE l'UI de l'inventaire (socle AGIS + ajouts projet) +│ ├── MaterialResources/ → Matériaux/Material Instances de fond des slots (MI_Background_*, M_RuntimeItemMaterial…) +│ └── Widgets/ +│ ├── WB_Container.uasset → Widget représentant un container (grille de slots) — contient SlotWidgets[] +│ ├── WB_EquipSlot.uasset → Widget d'un slot d'équipement (arme/speed) — contient Container +│ ├── WB_InventorySlot.uasset → Widget d'un slot individuel dans une grille — expose "ItemWidget On Slot" +│ ├── WB_Item.uasset → Widget représentant un item posé dans un slot — expose "Item Defaults" (struct ItemDefaults) +│ │ +│ ├── InventoryMenu/ +│ │ ├── WB_InventoryScreen.uasset → Widget racine de l'inventaire plein écran (contient InventoryPart1/InventoryPart2) +│ │ ├── WB_InventoryPart1.uasset → Contient les 4 slots d'équipement (EquipSlotWEAPON, EquipSlotWEAPON2, EquipSlotSpeed1, EquipSlotSpeed2) + autres slots d'équipement (casque, gilet, gants, sac à dos…) +│ │ └── WB_InventoryPart2.uasset → Grille(s) d'inventaire principale(s) +│ │ +│ ├── ItemActionsMenu/WB_ItemMenu.uasset, WB_GeneralButton.uasset → Menu contextuel d'actions sur un item +│ │ +│ ├── LootWidgets/ → Fenêtres de pillage, une par type de source (Human, Storage, Vendor, Vehicle, Generator, KeycardReader) héritant de _WB_LootWidgetBASE ; LootingCrafting/ pour les stations de craft +│ │ +│ ├── MovableWindows/ → Système de fenêtres déplaçables (_WB_Window_Base) : ItemInspect/ (inspection 3D d'un item), ItemInventory/ (fenêtre d'inventaire flottante), WB_TitleBar_Window (barre de titre commune) +│ │ +│ └── Other/ +│ ├── WB_QuickSelect.uasset → 🆕 Roue de sélection rapide (4 slots : Arme1/Arme2/Speed1/Speed2 + "Aucun"). Résout seule son Inventory_Player propriétaire au Construct (GetOwningPlayerPawn → GetComponentByClass). Ouverte/fermée depuis Inventory_Player (touche V maintenue). +│ ├── WB_YouDied.uasset → Écran "Vous êtes mort" (système de mort/respawn) +│ ├── WB_ActionScreen, WB_InteractScreen, WB_InteractBall, WB_PickupDisplay → Feedback d'interaction/pickup au sol +│ ├── WB_CombatHUD, WB_DisplayHUD, WB_WeaponAmmoInfo → HUD de combat/munitions +│ ├── WB_InventoryBackground, WB_ItemInfo, WB_SlotTitle → Éléments visuels d'appoint +│ └── WidgetTextures/ → Icônes des slots d'équipement (T_EquipSlot_*) et textures d'UI diverses +│ +├── TextureUI/M_CharacterUI.uasset, RT_CharacterView.uasset → Rendu de la vue personnage dans l'UI (ex. écran d'inspection du personnage) +│ +└── Widgets/ → UI HORS inventaire + ├── HUD/WB_HUD.uasset, WB_New_HUD.uasset, WB_New_InterfacePlayer.uasset + ├── PauseMenu/WBP_PauseMenu.uasset, WBP_Options.uasset + └── interaction/WB_Interact.uasset +``` + +--- + +## 7. `Content/Items/`, `Content/PCG/`, `Content/Maps/`, `Content/VFX/`, `Content/Prop/` + +```text +Content/Items/ → Objets ramassables/équipables du jeu +├── BaseBlueprints/ +│ ├── _BP_ItemBase.uasset → Blueprint BASE de tout item (racine de hiérarchie) +│ ├── BP_Item_HoldableBase.uasset → Base des items tenables en main +│ ├── BP_Item_Armor_Base.uasset → Base des items d'armure/équipement porté +│ └── BP_Item_Skeletal_Base.uasset → Base des items avec mesh squelettal +│ +├── BP_Item_AdvancedRifle / _Backpack_Camper / _Backpack_Sport / _BodyArmor / _Flashlight / +│ _Gloves / _Helmet / _KevlarVest / _LightVest / _Siren.uasset → Blueprints d'items "portés" (racine d'Items/) +├── Attachments/BP_Item_MagazineBase, BP_Item_RifleFlashlight, BP_Item_Suppressor.uasset → Attachements d'armes +├── ItemObjects/BPI_MergeableItemObject, ItemObject__BASE, ItemObject_ConsumableBASE, ItemObject_Magazine.uasset → Objets "monde" associés aux items (empilables, consommables, munitions) +│ +├── Ammo/, Weapon/ (Base_Bow, Base_knife), Tool/ (saucepan), Water/ (water_bottle), +│ Food/ (Red_Apple, meat, cooked_Meat, Burnt_Meat), Resource/ (Stick, Stone) +│ → Chaque sous-dossier contient les assets (mesh/matériau/texture/Thumbnail) d'un item ; les Blueprints correspondants sont soit à la racine d'Items/, soit dans Resources/ +│ +├── Resources/ → Assets 3D (mesh/matériau/texture) groupés par équipement porté, + cas particuliers +│ ├── Backpack_Camper/, Backpack_Sport/, BodyArmor/, Gloves/, Helmet/, KevlarVest/, LightVest/, Rifle/ +│ ├── _Others/ → Assets des petits objets (Keycard, Log, Meat, AmmoBox, Battery, Flashlight, FuelCanister, GoldIngot/GoldOre, Headphone, MoneyBag, WaterBottle) +│ └── ABP_SkeletalEquippables.uasset → Anim Blueprint partagé par les items squelettaux équipés +│ +└── ItemTextures/ → Textures d'icônes/inventaire communes à tous les items (T_*) + +Content/PCG/ → Génération procédurale de contenu (plugin PCG) +├── Road/ +│ ├── PCG_Road.uasset → Graphe PCG générant la route procédurale (matériaux vieillis/mousse/humidité, potholes via GeometryScript) +│ ├── BP_AbandonedRoad.uasset → Acteur portant le graphe PCG +│ ├── M_Road.uasset, ST_Road_data.uasset, EM_Road_Type.uasset → Matériau, struct de données et enum de types de route +├── Vegetation/TreeTest.uasset → Graphe PCG de placement de végétation (arbres, générés via PVE pour la route) +└── test/NewPCGGraph1.uasset → Graphe de test/brouillon + +Content/Maps/DevMap/ +├── MapDev1.umap → 🗺️ Map de développement PRINCIPALE (GameDefaultMap / EditorStartupMap, voir Config/DefaultEngine.ini) +├── GM_Dev.uasset → GameMode utilisé sur MapDev1 (hérite directement de GameModeBase, indépendant de GM_Sandbox/Gamemode_AGIS) +├── pcg_Test_Dev.umap → Map de test PCG +└── PCG_Test_Dev_HLODLayer_*, Untitled_HLOD0_Instancing.uasset → Assets HLOD générés pour les maps de test + +Content/VFX/ +├── Firetrail/BP_FireTrail.uasset, Effects/P_BulletTrail.uasset, Materials/M_BulletTrail.uasset → Traînée de balle +└── MI_MuzzleFlash, M_MuzzleFlash, MuzzleFlash, P_MuzzleFlash → Effet de tir (bouche de canon) +├── M_Blood.uasset, T_Blood.uasset → Effet de sang +└── crosshair.uasset, hitmarker.uasset → Éléments de HUD de tir + +Content/Prop/Wooden_Door/ → Prop de porte en bois (mesh + matériaux), utilisé par les BP de porte interactable +``` + +--- + +## 8. Assets tiers / bibliothèques (peu ou pas de logique de gameplay) + +Ces dossiers contiennent des assets achetés/importés (Marketplace, Fab/Quixel Megascans, Megaplant, packs d'animation mocap). Ils sont volumineux (des centaines de fichiers) et **ne sont volontairement pas détaillés fichier par fichier** ici — voir §10 pour la règle sur quand les documenter. + +```text +Content/Animations/ → Clips de mocap tiers : DeerAndDoe/, Fox/, Wolf/, humain/ (Armed_mov, Avoid, Carrying, Cover, + Effect_Animation, INteraction, Prone, Push, SwimmingAnimation…) +Content/Characters/ → Meshes/matériaux/textures des personnages et animaux (Animal/DeerStagAndDoe|Fox|Wolf, + UEFN_Mannequin/ avec ses données de Motion Matching : AimOffset, Crouch, Idle, Jump, + MotionMatchingData/ [Channels, Databases, Normalization_Sets, Schemas], Poses, Run, Slide, + Sprint, Traversal, Walk, Rigs, Materials, Meshes, Textures) +Content/Fab/ → Assets Fab/Quixel Megascans : MaterialFunctions/, MaterialParameterCollection/, Materials/ + (Standard/VT), Megascans/Plants/ (Common_Hemp_Nettle, Wild_Grass ×2), Megascans/Surfaces/ + (Damaged_Asphalt, Dirt_Ground, Forest_Floor), Textures/ (Standard/VT) +Content/Megaplant_Library/ → Végétation Megaplant : Plant_Bilberry/, Tree_European_Aspen/, Tree_Hornbeam/ + (chacun avec Instances/, Materials/, Textures/) +Content/Thumbnails/ → Miniatures générées pour la Content Browser +Content/Collections/ → Collections d'assets (vide actuellement) +Content/Developers/catry/ → Dossier de développeur personnel (playground, Collections/) — non partagé/gameplay +Content/Misc/ → SandboxAnimCurveCompressionSettings.uasset (réglages de compression d'anim) +Content/__ExternalActors__/ → ⚙️ Généré automatiquement par World Partition (données par-acteur des maps, ex. LocomotionAnimPack). +Content/__ExternalObjects__/ → ⚙️ Généré automatiquement par World Partition (objets externes liés aux maps). + → Ces deux derniers dossiers ne doivent JAMAIS être édités ou documentés à la main : + leur contenu suit automatiquement les maps et les acteurs qu'elles contiennent. +``` + +--- + +## 9. Notes pour les IA : pièges connus de l'outillage + +Ce projet est modifié via le plugin **VibeUE** (service MCP `unreal-mcp`, voir `.mcp.json`), qui expose des services Python (`unreal.BlueprintService`, `unreal.WidgetService`, `unreal.InputService`, `unreal.EnumStructService`, etc.) pour piloter l'éditeur Unreal sans l'ouvrir manuellement. Quelques pièges rencontrés et leurs solutions : + +- **`build_graph`** attend un champ **`"ref"`** pour identifier chaque nœud dans la liste `nodes` (pas `"id"`). Un mauvais nom de champ échoue silencieusement (retourne `None` sans erreur explicite). +- Les **variables locales à une fonction** (paramètres, locals créés via `add_object_variable` avec `graph=...`) ne sont pas fiables avec `build_graph`'s `variable_get`/`variable_set` : préférer des **variables membres** du Blueprint. +- Un `K2Node_VariableSet`/`Get` créé via un spawner_key générique (`discover_nodes` + `create_node_by_key`) peut se résoudre sur la **mauvaise classe** si plusieurs Blueprints chargés ont une variable de même nom affiché (ex. "Owner Inventory" existe à la fois sur `WB_Container` et sur un widget créé cette session) — toujours vérifier les pins du nœud créé (`get_node_pins`) avant de câbler, ou utiliser `build_graph` avec `type: "variable_set"` + `params.variable` en contexte "self" qui est fiable. +- Appeler une fonction Blueprint **préexistante** (créée dans une session antérieure/par le plugin marketplace) sur un **autre** Blueprint peut échouer silencieusement selon la méthode utilisée. Privilégier l'accès direct aux propriétés (`member_get`, fiable) plutôt que l'appel de fonction cross-Blueprint quand c'est possible ; sinon tester `add_function_call_on_variable` et vérifier le résultat via `get_node_pins`/`get_nodes_in_graph`. +- Écrire une valeur littérale sur un pin de type `Text`, `Object` ou `Class` via `set_node_pin_value` échoue souvent **silencieusement à l'affichage** (`get_node_pins` renvoie toujours `default_value: ""`) même quand l'assignation a réellement fonctionné — vérifier via une **compilation** (erreurs de compilation manquantes = probablement OK) plutôt que via une relecture du pin. +- **Toujours compiler ET sauvegarder** un Blueprint après modification (`BlueprintEditorLibrary.compile_blueprint` + `EditorAssetLibrary.save_loaded_asset`), puis **tester en PIE** et lire les logs (`EditorToolset.LogsToolset.GetLogEntries`, filtrer sur `"Blueprint Runtime Error"`) pour détecter les erreurs à l'exécution qu'une compilation réussie ne révèle pas (ex. accès à un élément de tableau hors limites). +- Le clavier cible du jeu est **AZERTY** : vérifier les mappings de touches existants (`IMC_Sandbox`, `IMC_AGIS_Character`, `IMC_AGIS_InventoryTab`) avant d'assigner une nouvelle touche, et choisir des touches physiquement identiques entre QWERTY/AZERTY. + +--- + +## 10. Maintenir ce document à jour + +Ce document **doit toujours refléter l'état réel du projet**. Un skill dédié — **`maintain-architecture-doc`** (`.claude/skills/maintain-architecture-doc/SKILL.md`) — rappelle systématiquement aux modèles d'IA de : + +1. Consulter ce document avant de modifier la structure du projet. +2. Le mettre à jour après toute création/suppression/déplacement/renommage de fichier ou dossier important. +3. Ajouter une description pour tout nouveau fichier important. +4. Retirer les entrées obsolètes (fichiers supprimés). +5. Corriger les chemins après un déplacement. +6. Mettre à jour les descriptions quand un système évolue significativement. +7. Vérifier périodiquement la cohérence entre ce document et l'arborescence réelle. +8. Ne jamais laisser ce document dans un état sciemment obsolète après une modification de structure. + +**Règle de detail** : un fichier "important" à documenter est un Blueprint/Widget/Data Asset/Struct/Enum/Input Action qui porte de la **logique ou des données de gameplay**. Les assets purement artistiques individuels (textures, meshes, clips d'animation, miniatures) n'ont pas besoin d'entrée dédiée — il suffit que leur **dossier parent** soit listé et décrit (cf. §8). + +*Historique de nettoyage :* +- *2026-09-04 : `Content/Systems/Blueprints/d/SandboxCharacter_CMC_ABP` renommé/déplacé vers `Content/Systems/Blueprints/SandboxCharacter_CMC_ABP` via l'outil de renommage Unreal (les 7 références ont été recâblées automatiquement, compilation vérifiée OK).* +- *2026-09-04 : suppression de 8 redirecteurs Unreal morts (résidus de renommages passés, 0 référence chacun, confirmés sans danger) : `Content/Systems/Stats/ACStats.uasset`, `Content/Systems/Movement/BPC_ClimbingComponent.uasset`, `Content/Systems/Movement/ClimbingMaterial.uasset`, `Content/Systems/Movement/CR_ClimbingGraphV2.uasset`, `Content/Systems/Movement/CR_Mannequin_BasicFootIK.uasset`, `Content/BP_TickManager.uasset`, `Content/dqs.uasset`, `Content/E_WeaponType.uasset`. Les vraies versions de ces assets restent à `Content/Systems/Movement/Climbing/`, `Content/Core/Tick/BP_TickManager` et `Content/Data/Enums/E_WeaponType`.* + +*Point de nettoyage identifié mais volontairement non traité : `Content/DT_DemoTags.uasset` (+ `.T3D`) — aucune référence trouvée, semble être un reste de test, laissée en l'état à la demande de l'utilisateur (voir §2.1).* diff --git a/Config/DefaultEngine.ini b/Config/DefaultEngine.ini index 425e9c55..6b7691af 100644 --- a/Config/DefaultEngine.ini +++ b/Config/DefaultEngine.ini @@ -31,9 +31,9 @@ DefaultGraphicsRHI=DefaultGraphicsRHI_DX11 bGenerateNaniteFallbackMeshes=True Compiler=Default AudioSampleRate=48000 -AudioCallbackBufferFrameSize=1024 -AudioNumBuffersToEnqueue=1 -AudioMaxChannels=0 +AudioCallbackBufferFrameSize=2048 +AudioNumBuffersToEnqueue=4 +AudioMaxChannels=64 AudioNumSourceWorkers=4 SpatializationPlugin= SourceDataOverridePlugin= @@ -125,3 +125,30 @@ ManualIPAddress= [/Script/UnrealEd.CookerSettings] bCookOnTheFlyForLaunchOn=True +[/Script/Engine.AudioSettings] +DefaultSoundClassName=/Engine/EngineSounds/Master.Master +DefaultMediaSoundClassName=/Engine/EngineSounds/Master.Master +DefaultSoundConcurrencyName=None +DefaultBaseSoundMix=None +VoiPSoundClass=None +MasterSubmix=/Engine/EngineSounds/Submixes/MasterSubmixDefault.MasterSubmixDefault +BaseDefaultSubmix=None +ReverbSubmix=/Engine/EngineSounds/Submixes/MasterReverbSubmixDefault.MasterReverbSubmixDefault +EQSubmix=/Engine/EngineSounds/Submixes/MasterEQSubmixDefault.MasterEQSubmixDefault +VoiPSampleRate=Normal24000Hz +DefaultAudioCompressionType=RADAudio +DefaultOcclusionCheckInterval=(Default=0.100000,PerPlatform=()) +MaximumConcurrentStreams=16 +GlobalMinPitchScale=0.400000 +GlobalMaxPitchScale=2.000000 ++QualityLevels=(DisplayName=NSLOCTEXT("AudioSettings", "DefaultSettingsName", "Default"),MaxChannels=32) +bAllowPlayWhenSilent=True +bDisableMasterEQ=False +bAllowCenterChannel3DPanning=False +NumStoppingSources=8 +PanningMethod=Linear +MonoChannelUpmixMethod=Linear +DialogueFilenameFormat="{DialogueGuid}_{ContextId}" +bEnableLegacyAssetTypes=False +PlatformSettings=() + diff --git a/Content/BP_GameInstance.uasset b/Content/BP_GameInstance.uasset index a3aa6a3e..042d1491 100644 --- a/Content/BP_GameInstance.uasset +++ b/Content/BP_GameInstance.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:85154e5174a890e6382230563221e2c8b38c28c6e70e3a7b756399a841b64580 -size 8914 +oid sha256:55fefbc0c6ba8e48aab1ab3f1a226b2f614595b00ad7f0a7a0db65b560f1e657 +size 9652 diff --git a/Content/BP_TickManager.uasset b/Content/BP_TickManager.uasset index cc18c306..027876e6 100644 --- a/Content/BP_TickManager.uasset +++ b/Content/BP_TickManager.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ead3358d497b08f005c09f827ae51889396030bf8dcf58ca9089d3ba32748c4 -size 2244 +oid sha256:de96e91243e88a7d97f2a89a2fcef2407f65a15769dd47e74ae88afae5c45583 +size 1816 diff --git a/Content/Characters/UEFN_Mannequin/Animations/ExperimentalStateMachineData/CHT_CMCCharacterAnimations.uasset b/Content/Characters/UEFN_Mannequin/Animations/ExperimentalStateMachineData/CHT_CMCCharacterAnimations.uasset index da4d1db2..4b419958 100644 --- a/Content/Characters/UEFN_Mannequin/Animations/ExperimentalStateMachineData/CHT_CMCCharacterAnimations.uasset +++ b/Content/Characters/UEFN_Mannequin/Animations/ExperimentalStateMachineData/CHT_CMCCharacterAnimations.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:07c9d1517417208b27b0845fdd4a624fe6d640fa9f79708ac369be089c72ac3a -size 470486 +oid sha256:782ab9f8cac9081c74b971cea634247203effd96e2ef716a850d1d5932ac3deb +size 449433 diff --git a/Content/Characters/UEFN_Mannequin/Animations/MotionMatchingData/CHT_PoseSearchDatabases.uasset b/Content/Characters/UEFN_Mannequin/Animations/MotionMatchingData/CHT_PoseSearchDatabases.uasset index b5b0d5a5..214a9d5a 100644 --- a/Content/Characters/UEFN_Mannequin/Animations/MotionMatchingData/CHT_PoseSearchDatabases.uasset +++ b/Content/Characters/UEFN_Mannequin/Animations/MotionMatchingData/CHT_PoseSearchDatabases.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bcbbef8039e50281c22efead4bd2a7bc87bd6538645814c93ea035e985d064be -size 5169 +oid sha256:d9fb3558b5d1808599a88fc278c798a583857bbe18cbdf23454fa7d3100a3121 +size 4910 diff --git a/Content/Characters/UEFN_Mannequin/Animations/MotionMatchingData/CHT_PoseSearchDatabases_Dense.uasset b/Content/Characters/UEFN_Mannequin/Animations/MotionMatchingData/CHT_PoseSearchDatabases_Dense.uasset index d3dce850..f5c42477 100644 --- a/Content/Characters/UEFN_Mannequin/Animations/MotionMatchingData/CHT_PoseSearchDatabases_Dense.uasset +++ b/Content/Characters/UEFN_Mannequin/Animations/MotionMatchingData/CHT_PoseSearchDatabases_Dense.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5edb3306c15ac4f6674605a1166f4049315aa8b382c08de2f6fa123699712b08 -size 74467 +oid sha256:43a4656c876994c630d8b0c6d0a95da2d08a143b88b4d56e4e5c4324ac3ff982 +size 65102 diff --git a/Content/Characters/UEFN_Mannequin/Animations/MotionMatchingData/CHT_PoseSearchDatabases_ExtremeSparse.uasset b/Content/Characters/UEFN_Mannequin/Animations/MotionMatchingData/CHT_PoseSearchDatabases_ExtremeSparse.uasset index 684074e2..4503295a 100644 --- a/Content/Characters/UEFN_Mannequin/Animations/MotionMatchingData/CHT_PoseSearchDatabases_ExtremeSparse.uasset +++ b/Content/Characters/UEFN_Mannequin/Animations/MotionMatchingData/CHT_PoseSearchDatabases_ExtremeSparse.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f611abbcdc0b55a6e9fc1681a55443f7988e32281693d8b3602545e67cd3e3f8 -size 31764 +oid sha256:3af646ec63fe83e34adfba9fcee8c175919c31861b09631421bfe613129eed17 +size 28563 diff --git a/Content/Characters/UEFN_Mannequin/Animations/MotionMatchingData/CHT_PoseSearchDatabases_Sparse.uasset b/Content/Characters/UEFN_Mannequin/Animations/MotionMatchingData/CHT_PoseSearchDatabases_Sparse.uasset index c86482ac..7fedcf14 100644 --- a/Content/Characters/UEFN_Mannequin/Animations/MotionMatchingData/CHT_PoseSearchDatabases_Sparse.uasset +++ b/Content/Characters/UEFN_Mannequin/Animations/MotionMatchingData/CHT_PoseSearchDatabases_Sparse.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:74a3abe02a04900cf39d6863eddacb22b296db16f37a9d44015f8d05f5301005 -size 39631 +oid sha256:07ccfc585416794faf2d46d3b37e48e898a26d9ef884ab318b08949ba500c49e +size 35147 diff --git a/Content/Core/Coreinventory/Inventory_Player.uasset b/Content/Core/Coreinventory/Inventory_Player.uasset index 43852d92..7d9d5d97 100644 --- a/Content/Core/Coreinventory/Inventory_Player.uasset +++ b/Content/Core/Coreinventory/Inventory_Player.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:94716b52a69239a37026b5bbb739ca30323347c5dcf9f69f94d1e1c7a8f4155a -size 1694217 +oid sha256:9af71056cc15dd729f13571c02b710594b1e1bf8aaaac1f6806a3410c4b0f20c +size 1939167 diff --git a/Content/Data/Inventory_Data/DataAssets/InventoryData/PlayerInventoryPart1.uasset b/Content/Data/Inventory_Data/DataAssets/InventoryData/PlayerInventoryPart1.uasset index 60976b4b..15b0b2b0 100644 --- a/Content/Data/Inventory_Data/DataAssets/InventoryData/PlayerInventoryPart1.uasset +++ b/Content/Data/Inventory_Data/DataAssets/InventoryData/PlayerInventoryPart1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e99e90f588c5ac0b5d63feb05a52c98812053958a48bb850db0cd1529b5fe461 -size 4949 +oid sha256:7a8a37148c90d11304fa1cc5894ec0ae211c138b4eadfd91283903732380e61d +size 6642 diff --git a/Content/Data/Inventory_Data/DataAssets/InventoryData/PlayerInventoryPart2.uasset b/Content/Data/Inventory_Data/DataAssets/InventoryData/PlayerInventoryPart2.uasset index fa84f865..8fa40754 100644 --- a/Content/Data/Inventory_Data/DataAssets/InventoryData/PlayerInventoryPart2.uasset +++ b/Content/Data/Inventory_Data/DataAssets/InventoryData/PlayerInventoryPart2.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:33c5ec2db9efe9bf7bc79d8e3afbd55848b97d1f0a5efe4fd142351d3891b745 -size 4195 +oid sha256:4e04f5e0b48e3f6060a64731136059a68c19529efff2a8c03162434f81d7521c +size 3217 diff --git a/Content/Maps/DevMap/MapDev1.umap b/Content/Maps/DevMap/MapDev1.umap index e4ee6ea4..68642ac8 100644 --- a/Content/Maps/DevMap/MapDev1.umap +++ b/Content/Maps/DevMap/MapDev1.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8517f41a38e56be18795443658e6c67ca3504e984d6709a6d587cbbd75451b51 -size 4983303 +oid sha256:4849d7a36ec773ae526dce790199014913028c630b3c1ed240483cd7df0a6c92 +size 4987781 diff --git a/Content/SandboxCharacter_CMC.uasset b/Content/SandboxCharacter_CMC.uasset index 6b29f094..9bf6d1f1 100644 --- a/Content/SandboxCharacter_CMC.uasset +++ b/Content/SandboxCharacter_CMC.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3821b56f8e0b0826895825875a8f399aa6e2c55a2d73c8681e2ed162b71e4c27 -size 2724855 +oid sha256:4cdf5171882d5d1830f8719e650f7ce271fe67d8561761a6e1022191e8b47506 +size 2856618 diff --git a/Content/Systems/Blueprints/AnimNotifies/BP_NotifyState_EarlyTransition.uasset b/Content/Systems/Blueprints/AnimNotifies/BP_NotifyState_EarlyTransition.uasset index 6cfb789d..359ad81c 100644 --- a/Content/Systems/Blueprints/AnimNotifies/BP_NotifyState_EarlyTransition.uasset +++ b/Content/Systems/Blueprints/AnimNotifies/BP_NotifyState_EarlyTransition.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e151ea273553776db22394859be3df78cf795452dd52b8ddb923be4d0fc3703 -size 115552 +oid sha256:8b16845a075f6b3c797189ee8c290005bb39b84568b44a1bf0ead700f6a699c5 +size 115868 diff --git a/Content/Systems/Blueprints/SandboxCharacter_CMC_ABP.uasset b/Content/Systems/Blueprints/SandboxCharacter_CMC_ABP.uasset new file mode 100644 index 00000000..bdddb1fe --- /dev/null +++ b/Content/Systems/Blueprints/SandboxCharacter_CMC_ABP.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9087665fa2eccf5f2c7b6dea4c603c932463a1e5be2ca062cf29a5da8cfaa1c6 +size 4706474 diff --git a/Content/Systems/Blueprints/d/SandboxCharacter_CMC_ABP.uasset b/Content/Systems/Blueprints/d/SandboxCharacter_CMC_ABP.uasset deleted file mode 100644 index d7156d0f..00000000 --- a/Content/Systems/Blueprints/d/SandboxCharacter_CMC_ABP.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2808cb4aad7c35a91a47d0390050bdda37673c795d1ef64d18e31a14bb43a28c -size 4689910 diff --git a/Content/Systems/Inventory/Other/Inputs/Actions/IA_QuickEquipAGIS.uasset b/Content/Systems/Inventory/Other/Inputs/Actions/IA_QuickEquipAGIS.uasset new file mode 100644 index 00000000..fbf3deca --- /dev/null +++ b/Content/Systems/Inventory/Other/Inputs/Actions/IA_QuickEquipAGIS.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1f152f98d8c169e785befec45532c49fba9afe1189dfb673f7bfd0ead95331d +size 1254 diff --git a/Content/Systems/Inventory/Other/Inputs/Actions/IA_QuickSelectAGIS.uasset b/Content/Systems/Inventory/Other/Inputs/Actions/IA_QuickSelectAGIS.uasset new file mode 100644 index 00000000..8e1af654 --- /dev/null +++ b/Content/Systems/Inventory/Other/Inputs/Actions/IA_QuickSelectAGIS.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66287d86df1cba7cf2430b9f8e836b59a9f2b232512edc13529accccd1853039 +size 1259 diff --git a/Content/Systems/Inventory/Other/Inputs/IMC_AGIS_Character.uasset b/Content/Systems/Inventory/Other/Inputs/IMC_AGIS_Character.uasset index 13b04346..ba2f3e76 100644 --- a/Content/Systems/Inventory/Other/Inputs/IMC_AGIS_Character.uasset +++ b/Content/Systems/Inventory/Other/Inputs/IMC_AGIS_Character.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0b7a859197393e6b58c1b517b7a13e877f43c94a5856b5c1a4ef5694ffdc49d7 -size 13482 +oid sha256:27722586f97cbe47998891935fb58470b69d31835cd47b8e77edbb3e776b2f3f +size 14476 diff --git a/Content/Systems/Movement/BPC_ClimbingComponent.uasset b/Content/Systems/Movement/BPC_ClimbingComponent.uasset index efbb5e0c..03aa4e4b 100644 --- a/Content/Systems/Movement/BPC_ClimbingComponent.uasset +++ b/Content/Systems/Movement/BPC_ClimbingComponent.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:523cb12029b04fdecddf87810937f18c50dbc11863fb1efc779b275d25552582 -size 2589 +oid sha256:3da809df8c649f61b25a2cc6bf3cc7626b173c8fbbab25a189da48b32f050892 +size 2083 diff --git a/Content/Systems/Movement/CR_ClimbingGraphV2.uasset b/Content/Systems/Movement/CR_ClimbingGraphV2.uasset index bc8997ff..0b7c51f2 100644 --- a/Content/Systems/Movement/CR_ClimbingGraphV2.uasset +++ b/Content/Systems/Movement/CR_ClimbingGraphV2.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eb01d0b280f0d8d4b15bb078df3e95138845ae834d6cb0900d075b4a9f222066 -size 2535 +oid sha256:a0f03cf92e87ac08f17b768c201e08e414696da74d93477925365cb9b326deee +size 2002 diff --git a/Content/Systems/Movement/CR_Mannequin_BasicFootIK.uasset b/Content/Systems/Movement/CR_Mannequin_BasicFootIK.uasset index fd445067..f9897d7f 100644 --- a/Content/Systems/Movement/CR_Mannequin_BasicFootIK.uasset +++ b/Content/Systems/Movement/CR_Mannequin_BasicFootIK.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:189b96a34ac5f7f90fa7b01805759ade8ce5d18d20b0ca92d17d14855b141f57 -size 2655 +oid sha256:44fe3648fe6275a3e5783b136ac2140a8770371cafa5757ea44d5a8672560ee1 +size 2092 diff --git a/Content/Systems/Movement/Climbing/CR_ClimbingGraphV2.uasset b/Content/Systems/Movement/Climbing/CR_ClimbingGraphV2.uasset index 7ef8426b..dfeaf9d3 100644 --- a/Content/Systems/Movement/Climbing/CR_ClimbingGraphV2.uasset +++ b/Content/Systems/Movement/Climbing/CR_ClimbingGraphV2.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:01938c6049e88bbf4dc281d35419a564b9f843b51acc83fa9aedb234b2ec1f03 -size 5636529 +oid sha256:c6ab5665da36c9d52eed988311e2858b86d4ef0705cbe9492a98267160ef60c6 +size 5636477 diff --git a/Content/Systems/Movement/Climbing/CR_Mannequin_BasicFootIK.uasset b/Content/Systems/Movement/Climbing/CR_Mannequin_BasicFootIK.uasset index 03b93d20..59a1c6f2 100644 --- a/Content/Systems/Movement/Climbing/CR_Mannequin_BasicFootIK.uasset +++ b/Content/Systems/Movement/Climbing/CR_Mannequin_BasicFootIK.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:800ea1839e08b2972ce5faaa3bd46ca3e7ef1e420419dcc31ca159fbaa51eaec -size 422574 +oid sha256:febbe61da68133edaf4b2841bb5f93fb645b6be72a0e95da40a8928f7c62c1a6 +size 422595 diff --git a/Content/Systems/Stats/ACStats.uasset b/Content/Systems/Stats/ACStats.uasset index 63b7ea61..f352c506 100644 --- a/Content/Systems/Stats/ACStats.uasset +++ b/Content/Systems/Stats/ACStats.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7ba7b5da32188fd2f21f554bcb6180f0970800146b5889f3058d421ac8c4863f -size 2225 +oid sha256:215c6cef98047a74293c93ec3963c37b85f13fff422ac5f56a82d04b02faebe8 +size 1809 diff --git a/Content/Systems/Stats/AC_Stats.uasset b/Content/Systems/Stats/AC_Stats.uasset index ffe63fd3..12d4aa51 100644 --- a/Content/Systems/Stats/AC_Stats.uasset +++ b/Content/Systems/Stats/AC_Stats.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:10228d2f4e1f223252598a5b195935861bf7e0aa4bdfbc550e554cd07d7ddda5 -size 716046 +oid sha256:930de0948cc4ad55c5709e9ff08c6ecd903ce1c03d8fda5326676795f4e87ad0 +size 779609 diff --git a/Content/Systems/Weather/UltraDynamicSky/Blueprints/Ultra_Dynamic_Weather.uasset b/Content/Systems/Weather/UltraDynamicSky/Blueprints/Ultra_Dynamic_Weather.uasset index 306a5203..fa119024 100644 --- a/Content/Systems/Weather/UltraDynamicSky/Blueprints/Ultra_Dynamic_Weather.uasset +++ b/Content/Systems/Weather/UltraDynamicSky/Blueprints/Ultra_Dynamic_Weather.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2f12e442260cc6d0e872a7df46f3a4330a9a9b28b2d815b3075fefc80808a73d -size 18588972 +oid sha256:5a56d67bbaa565468caa9a0b92d0020f0aca2cf11a7f751bf724127d08ae8af5 +size 18628288 diff --git a/Content/UI/Inventory_UI/Widgets/InventoryMenu/WB_InventoryPart1.uasset b/Content/UI/Inventory_UI/Widgets/InventoryMenu/WB_InventoryPart1.uasset index 336778c6..f21e8451 100644 --- a/Content/UI/Inventory_UI/Widgets/InventoryMenu/WB_InventoryPart1.uasset +++ b/Content/UI/Inventory_UI/Widgets/InventoryMenu/WB_InventoryPart1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:be759c641b2fda4fe9afa8182e10a777175a4b978acc427d0c18c9e1c14ec5c5 -size 119134 +oid sha256:7b2ab9301526bbbcd0f7d4dc48bda3f8ff22ae2bee85310275c77544ad876346 +size 121862 diff --git a/Content/UI/Inventory_UI/Widgets/InventoryMenu/WB_InventoryPart2.uasset b/Content/UI/Inventory_UI/Widgets/InventoryMenu/WB_InventoryPart2.uasset index 1ed6fc5c..3dc89aad 100644 --- a/Content/UI/Inventory_UI/Widgets/InventoryMenu/WB_InventoryPart2.uasset +++ b/Content/UI/Inventory_UI/Widgets/InventoryMenu/WB_InventoryPart2.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f186cd74405fed5a73b9c07f8f7dc2981b70e6fe486d3d7879b4cf3d20252881 -size 62862 +oid sha256:ff639cf0ed2463f04b7e1d0968c795e621f7379946b90e8683c6113749cbf1bc +size 61522 diff --git a/Content/UI/Inventory_UI/Widgets/Other/WB_QuickSelect.uasset b/Content/UI/Inventory_UI/Widgets/Other/WB_QuickSelect.uasset new file mode 100644 index 00000000..4aa74ea0 --- /dev/null +++ b/Content/UI/Inventory_UI/Widgets/Other/WB_QuickSelect.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:955af4e783a217488282a2c9e4e1d8d62f0e83c84a8064379b3cf8872f281567 +size 103703 diff --git a/Content/UI/Inventory_UI/Widgets/Other/WB_YouDied.uasset b/Content/UI/Inventory_UI/Widgets/Other/WB_YouDied.uasset new file mode 100644 index 00000000..b6fafb11 --- /dev/null +++ b/Content/UI/Inventory_UI/Widgets/Other/WB_YouDied.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28cac647211e51db9316c6284ffe3c74387556ee10da5d14cedff1354a5c9506 +size 55188 diff --git a/Content/UI/Inventory_UI/Widgets/WB_Container.uasset b/Content/UI/Inventory_UI/Widgets/WB_Container.uasset index e2ff4100..f59975ec 100644 --- a/Content/UI/Inventory_UI/Widgets/WB_Container.uasset +++ b/Content/UI/Inventory_UI/Widgets/WB_Container.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:59dca779ab22f2ce943aac58ccfc25368e6ae2433787597ded84e6121a756bde -size 463043 +oid sha256:597bf29ff90c371813aaa58246d5f82bd2d30413167f54bc9db8cabd51756e77 +size 463245