- 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 <noreply@anthropic.com>
42 KiB
đïž Architecture du Projet â ProjectF
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 et le skill
maintain-architecture-doc.
1. Vue d'ensemble du projet
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, dansContent/. - 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.
1.2 Les grandes couches du projet
Le projet est construit par empilement de trois grands blocs de contenu, plus une couche d'outillage IA :
-
Framework de personnage / locomotion ("Sandbox Character") â
Content/Systems/Blueprints/Basé sur le sample officiel Epic "Motion Matching" (pluginsMover,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. -
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. -
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. -
Outillage IA â plugins
VibeUE,EditorToolset,ModelContextProtocol,Terminal(dĂ©clarĂ©s dansProjectF.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 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 |
|---|---|---|
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 deContent/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/<NomDuSysteme>/, Ă l'image deSystems/Stats/,Systems/Scent/,Systems/Movable_Object/. - Nouvel objet d'inventaire (item) â suivre le patron existant dans
Content/Items/: un BlueprintBP_Item_<Nom>(hĂ©ritant de_BP_ItemBaseou d'une base spĂ©cialisĂ©e dansItems/BaseBlueprints/), ses assets (mesh/matĂ©riau/texture) dans un sous-dossierContent/Items/<Nom>/ouContent/Items/Resources/<Nom>/, et une entrĂ©e dansDT_Items/ les DataAssets sousContent/Data/Inventory_Data/DataAssets/. - Nouvel Input Action liĂ© Ă l'inventaire â
Content/Systems/Inventory/Other/Inputs/Actions/, mappĂ© dansIMC_AGIS_CharacterouIMC_AGIS_InventoryTab. Input Action de dĂ©placement/camĂ©ra gĂ©nĂ©rique âContent/Core/PlayerController/Input/, mappĂ© dansIMC_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 dansInventory_Player.
2. Vue d'ensemble de l'arborescence racine
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" :
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.
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
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.
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)
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
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
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/
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.
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_graphattend un champ"ref"pour identifier chaque nĆud dans la listenodes(pas"id"). Un mauvais nom de champ Ă©choue silencieusement (retourneNonesans erreur explicite).- Les variables locales Ă une fonction (paramĂštres, locals créés via
add_object_variableavecgraph=...) ne sont pas fiables avecbuild_graph'svariable_get/variable_set: préférer des variables membres du Blueprint. - Un
K2Node_VariableSet/Getcréé 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 surWB_Containeret sur un widget créé cette session) â toujours vĂ©rifier les pins du nĆud créé (get_node_pins) avant de cĂąbler, ou utiliserbuild_graphavectype: "variable_set"+params.variableen 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 testeradd_function_call_on_variableet vĂ©rifier le rĂ©sultat viaget_node_pins/get_nodes_in_graph. - Ăcrire une valeur littĂ©rale sur un pin de type
Text,ObjectouClassviaset_node_pin_valueĂ©choue souvent silencieusement Ă l'affichage (get_node_pinsrenvoie toujoursdefault_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 :
- Consulter ce document avant de modifier la structure du projet.
- Le mettre à jour aprÚs toute création/suppression/déplacement/renommage de fichier ou dossier important.
- Ajouter une description pour tout nouveau fichier important.
- Retirer les entrées obsolÚtes (fichiers supprimés).
- Corriger les chemins aprÚs un déplacement.
- Mettre à jour les descriptions quand un systÚme évolue significativement.
- Vérifier périodiquement la cohérence entre ce document et l'arborescence réelle.
- 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_ABPrenommé/déplacé versContent/Systems/Blueprints/SandboxCharacter_CMC_ABPvia 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_TickManageretContent/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).