claude-code-arcane 2.2.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/README.md +104 -55
- package/agents/career/career-strategist.md +88 -0
- package/agents/career/cv-reviewer.md +81 -0
- package/agents/career/hiring-manager.md +68 -0
- package/agents/career/mock-interviewer.md +76 -0
- package/agents/freelance/client-screener.md +84 -0
- package/agents/freelance/discovery-call.md +65 -0
- package/agents/freelance/pipeline-strategist.md +99 -0
- package/agents/freelance/proposal-reviewer.md +82 -0
- package/agents/game/ue-blueprint-specialist.md +125 -0
- package/agents/game/ue-gas-specialist.md +133 -0
- package/agents/game/ue-umg-specialist.md +131 -0
- package/dist/cli.js +57 -13
- package/docs/RELEASE-SETUP.md +1 -1
- package/docs/SKILLS-CATALOG.md +67 -4
- package/docs/USER-GUIDE.md +77 -72
- package/docs/agent-hierarchy.md +21 -1
- package/docs/presentations/build_arcane_deck.py +2 -2
- package/docs/presentations/build_arcane_deck_12.py +2 -2
- package/hooks/detect-unreal.sh +90 -0
- package/package.json +2 -2
- package/profiles/freelance.yaml +43 -0
- package/profiles/job-hunt.yaml +5 -2
- package/profiles/unreal-dev.yaml +97 -0
- package/rules/drafter-reviewer.md +16 -3
- package/rules/freelance-guardrails.md +53 -0
- package/rules/gamedev/unreal-code.md +125 -0
- package/skills/career-registry/SKILL.md +95 -0
- package/skills/career-registry/scripts/career_registry.py +488 -0
- package/skills/client-screen/SKILL.md +83 -0
- package/skills/client-screen/references/red-flags.md +95 -0
- package/skills/cover-letter/SKILL.md +4 -3
- package/skills/cv-tailor/SKILL.md +11 -2
- package/skills/freelance-deliver/SKILL.md +90 -0
- package/skills/freelance-hunt/SKILL.md +126 -0
- package/skills/freelance-hunt/references/templates/Connects.md +39 -0
- package/skills/freelance-hunt/references/templates/Contrato.md +60 -0
- package/skills/freelance-hunt/references/templates/Propuesta.md +66 -0
- package/skills/freelance-kickoff/SKILL.md +94 -0
- package/skills/freelance-pipeline/SKILL.md +109 -0
- package/skills/freelance-pipeline/scripts/import_history.py +425 -0
- package/skills/freelance-profile/SKILL.md +93 -0
- package/skills/freelance-proposal/SKILL.md +112 -0
- package/skills/freelance-scan/SKILL.md +196 -0
- package/skills/freelance-scan/references/dedup.md +35 -0
- package/skills/freelance-scan/references/platforms.md +167 -0
- package/skills/freelance-scan/scripts/freelance_search.py +1077 -0
- package/skills/install-mcp/SKILL.md +135 -46
- package/skills/install-mcp/references/unreal-operations.md +55 -0
- package/skills/interview-prep/SKILL.md +11 -3
- package/skills/job-aplicar/SKILL.md +5 -1
- package/skills/job-hunt/SKILL.md +17 -0
- package/skills/job-outcome/SKILL.md +15 -1
- package/skills/job-upskill/SKILL.md +10 -2
- package/skills/ue-actor-component-architecture/SKILL.md +509 -0
- package/skills/ue-actor-component-architecture/references/actor-lifecycle.md +301 -0
- package/skills/ue-actor-component-architecture/references/component-types.md +592 -0
- package/skills/ue-ai-navigation/SKILL.md +526 -0
- package/skills/ue-ai-navigation/references/behavior-tree-patterns.md +392 -0
- package/skills/ue-ai-navigation/references/behavior-tree-workflow.md +107 -0
- package/skills/ue-ai-navigation/references/custom-bttask.md +104 -0
- package/skills/ue-ai-navigation/references/eqs-reference.md +423 -0
- package/skills/ue-animation-system/SKILL.md +521 -0
- package/skills/ue-animation-system/references/anim-notify-reference.md +486 -0
- package/skills/ue-animation-system/references/locomotion-setup.md +550 -0
- package/skills/ue-async-threading/SKILL.md +433 -0
- package/skills/ue-async-threading/references/thread-safety-guide.md +213 -0
- package/skills/ue-async-threading/references/threading-patterns.md +345 -0
- package/skills/ue-audio-system/SKILL.md +527 -0
- package/skills/ue-audio-system/references/audio-setup-patterns.md +700 -0
- package/skills/ue-blueprints/SKILL.md +134 -0
- package/skills/ue-blueprints/references/communication.md +82 -0
- package/skills/ue-character-movement/SKILL.md +475 -0
- package/skills/ue-character-movement/references/cmc-extension-patterns.md +335 -0
- package/skills/ue-character-movement/references/movement-pipeline.md +189 -0
- package/skills/ue-cpp-foundations/SKILL.md +533 -0
- package/skills/ue-cpp-foundations/references/components-and-gc.md +107 -0
- package/skills/ue-cpp-foundations/references/container-patterns.md +544 -0
- package/skills/ue-cpp-foundations/references/delegate-patterns.md +497 -0
- package/skills/ue-cpp-foundations/references/gameplay-classes-cpp.md +136 -0
- package/skills/ue-cpp-foundations/references/property-specifiers.md +306 -0
- package/skills/ue-data-assets-tables/SKILL.md +527 -0
- package/skills/ue-data-assets-tables/references/asset-loading-patterns.md +306 -0
- package/skills/ue-data-assets-tables/references/data-driven-design.md +378 -0
- package/skills/ue-editor-tools/SKILL.md +523 -0
- package/skills/ue-editor-tools/references/detail-customization-patterns.md +395 -0
- package/skills/ue-editor-tools/references/editor-module-setup.md +480 -0
- package/skills/ue-game-features/SKILL.md +477 -0
- package/skills/ue-game-features/references/experience-system.md +222 -0
- package/skills/ue-game-features/references/game-feature-patterns.md +308 -0
- package/skills/ue-gameplay-abilities/SKILL.md +518 -0
- package/skills/ue-gameplay-abilities/references/ability-task-reference.md +391 -0
- package/skills/ue-gameplay-abilities/references/gameplay-effect-reference.md +397 -0
- package/skills/ue-gameplay-abilities/references/gas-setup-patterns.md +369 -0
- package/skills/ue-gameplay-framework/SKILL.md +466 -0
- package/skills/ue-gameplay-framework/references/framework-class-map.md +243 -0
- package/skills/ue-input-system/SKILL.md +394 -0
- package/skills/ue-input-system/references/cpp-setup.md +131 -0
- package/skills/ue-input-system/references/enhanced-input-workflow.md +117 -0
- package/skills/ue-input-system/references/input-action-reference.md +731 -0
- package/skills/ue-mass-entity/SKILL.md +476 -0
- package/skills/ue-mass-entity/references/mass-entity-patterns.md +319 -0
- package/skills/ue-mass-entity/references/mass-fragment-reference.md +119 -0
- package/skills/ue-materials-rendering/SKILL.md +526 -0
- package/skills/ue-materials-rendering/references/material-parameter-reference.md +216 -0
- package/skills/ue-materials-rendering/references/post-process-settings.md +383 -0
- package/skills/ue-module-build-system/SKILL.md +487 -0
- package/skills/ue-module-build-system/references/build-cs-reference.md +418 -0
- package/skills/ue-module-build-system/references/common-build-errors.md +381 -0
- package/skills/ue-naming-conventions/SKILL.md +142 -0
- package/skills/ue-naming-conventions/references/asset-name-modifiers.md +233 -0
- package/skills/ue-naming-conventions/references/content-structure.md +83 -0
- package/skills/ue-networking-replication/SKILL.md +452 -0
- package/skills/ue-networking-replication/references/replication-patterns.md +526 -0
- package/skills/ue-networking-replication/references/rpc-decision-guide.md +393 -0
- package/skills/ue-niagara-effects/SKILL.md +531 -0
- package/skills/ue-niagara-effects/references/niagara-data-interfaces.md +491 -0
- package/skills/ue-niagara-effects/references/niagara-parameter-types.md +153 -0
- package/skills/ue-niagara-effects/references/niagara-workflow.md +115 -0
- package/skills/ue-packaging/SKILL.md +116 -0
- package/skills/ue-physics-collision/SKILL.md +423 -0
- package/skills/ue-physics-collision/references/collision-channel-setup.md +218 -0
- package/skills/ue-physics-collision/references/trace-patterns.md +499 -0
- package/skills/ue-procedural-generation/SKILL.md +505 -0
- package/skills/ue-procedural-generation/references/pcg-node-reference.md +381 -0
- package/skills/ue-procedural-generation/references/procedural-mesh-patterns.md +940 -0
- package/skills/ue-project-context/SKILL.md +305 -0
- package/skills/ue-sequencer-cinematics/SKILL.md +506 -0
- package/skills/ue-sequencer-cinematics/references/sequencer-patterns.md +629 -0
- package/skills/ue-serialization-savegames/SKILL.md +524 -0
- package/skills/ue-serialization-savegames/references/save-system-architecture.md +705 -0
- package/skills/ue-state-trees/SKILL.md +489 -0
- package/skills/ue-state-trees/references/state-tree-mass-integration.md +184 -0
- package/skills/ue-state-trees/references/state-tree-patterns.md +321 -0
- package/skills/ue-testing-debugging/SKILL.md +520 -0
- package/skills/ue-testing-debugging/references/automation-test-patterns.md +387 -0
- package/skills/ue-testing-debugging/references/profiling-commands.md +357 -0
- package/skills/ue-ui-umg-slate/SKILL.md +431 -0
- package/skills/ue-ui-umg-slate/references/common-ui-setup.md +484 -0
- package/skills/ue-ui-umg-slate/references/widget-types.md +487 -0
- package/skills/ue-world-level-streaming/SKILL.md +518 -0
- package/skills/ue-world-level-streaming/references/streaming-patterns.md +414 -0
- package/templates/gamedev/unreal-project-context.md +107 -0
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
# Asset Name Modifiers
|
|
2
|
+
|
|
3
|
+
> Adapted from the [Gamemakin UE Style Guide](https://github.com/Allar/ue5-style-guide) (MIT, Gamemakin LLC). The upstream guide is UE4-era — its `main` branch still says so and the `v2` branch is an unfinished draft last touched in 2023. The durable naming and structure conventions are reproduced here; the UE5 section below covers asset types the guide predates, and deprecated entries are marked rather than silently carried forward.
|
|
4
|
+
|
|
5
|
+
Combine with the base name: `Prefix_BaseAssetName_Variant_Suffix`.
|
|
6
|
+
|
|
7
|
+
## Most Common
|
|
8
|
+
|
|
9
|
+
| Asset Type | Prefix | Suffix | Notes |
|
|
10
|
+
|---|---|---|---|
|
|
11
|
+
| Level / Map | | | Belongs under `Maps/` |
|
|
12
|
+
| Level (Persistent) | | `_P` | |
|
|
13
|
+
| Level (Audio) | | `_Audio` | |
|
|
14
|
+
| Level (Lighting) | | `_Lighting` | |
|
|
15
|
+
| Level (Geometry) | | `_Geo` | |
|
|
16
|
+
| Level (Gameplay) | | `_Gameplay` | |
|
|
17
|
+
| Blueprint | `BP_` | | |
|
|
18
|
+
| Material | `M_` | | |
|
|
19
|
+
| Static Mesh | `SM_` | | Upstream uses `S_`; `SM_` matches Epic's own tooling. Pick one per project. |
|
|
20
|
+
| Skeletal Mesh | `SK_` | | |
|
|
21
|
+
| Texture | `T_` | `_?` | See Textures below |
|
|
22
|
+
| Widget Blueprint | `WBP_` | | |
|
|
23
|
+
|
|
24
|
+
## Blueprints
|
|
25
|
+
|
|
26
|
+
| Asset Type | Prefix | Suffix | Notes |
|
|
27
|
+
|---|---|---|---|
|
|
28
|
+
| Blueprint | `BP_` | | |
|
|
29
|
+
| Blueprint Component | `BP_` | `Component` | e.g. `BP_InventoryComponent` |
|
|
30
|
+
| Blueprint Function Library | `BPFL_` | | |
|
|
31
|
+
| Blueprint Interface | `BPI_` | | |
|
|
32
|
+
| Blueprint Macro Library | `BPML_` | | Avoid macro libraries where possible |
|
|
33
|
+
| Enumeration | `E` | | No underscore, matching C++ |
|
|
34
|
+
| Structure | `F` or `S` | | No underscore. Some teams prefer `F_`/`E_` for BP-authored types — pick one |
|
|
35
|
+
| Widget Blueprint | `WBP_` | | |
|
|
36
|
+
|
|
37
|
+
## Animation
|
|
38
|
+
|
|
39
|
+
| Asset Type | Prefix | Suffix | Notes |
|
|
40
|
+
|---|---|---|---|
|
|
41
|
+
| Animation Blueprint | `ABP_` | | |
|
|
42
|
+
| Animation Sequence | `A_` | | |
|
|
43
|
+
| Animation Montage | `AM_` | | |
|
|
44
|
+
| Animation Composite | `AC_` | | |
|
|
45
|
+
| Aim Offset (1D or 2D) | `AO_` | | |
|
|
46
|
+
| Blend Space (1D or 2D) | `BS_` | | |
|
|
47
|
+
| Level Sequence | `LS_` | | |
|
|
48
|
+
| Morph Target | `MT_` | | |
|
|
49
|
+
| Skeleton | `SKEL_` | | |
|
|
50
|
+
| Control Rig | `CR_` | | UE5 |
|
|
51
|
+
| IK Rig | `IK_` | | UE5 |
|
|
52
|
+
| IK Retargeter | `RTG_` | | UE5 |
|
|
53
|
+
| Pose Asset | `Pose_` | | |
|
|
54
|
+
| Rig | `Rig_` | | Legacy; prefer Control Rig |
|
|
55
|
+
|
|
56
|
+
## Artificial Intelligence
|
|
57
|
+
|
|
58
|
+
| Asset Type | Prefix | Suffix | Notes |
|
|
59
|
+
|---|---|---|---|
|
|
60
|
+
| AI Controller | `AIC_` | | |
|
|
61
|
+
| Behavior Tree | `BT_` | | |
|
|
62
|
+
| Blackboard | `BB_` | | |
|
|
63
|
+
| BT Decorator | `BTDecorator_` | | |
|
|
64
|
+
| BT Service | `BTService_` | | |
|
|
65
|
+
| BT Task | `BTTask_` | | |
|
|
66
|
+
| Environment Query | `EQS_` | | |
|
|
67
|
+
| EnvQueryContext | `EQS_` | `Context` | |
|
|
68
|
+
| State Tree | `ST_` | | UE5 |
|
|
69
|
+
|
|
70
|
+
## Materials
|
|
71
|
+
|
|
72
|
+
| Asset Type | Prefix | Suffix | Notes |
|
|
73
|
+
|---|---|---|---|
|
|
74
|
+
| Material | `M_` | | Only inside `MaterialLibrary/` if you enforce instances-only |
|
|
75
|
+
| Material Instance | `MI_` | | |
|
|
76
|
+
| Material Function | `MF_` | | |
|
|
77
|
+
| Material Parameter Collection | `MPC_` | | |
|
|
78
|
+
| Material (Post Process) | `PP_` | | |
|
|
79
|
+
| Subsurface Profile | `SP_` | | |
|
|
80
|
+
| Physical Material | `PM_` | | |
|
|
81
|
+
| Decal | `M_`, `MI_` | `_Decal` | |
|
|
82
|
+
| Material Layer | `ML_` | | UE5 |
|
|
83
|
+
| Material Layer Blend | `MLB_` | | UE5 |
|
|
84
|
+
|
|
85
|
+
## Textures
|
|
86
|
+
|
|
87
|
+
| Asset Type | Prefix | Suffix |
|
|
88
|
+
|---|---|---|
|
|
89
|
+
| Texture | `T_` | |
|
|
90
|
+
| Diffuse / Albedo / Base Color | `T_` | `_D` |
|
|
91
|
+
| Normal | `T_` | `_N` |
|
|
92
|
+
| Roughness | `T_` | `_R` |
|
|
93
|
+
| Metallic | `T_` | `_M` |
|
|
94
|
+
| Specular | `T_` | `_S` |
|
|
95
|
+
| Alpha / Opacity | `T_` | `_A` |
|
|
96
|
+
| Ambient Occlusion | `T_` | `_O` |
|
|
97
|
+
| Bump | `T_` | `_B` |
|
|
98
|
+
| Emissive | `T_` | `_E` |
|
|
99
|
+
| Mask | `T_` | `_M` |
|
|
100
|
+
| Packed | `T_` | `_*` |
|
|
101
|
+
| Texture Cube | `TC_` | |
|
|
102
|
+
| Media Texture | `MT_` | |
|
|
103
|
+
| Render Target | `RT_` | |
|
|
104
|
+
| Cube Render Target | `RTC_` | |
|
|
105
|
+
| Texture Light Profile | `TLP` | |
|
|
106
|
+
|
|
107
|
+
**Packing.** When channels are packed into one texture, the suffix lists the packed channels in RGBA order — a texture with roughness in R, ambient occlusion in G and metallic in B is `T_Rock_RAM`. Pack only channels a shader reads together, and record the packing order in the project context so nobody has to reverse-engineer it from a material graph.
|
|
108
|
+
|
|
109
|
+
## Effects
|
|
110
|
+
|
|
111
|
+
| Asset Type | Prefix | Suffix | Notes |
|
|
112
|
+
|---|---|---|---|
|
|
113
|
+
| Niagara System | `NS_` | | UE5 default VFX |
|
|
114
|
+
| Niagara Emitter | `NE_` | | |
|
|
115
|
+
| Niagara Function | `NF_` | | |
|
|
116
|
+
| Niagara Module | `NM_` | | |
|
|
117
|
+
| Niagara Parameter Collection | `NPC_` | | |
|
|
118
|
+
| Material (Post Process) | `PP_` | | |
|
|
119
|
+
| ~~Particle System (Cascade)~~ | ~~`PS_`~~ | | **Deprecated** — Cascade is legacy, use Niagara |
|
|
120
|
+
|
|
121
|
+
Niagara asset names must contain no spaces at all: some Niagara code paths mishandle them.
|
|
122
|
+
|
|
123
|
+
## Sounds
|
|
124
|
+
|
|
125
|
+
| Asset Type | Prefix | Suffix | Notes |
|
|
126
|
+
|---|---|---|---|
|
|
127
|
+
| Sound Wave | `A_` | | |
|
|
128
|
+
| Sound Cue | `A_` | `_Cue` | |
|
|
129
|
+
| Sound Attenuation | `ATT_` | | |
|
|
130
|
+
| Sound Concurrency | | `_SC` | Named after its Sound Class |
|
|
131
|
+
| Sound Class | | | No affix; put in a `SoundClasses` folder |
|
|
132
|
+
| Sound Mix | `Mix_` | | |
|
|
133
|
+
| Reverb Effect | `Reverb_` | | |
|
|
134
|
+
| Dialogue Voice | `DV_` | | |
|
|
135
|
+
| Dialogue Wave | `DW_` | | |
|
|
136
|
+
| MetaSound Source | `MSS_` | | UE5 |
|
|
137
|
+
| MetaSound Patch | `MSP_` | | UE5 |
|
|
138
|
+
| Submix | `SM_`, `Submix_` | | UE5 — `Submix_` avoids colliding with Static Mesh |
|
|
139
|
+
|
|
140
|
+
## User Interface
|
|
141
|
+
|
|
142
|
+
| Asset Type | Prefix | Suffix | Notes |
|
|
143
|
+
|---|---|---|---|
|
|
144
|
+
| Widget Blueprint | `WBP_` | | |
|
|
145
|
+
| Slate Widget Style | `Style_` | | |
|
|
146
|
+
| Font | `Font_` | | |
|
|
147
|
+
| Common UI Input Action Data | `IAD_` | | UE5 |
|
|
148
|
+
|
|
149
|
+
## Input (UE5 Enhanced Input)
|
|
150
|
+
|
|
151
|
+
| Asset Type | Prefix | Notes |
|
|
152
|
+
|---|---|---|
|
|
153
|
+
| Input Action | `IA_` | |
|
|
154
|
+
| Input Mapping Context | `IMC_` | |
|
|
155
|
+
| Input Modifier | `IM_` | |
|
|
156
|
+
| Input Trigger | `IT_` | |
|
|
157
|
+
| Player Mappable Input Config | `PMI_` | |
|
|
158
|
+
|
|
159
|
+
## Gameplay Ability System (UE5)
|
|
160
|
+
|
|
161
|
+
| Asset Type | Prefix | Notes |
|
|
162
|
+
|---|---|---|
|
|
163
|
+
| Gameplay Ability | `GA_` | |
|
|
164
|
+
| Gameplay Effect | `GE_` | |
|
|
165
|
+
| Gameplay Cue | `GC_` | Notify actors/statics under a `GameplayCues` folder |
|
|
166
|
+
| Ability Task | `AT_` | Usually C++ |
|
|
167
|
+
|
|
168
|
+
## Data
|
|
169
|
+
|
|
170
|
+
| Asset Type | Prefix | Suffix | Notes |
|
|
171
|
+
|---|---|---|---|
|
|
172
|
+
| Data Asset | `DA_` | | Upstream says "prefix based on class"; `DA_` is the common modern default |
|
|
173
|
+
| Primary Data Asset | `PDA_` | | |
|
|
174
|
+
| Data Table | `DT_` | | |
|
|
175
|
+
| Curve Table | `Curve_` | `_Table` | |
|
|
176
|
+
| Float Curve | `Curve_` | `_Float` | |
|
|
177
|
+
| Vector Curve | `Curve_` | `_Vector` | |
|
|
178
|
+
| Color Curve | `Curve_` | `_Color` | |
|
|
179
|
+
| Composite Data Table | `CDT_` | | UE5 |
|
|
180
|
+
|
|
181
|
+
## World & Streaming (UE5)
|
|
182
|
+
|
|
183
|
+
| Asset Type | Prefix | Notes |
|
|
184
|
+
|---|---|---|
|
|
185
|
+
| Level Instance | `LI_` | |
|
|
186
|
+
| Packed Level Actor | `PLA_` | |
|
|
187
|
+
| Data Layer Asset | `DL_` | |
|
|
188
|
+
| World Partition Builder settings | | Config, not an asset |
|
|
189
|
+
| PCG Graph | `PCG_` | |
|
|
190
|
+
| PCG Settings | `PCGS_` | |
|
|
191
|
+
| Landscape Grass Type | `LG_` | |
|
|
192
|
+
| Landscape Layer | `LL_` | |
|
|
193
|
+
| Foliage Type | `FT_` | |
|
|
194
|
+
|
|
195
|
+
## Physics
|
|
196
|
+
|
|
197
|
+
| Asset Type | Prefix | Notes |
|
|
198
|
+
|---|---|---|
|
|
199
|
+
| Physical Material | `PM_` | |
|
|
200
|
+
| Physics Asset | `PHYS_` | |
|
|
201
|
+
| Chaos Cache Collection | `CCC_` | UE5 |
|
|
202
|
+
| Geometry Collection | `GC_` | UE5 — collides with Gameplay Cue; prefer `GEOC_` if both are used |
|
|
203
|
+
| ~~Destructible Mesh~~ | ~~`DM_`~~ | **Deprecated** — replaced by Chaos Geometry Collections |
|
|
204
|
+
|
|
205
|
+
## Paper 2D
|
|
206
|
+
|
|
207
|
+
| Asset Type | Prefix |
|
|
208
|
+
|---|---|
|
|
209
|
+
| Paper Flipbook | `PFB_` |
|
|
210
|
+
| Sprite | `SPR_` |
|
|
211
|
+
| Sprite Atlas Group | `SPRG_` |
|
|
212
|
+
| Tile Map | `TM_` |
|
|
213
|
+
| Tile Set | `TS_` |
|
|
214
|
+
|
|
215
|
+
## Miscellaneous
|
|
216
|
+
|
|
217
|
+
| Asset Type | Prefix | Suffix | Notes |
|
|
218
|
+
|---|---|---|---|
|
|
219
|
+
| Media Player | `MP_` | | |
|
|
220
|
+
| File Media Source | `FMS_` | | |
|
|
221
|
+
| Force Feedback Effect | `FFE_` | | |
|
|
222
|
+
| Touch Interface Setup | `TI_` | | |
|
|
223
|
+
| Object Library | `OL_` | | |
|
|
224
|
+
| Sprite Sheet | `SS_` | | |
|
|
225
|
+
| Static Vector Field | `VF_` | | |
|
|
226
|
+
| Animated Vector Field | `VFA_` | | |
|
|
227
|
+
| Camera Anim | `CA_` | | Legacy; prefer Sequencer |
|
|
228
|
+
| Redirector | | | Not authored — fix these up promptly |
|
|
229
|
+
| ~~Matinee Data~~ | ~~`Matinee_`~~ | | **Removed in UE5** — use Sequencer / `LS_` |
|
|
230
|
+
|
|
231
|
+
## Prefix Collisions To Watch
|
|
232
|
+
|
|
233
|
+
`SM_` (Static Mesh vs Submix), `MT_` (Morph Target vs Media Texture), `PM_` (Physical Material — also used for Physics Material), `GC_` (Gameplay Cue vs Geometry Collection), `M_` (Material vs Montage in some houses). Where two apply in one project, disambiguate one of them and record the decision in `docs/unreal/project-context.md`.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Content Directory Structure
|
|
2
|
+
|
|
3
|
+
> Adapted from the [Gamemakin UE Style Guide](https://github.com/Allar/ue5-style-guide) (MIT, Gamemakin LLC), sections 2.1–2.9. The layout is engine-version-agnostic; the UE5 notes below are additions.
|
|
4
|
+
|
|
5
|
+
## Example layout
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
Content/
|
|
9
|
+
MyProject/ <- one top-level folder, named after the project
|
|
10
|
+
Core/ <- fundamental classes; "don't touch" for non-engineers
|
|
11
|
+
Character/
|
|
12
|
+
GameModes/
|
|
13
|
+
Pickups/ <- base Pickup class lives here
|
|
14
|
+
Characters/
|
|
15
|
+
Bob/
|
|
16
|
+
Animations/
|
|
17
|
+
Materials/
|
|
18
|
+
Textures/
|
|
19
|
+
Meshes/
|
|
20
|
+
Placeables/
|
|
21
|
+
Pickups/ <- Health, Ammo: designers tune these freely
|
|
22
|
+
Maps/ <- every level, subfolders welcome
|
|
23
|
+
Campaign1/
|
|
24
|
+
Arenas/
|
|
25
|
+
Test/
|
|
26
|
+
MaterialLibrary/ <- master materials, layered materials, shared utility
|
|
27
|
+
Debug/ <- strippable before shipping
|
|
28
|
+
Utility/ <- generic noise, gradients
|
|
29
|
+
Input/ <- IA_, IMC_ (UE5)
|
|
30
|
+
Abilities/ <- GA_, GE_ (UE5)
|
|
31
|
+
GameplayCues/ <- GC_
|
|
32
|
+
Data/ <- DA_, DT_
|
|
33
|
+
UI/
|
|
34
|
+
Developers/ <- per-person sandboxes, hidden by default
|
|
35
|
+
Sebastian/
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Plugin and marketplace content stays outside `MyProject/`, which is exactly why the top-level folder matters: without it, dropping in third-party content mixes it into your tree irreversibly.
|
|
39
|
+
|
|
40
|
+
## Folder rules
|
|
41
|
+
|
|
42
|
+
**PascalCase, always.** `DesertEagle`, `RocketPistol`. No spaces — they break batch tools and cooking. No Unicode — `Zoë` becomes `Zoe`. This extends to the project's own location on disk: prefer `D:\Project` over a path containing your user name, especially if that name has a non-ASCII character.
|
|
43
|
+
|
|
44
|
+
**One top-level project folder.** All project content in `Content/MyProject/`. Nothing loose in `Content/`.
|
|
45
|
+
|
|
46
|
+
**`Maps/` holds every level.** Whatever sublevel or streaming scheme the project uses, all levels live under `Content/MyProject/Maps`. This makes "open this map" self-explanatory, keeps cook wrangling simple, and makes it hard to accidentally omit a map from a build.
|
|
47
|
+
|
|
48
|
+
**`Core/` for fundamentals.** Base GameMode, GameState, PlayerController, PlayerState, Character and their close relatives. The folder is a social boundary as much as a technical one: designers extend these in child classes elsewhere rather than editing the base and breaking the project.
|
|
49
|
+
|
|
50
|
+
**`MaterialLibrary/` for shared materials.** Master materials, layered materials, material functions, and shared utility textures that belong to no particular asset. The payoff is enforceability — if the policy is "instances only", any plain material outside this folder is a violation you can find by search. `MaterialLibrary/Debug` keeps debug materials strippable and makes it obvious when production content references one.
|
|
51
|
+
|
|
52
|
+
**`Developers/` for sandboxes.** Hidden in the Content Browser by default, so a world builder cannot accidentally place an asset that is still being iterated on. Promotion is a move into the project folder plus a redirector fix-up.
|
|
53
|
+
|
|
54
|
+
**No `Assets` or `AssetTypes` folders.** Everything is an asset, so the name carries no information, and grouping by type duplicates what the Content Browser's filters already do better.
|
|
55
|
+
|
|
56
|
+
**Very large asset sets get their own layout.** A set of hundreds of related assets — a modular environment kit, a large vehicle — earns an internal folder structure of its own rather than being flattened into the parent. Judgement call: the threshold is when the parent folder stops being scannable.
|
|
57
|
+
|
|
58
|
+
**No empty folders.**
|
|
59
|
+
|
|
60
|
+
## Removing a stubborn empty folder
|
|
61
|
+
|
|
62
|
+
An empty folder that will not delete almost always means an unfixed redirector. The safe sequence:
|
|
63
|
+
|
|
64
|
+
1. Confirm you are on source control and your state is clean.
|
|
65
|
+
2. Run **Fix Up Redirectors** on the project.
|
|
66
|
+
3. If it persists, navigate to the folder on disk and delete the assets inside.
|
|
67
|
+
4. Close the editor.
|
|
68
|
+
5. Sync source control state (Perforce: *Reconcile Offline Work* on the content directory).
|
|
69
|
+
6. Reopen the editor and confirm everything still works. If it does not, revert, find out what was actually referencing the folder, and try again.
|
|
70
|
+
7. Confirm the folder is gone, then submit.
|
|
71
|
+
|
|
72
|
+
Steps 1 and 4–6 are the ones people skip, and they are the ones that make the difference between a clean removal and a broken reference hunt.
|
|
73
|
+
|
|
74
|
+
## Renaming safely
|
|
75
|
+
|
|
76
|
+
Renaming is a reference rewrite, not a cosmetic edit:
|
|
77
|
+
|
|
78
|
+
- Clean source-control state first, so the change is revertible as a unit.
|
|
79
|
+
- Rename through the editor, never on disk — the editor creates the redirector that keeps existing references working.
|
|
80
|
+
- Run **Fix Up Redirectors** afterwards, then submit the rename and the fix-up together.
|
|
81
|
+
- Bulk renames deserve a dry run: list what will change and get it approved before touching anything.
|
|
82
|
+
|
|
83
|
+
A rename that leaves redirectors behind will appear to work and then fail at cook time, which is the worst possible moment to discover it.
|