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.
Files changed (144) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +104 -55
  3. package/agents/career/career-strategist.md +88 -0
  4. package/agents/career/cv-reviewer.md +81 -0
  5. package/agents/career/hiring-manager.md +68 -0
  6. package/agents/career/mock-interviewer.md +76 -0
  7. package/agents/freelance/client-screener.md +84 -0
  8. package/agents/freelance/discovery-call.md +65 -0
  9. package/agents/freelance/pipeline-strategist.md +99 -0
  10. package/agents/freelance/proposal-reviewer.md +82 -0
  11. package/agents/game/ue-blueprint-specialist.md +125 -0
  12. package/agents/game/ue-gas-specialist.md +133 -0
  13. package/agents/game/ue-umg-specialist.md +131 -0
  14. package/dist/cli.js +57 -13
  15. package/docs/RELEASE-SETUP.md +1 -1
  16. package/docs/SKILLS-CATALOG.md +67 -4
  17. package/docs/USER-GUIDE.md +77 -72
  18. package/docs/agent-hierarchy.md +21 -1
  19. package/docs/presentations/build_arcane_deck.py +2 -2
  20. package/docs/presentations/build_arcane_deck_12.py +2 -2
  21. package/hooks/detect-unreal.sh +90 -0
  22. package/package.json +2 -2
  23. package/profiles/freelance.yaml +43 -0
  24. package/profiles/job-hunt.yaml +5 -2
  25. package/profiles/unreal-dev.yaml +97 -0
  26. package/rules/drafter-reviewer.md +16 -3
  27. package/rules/freelance-guardrails.md +53 -0
  28. package/rules/gamedev/unreal-code.md +125 -0
  29. package/skills/career-registry/SKILL.md +95 -0
  30. package/skills/career-registry/scripts/career_registry.py +488 -0
  31. package/skills/client-screen/SKILL.md +83 -0
  32. package/skills/client-screen/references/red-flags.md +95 -0
  33. package/skills/cover-letter/SKILL.md +4 -3
  34. package/skills/cv-tailor/SKILL.md +11 -2
  35. package/skills/freelance-deliver/SKILL.md +90 -0
  36. package/skills/freelance-hunt/SKILL.md +126 -0
  37. package/skills/freelance-hunt/references/templates/Connects.md +39 -0
  38. package/skills/freelance-hunt/references/templates/Contrato.md +60 -0
  39. package/skills/freelance-hunt/references/templates/Propuesta.md +66 -0
  40. package/skills/freelance-kickoff/SKILL.md +94 -0
  41. package/skills/freelance-pipeline/SKILL.md +109 -0
  42. package/skills/freelance-pipeline/scripts/import_history.py +425 -0
  43. package/skills/freelance-profile/SKILL.md +93 -0
  44. package/skills/freelance-proposal/SKILL.md +112 -0
  45. package/skills/freelance-scan/SKILL.md +196 -0
  46. package/skills/freelance-scan/references/dedup.md +35 -0
  47. package/skills/freelance-scan/references/platforms.md +167 -0
  48. package/skills/freelance-scan/scripts/freelance_search.py +1077 -0
  49. package/skills/install-mcp/SKILL.md +135 -46
  50. package/skills/install-mcp/references/unreal-operations.md +55 -0
  51. package/skills/interview-prep/SKILL.md +11 -3
  52. package/skills/job-aplicar/SKILL.md +5 -1
  53. package/skills/job-hunt/SKILL.md +17 -0
  54. package/skills/job-outcome/SKILL.md +15 -1
  55. package/skills/job-upskill/SKILL.md +10 -2
  56. package/skills/ue-actor-component-architecture/SKILL.md +509 -0
  57. package/skills/ue-actor-component-architecture/references/actor-lifecycle.md +301 -0
  58. package/skills/ue-actor-component-architecture/references/component-types.md +592 -0
  59. package/skills/ue-ai-navigation/SKILL.md +526 -0
  60. package/skills/ue-ai-navigation/references/behavior-tree-patterns.md +392 -0
  61. package/skills/ue-ai-navigation/references/behavior-tree-workflow.md +107 -0
  62. package/skills/ue-ai-navigation/references/custom-bttask.md +104 -0
  63. package/skills/ue-ai-navigation/references/eqs-reference.md +423 -0
  64. package/skills/ue-animation-system/SKILL.md +521 -0
  65. package/skills/ue-animation-system/references/anim-notify-reference.md +486 -0
  66. package/skills/ue-animation-system/references/locomotion-setup.md +550 -0
  67. package/skills/ue-async-threading/SKILL.md +433 -0
  68. package/skills/ue-async-threading/references/thread-safety-guide.md +213 -0
  69. package/skills/ue-async-threading/references/threading-patterns.md +345 -0
  70. package/skills/ue-audio-system/SKILL.md +527 -0
  71. package/skills/ue-audio-system/references/audio-setup-patterns.md +700 -0
  72. package/skills/ue-blueprints/SKILL.md +134 -0
  73. package/skills/ue-blueprints/references/communication.md +82 -0
  74. package/skills/ue-character-movement/SKILL.md +475 -0
  75. package/skills/ue-character-movement/references/cmc-extension-patterns.md +335 -0
  76. package/skills/ue-character-movement/references/movement-pipeline.md +189 -0
  77. package/skills/ue-cpp-foundations/SKILL.md +533 -0
  78. package/skills/ue-cpp-foundations/references/components-and-gc.md +107 -0
  79. package/skills/ue-cpp-foundations/references/container-patterns.md +544 -0
  80. package/skills/ue-cpp-foundations/references/delegate-patterns.md +497 -0
  81. package/skills/ue-cpp-foundations/references/gameplay-classes-cpp.md +136 -0
  82. package/skills/ue-cpp-foundations/references/property-specifiers.md +306 -0
  83. package/skills/ue-data-assets-tables/SKILL.md +527 -0
  84. package/skills/ue-data-assets-tables/references/asset-loading-patterns.md +306 -0
  85. package/skills/ue-data-assets-tables/references/data-driven-design.md +378 -0
  86. package/skills/ue-editor-tools/SKILL.md +523 -0
  87. package/skills/ue-editor-tools/references/detail-customization-patterns.md +395 -0
  88. package/skills/ue-editor-tools/references/editor-module-setup.md +480 -0
  89. package/skills/ue-game-features/SKILL.md +477 -0
  90. package/skills/ue-game-features/references/experience-system.md +222 -0
  91. package/skills/ue-game-features/references/game-feature-patterns.md +308 -0
  92. package/skills/ue-gameplay-abilities/SKILL.md +518 -0
  93. package/skills/ue-gameplay-abilities/references/ability-task-reference.md +391 -0
  94. package/skills/ue-gameplay-abilities/references/gameplay-effect-reference.md +397 -0
  95. package/skills/ue-gameplay-abilities/references/gas-setup-patterns.md +369 -0
  96. package/skills/ue-gameplay-framework/SKILL.md +466 -0
  97. package/skills/ue-gameplay-framework/references/framework-class-map.md +243 -0
  98. package/skills/ue-input-system/SKILL.md +394 -0
  99. package/skills/ue-input-system/references/cpp-setup.md +131 -0
  100. package/skills/ue-input-system/references/enhanced-input-workflow.md +117 -0
  101. package/skills/ue-input-system/references/input-action-reference.md +731 -0
  102. package/skills/ue-mass-entity/SKILL.md +476 -0
  103. package/skills/ue-mass-entity/references/mass-entity-patterns.md +319 -0
  104. package/skills/ue-mass-entity/references/mass-fragment-reference.md +119 -0
  105. package/skills/ue-materials-rendering/SKILL.md +526 -0
  106. package/skills/ue-materials-rendering/references/material-parameter-reference.md +216 -0
  107. package/skills/ue-materials-rendering/references/post-process-settings.md +383 -0
  108. package/skills/ue-module-build-system/SKILL.md +487 -0
  109. package/skills/ue-module-build-system/references/build-cs-reference.md +418 -0
  110. package/skills/ue-module-build-system/references/common-build-errors.md +381 -0
  111. package/skills/ue-naming-conventions/SKILL.md +142 -0
  112. package/skills/ue-naming-conventions/references/asset-name-modifiers.md +233 -0
  113. package/skills/ue-naming-conventions/references/content-structure.md +83 -0
  114. package/skills/ue-networking-replication/SKILL.md +452 -0
  115. package/skills/ue-networking-replication/references/replication-patterns.md +526 -0
  116. package/skills/ue-networking-replication/references/rpc-decision-guide.md +393 -0
  117. package/skills/ue-niagara-effects/SKILL.md +531 -0
  118. package/skills/ue-niagara-effects/references/niagara-data-interfaces.md +491 -0
  119. package/skills/ue-niagara-effects/references/niagara-parameter-types.md +153 -0
  120. package/skills/ue-niagara-effects/references/niagara-workflow.md +115 -0
  121. package/skills/ue-packaging/SKILL.md +116 -0
  122. package/skills/ue-physics-collision/SKILL.md +423 -0
  123. package/skills/ue-physics-collision/references/collision-channel-setup.md +218 -0
  124. package/skills/ue-physics-collision/references/trace-patterns.md +499 -0
  125. package/skills/ue-procedural-generation/SKILL.md +505 -0
  126. package/skills/ue-procedural-generation/references/pcg-node-reference.md +381 -0
  127. package/skills/ue-procedural-generation/references/procedural-mesh-patterns.md +940 -0
  128. package/skills/ue-project-context/SKILL.md +305 -0
  129. package/skills/ue-sequencer-cinematics/SKILL.md +506 -0
  130. package/skills/ue-sequencer-cinematics/references/sequencer-patterns.md +629 -0
  131. package/skills/ue-serialization-savegames/SKILL.md +524 -0
  132. package/skills/ue-serialization-savegames/references/save-system-architecture.md +705 -0
  133. package/skills/ue-state-trees/SKILL.md +489 -0
  134. package/skills/ue-state-trees/references/state-tree-mass-integration.md +184 -0
  135. package/skills/ue-state-trees/references/state-tree-patterns.md +321 -0
  136. package/skills/ue-testing-debugging/SKILL.md +520 -0
  137. package/skills/ue-testing-debugging/references/automation-test-patterns.md +387 -0
  138. package/skills/ue-testing-debugging/references/profiling-commands.md +357 -0
  139. package/skills/ue-ui-umg-slate/SKILL.md +431 -0
  140. package/skills/ue-ui-umg-slate/references/common-ui-setup.md +484 -0
  141. package/skills/ue-ui-umg-slate/references/widget-types.md +487 -0
  142. package/skills/ue-world-level-streaming/SKILL.md +518 -0
  143. package/skills/ue-world-level-streaming/references/streaming-patterns.md +414 -0
  144. package/templates/gamedev/unreal-project-context.md +107 -0
@@ -0,0 +1,418 @@
1
+ # Build.cs Complete Field Reference
2
+
3
+ This reference covers every significant `ModuleRules` property used in Unreal Engine's C# build scripts. All fields are set inside the constructor of a class that derives from `ModuleRules`.
4
+
5
+ ---
6
+
7
+ ## Class Structure
8
+
9
+ ```csharp
10
+ using UnrealBuildTool;
11
+ using System.IO; // for Path.Combine
12
+ using System.Collections.Generic;
13
+
14
+ public class MyModule : ModuleRules
15
+ {
16
+ public MyModule(ReadOnlyTargetRules Target) : base(Target)
17
+ {
18
+ // All fields are set here
19
+ }
20
+ }
21
+ ```
22
+
23
+ `ReadOnlyTargetRules Target` gives you read access to everything about the build target: platform, configuration, build type, editor flag, etc.
24
+
25
+ ---
26
+
27
+ ## Dependency Fields
28
+
29
+ ### PublicDependencyModuleNames
30
+
31
+ ```csharp
32
+ PublicDependencyModuleNames.AddRange(new string[]
33
+ {
34
+ "Core", // FString, TArray, TMap, logging
35
+ "CoreUObject", // UObject, UClass, reflection
36
+ "Engine", // AActor, UWorld, UGameInstance
37
+ "InputCore", // FKey, EKeys — needed when using Enhanced Input
38
+ });
39
+ ```
40
+
41
+ Adds modules whose **public headers** are re-exported through your own public headers. Any module that depends on yours will also inherit these include paths transitively.
42
+
43
+ Use this when a type from the dependency appears in:
44
+ - A parameter or return type in your public header
45
+ - A base class of a type declared in your public header
46
+ - A field in a UPROPERTY in your public header
47
+
48
+ ### PrivateDependencyModuleNames
49
+
50
+ ```csharp
51
+ PrivateDependencyModuleNames.AddRange(new string[]
52
+ {
53
+ "Slate", // SWidget, SCompoundWidget
54
+ "SlateCore", // FSlateColor, FSlateBrush
55
+ "RenderCore", // FRenderCommandFence
56
+ "RHI", // FRHITexture, FRHICommandList
57
+ "Json", // FJsonObject, FJsonSerializer
58
+ "HTTP", // FHttpModule, IHttpRequest
59
+ });
60
+ ```
61
+
62
+ Adds modules used only inside `Private/` implementation files. These are not inherited by downstream modules. Prefer private for anything you can — it minimizes transitive compilation overhead.
63
+
64
+ ### DynamicallyLoadedModuleNames
65
+
66
+ ```csharp
67
+ DynamicallyLoadedModuleNames.AddRange(new string[]
68
+ {
69
+ "OnlineSubsystem",
70
+ "OnlineSubsystemSteam",
71
+ });
72
+ ```
73
+
74
+ Tells UBT the module may be loaded at runtime via `FModuleManager::LoadModule()`, but does not create a compile-time link dependency. Use this when you load plugins or platform-specific backends conditionally.
75
+
76
+ ---
77
+
78
+ ## Include Path Fields
79
+
80
+ ### PublicIncludePaths
81
+
82
+ ```csharp
83
+ // Expose subdirectories to downstream modules
84
+ PublicIncludePaths.Add(Path.Combine(ModuleDirectory, "Public", "Interfaces"));
85
+ PublicIncludePaths.Add(Path.Combine(ModuleDirectory, "Public", "Subsystems"));
86
+ ```
87
+
88
+ UBT automatically adds `ModuleDirectory/Public` — only add this when you have headers in subdirectories that downstream modules need to include without a path prefix.
89
+
90
+ ### PrivateIncludePaths
91
+
92
+ ```csharp
93
+ // Only visible inside this module
94
+ PrivateIncludePaths.Add(Path.Combine(ModuleDirectory, "Private", "Helpers"));
95
+ PrivateIncludePaths.Add(Path.Combine(ModuleDirectory, "Private", "Internal"));
96
+ ```
97
+
98
+ Only accessible to this module's own source files.
99
+
100
+ ### PublicSystemIncludePaths
101
+
102
+ ```csharp
103
+ // For third-party C headers — suppresses warnings
104
+ PublicSystemIncludePaths.Add(Path.Combine(ThirdPartyPath, "include"));
105
+ ```
106
+
107
+ Treated as system include paths. Compiler warnings are suppressed for headers in these paths.
108
+
109
+ ### PrivateIncludePathModuleNames
110
+
111
+ ```csharp
112
+ // Access headers from another module's Public/ without creating a link dependency
113
+ PrivateIncludePathModuleNames.AddRange(new string[] { "AssetRegistry" });
114
+ ```
115
+
116
+ Adds include paths from a module without linking against it. Use when you only need type-forward declarations or data structures, not exported symbols.
117
+
118
+ ---
119
+
120
+ ## PCH Fields
121
+
122
+ ### PCHUsage
123
+
124
+ ```csharp
125
+ // UE5 default — IWYU, each file includes what it uses
126
+ PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
127
+
128
+ // Legacy — shared PCH, all files implicitly get engine types
129
+ PCHUsage = PCHUsageMode.UseSharedPCHs;
130
+
131
+ // No precompiled headers at all
132
+ PCHUsage = PCHUsageMode.NoPCHs;
133
+
134
+ // Each module uses its own private PCH (slower build, maximum isolation)
135
+ PCHUsage = PCHUsageMode.NoSharedPCHs;
136
+ ```
137
+
138
+ Always use `UseExplicitOrSharedPCHs` for new UE5 modules.
139
+
140
+ ### PrivatePCHHeaderFile
141
+
142
+ ```csharp
143
+ // When you want to define your own PCH header
144
+ PrivatePCHHeaderFile = "Private/MyModulePCH.h";
145
+ ```
146
+
147
+ Specifies a custom PCH for this module. The referenced file is compiled as the PCH and prepended to all translation units in the module.
148
+
149
+ ### bEnforceIWYU
150
+
151
+ ```csharp
152
+ // Enforce Include What You Use — each file must include every header it directly uses
153
+ bEnforceIWYU = true;
154
+ ```
155
+
156
+ When true, UBT checks that no source file relies on transitive includes. Strongly recommended for new modules; required when `PCHUsage = UseExplicitOrSharedPCHs`.
157
+
158
+ ---
159
+
160
+ ## Compiler and Linker Flags
161
+
162
+ ### bEnableExceptions
163
+
164
+ ```csharp
165
+ // Enable C++ exception handling (try/catch/throw)
166
+ // Default: false — most UE code uses ensure/check/UE_LOG instead
167
+ bEnableExceptions = true;
168
+ ```
169
+
170
+ Only enable when integrating third-party code that throws exceptions. UE's own code does not use exceptions.
171
+
172
+ ### bUseRTTI
173
+
174
+ ```csharp
175
+ // Enable runtime type information (typeid, dynamic_cast)
176
+ // Default: false
177
+ bUseRTTI = true;
178
+ ```
179
+
180
+ Only enable when third-party code requires it. UE uses its own reflection system instead.
181
+
182
+ ### bUseAVX
183
+
184
+ ```csharp
185
+ // Allow AVX instruction set on supported platforms
186
+ bUseAVX = true;
187
+ ```
188
+
189
+ ### OptimizeCode
190
+
191
+ ```csharp
192
+ // Force optimization on or off regardless of build configuration
193
+ OptimizeCode = CodeOptimization.Always; // even in Debug
194
+ OptimizeCode = CodeOptimization.Never; // even in Shipping (debugging)
195
+ OptimizeCode = CodeOptimization.Default; // follow build config (normal)
196
+ ```
197
+
198
+ ### bDisableStaticAnalysis
199
+
200
+ ```csharp
201
+ // Disable static analysis for this module (use sparingly)
202
+ bDisableStaticAnalysis = true;
203
+ ```
204
+
205
+ ### CppStandard
206
+
207
+ ```csharp
208
+ // Override C++ standard for this module
209
+ CppStandard = CppStandardVersion.Cpp20;
210
+ CppStandard = CppStandardVersion.Cpp17; // UE default
211
+ ```
212
+
213
+ ---
214
+
215
+ ## Third-Party Libraries
216
+
217
+ ### AddEngineThirdPartyPrivateStaticDependencies
218
+
219
+ ```csharp
220
+ // Link a third-party static library shipped with the engine
221
+ AddEngineThirdPartyPrivateStaticDependencies(Target,
222
+ "zlib",
223
+ "OpenSSL",
224
+ "libcurl"
225
+ );
226
+ ```
227
+
228
+ This is the preferred way to consume engine-bundled third-party libraries. UBT looks up the library definition in `Engine/Source/ThirdParty/`.
229
+
230
+ ### PublicAdditionalLibraries / PublicDelayLoadDLLs
231
+
232
+ ```csharp
233
+ // Link against an external static library
234
+ PublicAdditionalLibraries.Add(Path.Combine(ThirdPartyDir, "Win64", "MyLib.lib"));
235
+
236
+ // Delay-load a DLL (Windows only)
237
+ PublicDelayLoadDLLs.Add("MyLib.dll");
238
+ RuntimeDependencies.Add(Path.Combine(ThirdPartyDir, "Win64", "MyLib.dll"));
239
+ ```
240
+
241
+ ### RuntimeDependencies
242
+
243
+ ```csharp
244
+ // Copy files to the output directory when packaging
245
+ RuntimeDependencies.Add("$(PluginDir)/Binaries/Win64/MyLib.dll");
246
+ RuntimeDependencies.Add(new RuntimeDependency(
247
+ Path.Combine(PluginDirectory, "Content", "MyData.bin")));
248
+ ```
249
+
250
+ ---
251
+
252
+ ## Platform-Conditional Patterns
253
+
254
+ ```csharp
255
+ public MyModule(ReadOnlyTargetRules Target) : base(Target)
256
+ {
257
+ PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
258
+
259
+ PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine" });
260
+
261
+ // Editor-only dependencies
262
+ if (Target.bBuildEditor)
263
+ {
264
+ PrivateDependencyModuleNames.AddRange(new string[]
265
+ {
266
+ "UnrealEd",
267
+ "EditorFramework",
268
+ });
269
+ }
270
+
271
+ // Platform-specific libraries
272
+ if (Target.Platform == UnrealTargetPlatform.Win64)
273
+ {
274
+ PublicAdditionalLibraries.Add(Path.Combine(ModuleDirectory, "lib", "Win64", "MyLib.lib"));
275
+ PublicDelayLoadDLLs.Add("MyLib.dll");
276
+ }
277
+ else if (Target.Platform == UnrealTargetPlatform.Mac)
278
+ {
279
+ PublicAdditionalLibraries.Add(Path.Combine(ModuleDirectory, "lib", "Mac", "libMyLib.a"));
280
+ }
281
+
282
+ // Development-only code
283
+ if (Target.Configuration != UnrealTargetConfiguration.Shipping)
284
+ {
285
+ PrivateDependencyModuleNames.Add("EngineSettings");
286
+ PublicDefinitions.Add("ENABLE_MY_DEBUG_FEATURES=1");
287
+ }
288
+ else
289
+ {
290
+ PublicDefinitions.Add("ENABLE_MY_DEBUG_FEATURES=0");
291
+ }
292
+ }
293
+ ```
294
+
295
+ ### Target.Platform Values
296
+
297
+ | Value | Platform |
298
+ |---|---|
299
+ | `UnrealTargetPlatform.Win64` | Windows 64-bit |
300
+ | `UnrealTargetPlatform.Mac` | macOS |
301
+ | `UnrealTargetPlatform.Linux` | Linux |
302
+ | `UnrealTargetPlatform.IOS` | iOS |
303
+ | `UnrealTargetPlatform.Android` | Android |
304
+
305
+ ### Target.Configuration Values
306
+
307
+ | Value | Description |
308
+ |---|---|
309
+ | `UnrealTargetConfiguration.Debug` | Full debug, no optimization |
310
+ | `UnrealTargetConfiguration.DebugGame` | Debug game code, optimized engine |
311
+ | `UnrealTargetConfiguration.Development` | Standard development build |
312
+ | `UnrealTargetConfiguration.Test` | Like Shipping, with some stats |
313
+ | `UnrealTargetConfiguration.Shipping` | Final release, stripped |
314
+
315
+ ---
316
+
317
+ ## Preprocessor Definitions
318
+
319
+ ```csharp
320
+ // Add a preprocessor definition to all compilation units in this module
321
+ PublicDefinitions.Add("MY_FEATURE_ENABLED=1");
322
+
323
+ // Private definitions only visible inside this module
324
+ PrivateDefinitions.Add("INTERNAL_BUILD_VERSION=42");
325
+ ```
326
+
327
+ ---
328
+
329
+ ## TargetRules Reference (Target.cs)
330
+
331
+ ```csharp
332
+ public class MyGameTarget : TargetRules
333
+ {
334
+ public MyGameTarget(TargetInfo Target) : base(Target)
335
+ {
336
+ Type = TargetType.Game;
337
+
338
+ // Use latest UBT build settings (sets sensible defaults)
339
+ DefaultBuildSettings = BuildSettingsVersion.Latest;
340
+
341
+ // Use latest include order (required for IWYU with UE5)
342
+ IncludeOrderVersion = EngineIncludeOrderVersion.Latest;
343
+
344
+ // Modules UBT must compile for this target
345
+ ExtraModuleNames.AddRange(new string[]
346
+ {
347
+ "MyGame",
348
+ "MyGameCore",
349
+ });
350
+
351
+ // Disable unity builds for faster incremental iteration (slower full builds)
352
+ bUseUnityBuild = false;
353
+
354
+ // Enable link time code generation in Shipping
355
+ bAllowLTCG = Target.Configuration == UnrealTargetConfiguration.Shipping;
356
+ }
357
+ }
358
+ ```
359
+
360
+ ### TargetType Values
361
+
362
+ | Value | Executable type |
363
+ |---|---|
364
+ | `TargetType.Game` | Game client, no editor tooling |
365
+ | `TargetType.Editor` | Editor build, all editor modules included |
366
+ | `TargetType.Client` | Client-only, server code excluded |
367
+ | `TargetType.Server` | Server-only, renderer excluded |
368
+ | `TargetType.Program` | Standalone program (not a game) |
369
+
370
+ ---
371
+
372
+ ## Common Engine Module Reference
373
+
374
+ These are the modules you most often add as dependencies:
375
+
376
+ | Module | Provides |
377
+ |---|---|
378
+ | `Core` | `FString`, `TArray`, `TMap`, `FName`, `FText`, `UE_LOG`, `check`, `ensure` |
379
+ | `CoreUObject` | `UObject`, `UClass`, UPROPERTY/UFUNCTION reflection |
380
+ | `Engine` | `AActor`, `UWorld`, `UGameInstance`, `UActorComponent` |
381
+ | `InputCore` | `FKey`, `EKeys` |
382
+ | `EnhancedInput` | `UInputAction`, `UInputMappingContext` |
383
+ | `GameplayTags` | `FGameplayTag`, `FGameplayTagContainer` |
384
+ | `Slate` | `SWidget`, `SCompoundWidget`, `SWindow` |
385
+ | `SlateCore` | `FSlateColor`, `FSlateBrush`, `FGeometry` |
386
+ | `UMG` | `UUserWidget`, `UButton`, `UTextBlock` |
387
+ | `RenderCore` | `FRenderCommandFence`, render thread utilities |
388
+ | `RHI` | `FRHITexture`, `FRHICommandList`, GPU resources |
389
+ | `Json` | `FJsonObject`, `FJsonSerializer` |
390
+ | `HTTP` | `FHttpModule`, `IHttpRequest` |
391
+ | `AssetRegistry` | `IAssetRegistry`, `FAssetData` |
392
+ | `UnrealEd` | Editor subsystems, `UEditorEngine` (editor-only) |
393
+ | `EditorFramework` | `IToolkit`, toolkit base (editor-only) |
394
+ | `PropertyEditor` | Details panel customization (editor-only) |
395
+ | `DeveloperSettings` | `UDeveloperSettings` config objects |
396
+ | `NetCore` | Networking primitives |
397
+ | `OnlineSubsystem` | `IOnlineSubsystem`, sessions, leaderboards |
398
+ | `AIModule` | `UAIController`, `UBehaviorTree` |
399
+ | `NavigationSystem` | `UNavigationSystemV1`, pathfinding |
400
+ | `PhysicsCore` | Physics engine abstractions |
401
+ | `Chaos` | Chaos physics (UE5+ default) |
402
+
403
+ ---
404
+
405
+ ## API Macro Generation Rules
406
+
407
+ UBT generates the export macro by:
408
+ 1. Taking the module's directory name
409
+ 2. Converting to uppercase
410
+ 3. Appending `_API`
411
+
412
+ Examples:
413
+ - Module directory `MyPlugin` → `MYPLUGIN_API`
414
+ - Module directory `MyPlugin_Runtime` → `MYPLUGIN_RUNTIME_API`
415
+ - Module directory `Core` → `CORE_API`
416
+ - Module directory `Engine` → `ENGINE_API`
417
+
418
+ The macro expands to `__declspec(dllexport)` on Windows or `__attribute__((visibility("default")))` on Linux/Mac in DLL builds, and to nothing in monolithic builds.