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,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.
|