claude-code-arcane 2.3.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 (103) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +54 -6
  3. package/agents/game/ue-blueprint-specialist.md +125 -0
  4. package/agents/game/ue-gas-specialist.md +133 -0
  5. package/agents/game/ue-umg-specialist.md +131 -0
  6. package/dist/cli.js +5 -0
  7. package/docs/SKILLS-CATALOG.md +42 -3
  8. package/docs/USER-GUIDE.md +2 -2
  9. package/hooks/detect-unreal.sh +90 -0
  10. package/package.json +1 -1
  11. package/profiles/unreal-dev.yaml +97 -0
  12. package/rules/gamedev/unreal-code.md +125 -0
  13. package/skills/install-mcp/SKILL.md +135 -46
  14. package/skills/install-mcp/references/unreal-operations.md +55 -0
  15. package/skills/ue-actor-component-architecture/SKILL.md +509 -0
  16. package/skills/ue-actor-component-architecture/references/actor-lifecycle.md +301 -0
  17. package/skills/ue-actor-component-architecture/references/component-types.md +592 -0
  18. package/skills/ue-ai-navigation/SKILL.md +526 -0
  19. package/skills/ue-ai-navigation/references/behavior-tree-patterns.md +392 -0
  20. package/skills/ue-ai-navigation/references/behavior-tree-workflow.md +107 -0
  21. package/skills/ue-ai-navigation/references/custom-bttask.md +104 -0
  22. package/skills/ue-ai-navigation/references/eqs-reference.md +423 -0
  23. package/skills/ue-animation-system/SKILL.md +521 -0
  24. package/skills/ue-animation-system/references/anim-notify-reference.md +486 -0
  25. package/skills/ue-animation-system/references/locomotion-setup.md +550 -0
  26. package/skills/ue-async-threading/SKILL.md +433 -0
  27. package/skills/ue-async-threading/references/thread-safety-guide.md +213 -0
  28. package/skills/ue-async-threading/references/threading-patterns.md +345 -0
  29. package/skills/ue-audio-system/SKILL.md +527 -0
  30. package/skills/ue-audio-system/references/audio-setup-patterns.md +700 -0
  31. package/skills/ue-blueprints/SKILL.md +134 -0
  32. package/skills/ue-blueprints/references/communication.md +82 -0
  33. package/skills/ue-character-movement/SKILL.md +475 -0
  34. package/skills/ue-character-movement/references/cmc-extension-patterns.md +335 -0
  35. package/skills/ue-character-movement/references/movement-pipeline.md +189 -0
  36. package/skills/ue-cpp-foundations/SKILL.md +533 -0
  37. package/skills/ue-cpp-foundations/references/components-and-gc.md +107 -0
  38. package/skills/ue-cpp-foundations/references/container-patterns.md +544 -0
  39. package/skills/ue-cpp-foundations/references/delegate-patterns.md +497 -0
  40. package/skills/ue-cpp-foundations/references/gameplay-classes-cpp.md +136 -0
  41. package/skills/ue-cpp-foundations/references/property-specifiers.md +306 -0
  42. package/skills/ue-data-assets-tables/SKILL.md +527 -0
  43. package/skills/ue-data-assets-tables/references/asset-loading-patterns.md +306 -0
  44. package/skills/ue-data-assets-tables/references/data-driven-design.md +378 -0
  45. package/skills/ue-editor-tools/SKILL.md +523 -0
  46. package/skills/ue-editor-tools/references/detail-customization-patterns.md +395 -0
  47. package/skills/ue-editor-tools/references/editor-module-setup.md +480 -0
  48. package/skills/ue-game-features/SKILL.md +477 -0
  49. package/skills/ue-game-features/references/experience-system.md +222 -0
  50. package/skills/ue-game-features/references/game-feature-patterns.md +308 -0
  51. package/skills/ue-gameplay-abilities/SKILL.md +518 -0
  52. package/skills/ue-gameplay-abilities/references/ability-task-reference.md +391 -0
  53. package/skills/ue-gameplay-abilities/references/gameplay-effect-reference.md +397 -0
  54. package/skills/ue-gameplay-abilities/references/gas-setup-patterns.md +369 -0
  55. package/skills/ue-gameplay-framework/SKILL.md +466 -0
  56. package/skills/ue-gameplay-framework/references/framework-class-map.md +243 -0
  57. package/skills/ue-input-system/SKILL.md +394 -0
  58. package/skills/ue-input-system/references/cpp-setup.md +131 -0
  59. package/skills/ue-input-system/references/enhanced-input-workflow.md +117 -0
  60. package/skills/ue-input-system/references/input-action-reference.md +731 -0
  61. package/skills/ue-mass-entity/SKILL.md +476 -0
  62. package/skills/ue-mass-entity/references/mass-entity-patterns.md +319 -0
  63. package/skills/ue-mass-entity/references/mass-fragment-reference.md +119 -0
  64. package/skills/ue-materials-rendering/SKILL.md +526 -0
  65. package/skills/ue-materials-rendering/references/material-parameter-reference.md +216 -0
  66. package/skills/ue-materials-rendering/references/post-process-settings.md +383 -0
  67. package/skills/ue-module-build-system/SKILL.md +487 -0
  68. package/skills/ue-module-build-system/references/build-cs-reference.md +418 -0
  69. package/skills/ue-module-build-system/references/common-build-errors.md +381 -0
  70. package/skills/ue-naming-conventions/SKILL.md +142 -0
  71. package/skills/ue-naming-conventions/references/asset-name-modifiers.md +233 -0
  72. package/skills/ue-naming-conventions/references/content-structure.md +83 -0
  73. package/skills/ue-networking-replication/SKILL.md +452 -0
  74. package/skills/ue-networking-replication/references/replication-patterns.md +526 -0
  75. package/skills/ue-networking-replication/references/rpc-decision-guide.md +393 -0
  76. package/skills/ue-niagara-effects/SKILL.md +531 -0
  77. package/skills/ue-niagara-effects/references/niagara-data-interfaces.md +491 -0
  78. package/skills/ue-niagara-effects/references/niagara-parameter-types.md +153 -0
  79. package/skills/ue-niagara-effects/references/niagara-workflow.md +115 -0
  80. package/skills/ue-packaging/SKILL.md +116 -0
  81. package/skills/ue-physics-collision/SKILL.md +423 -0
  82. package/skills/ue-physics-collision/references/collision-channel-setup.md +218 -0
  83. package/skills/ue-physics-collision/references/trace-patterns.md +499 -0
  84. package/skills/ue-procedural-generation/SKILL.md +505 -0
  85. package/skills/ue-procedural-generation/references/pcg-node-reference.md +381 -0
  86. package/skills/ue-procedural-generation/references/procedural-mesh-patterns.md +940 -0
  87. package/skills/ue-project-context/SKILL.md +305 -0
  88. package/skills/ue-sequencer-cinematics/SKILL.md +506 -0
  89. package/skills/ue-sequencer-cinematics/references/sequencer-patterns.md +629 -0
  90. package/skills/ue-serialization-savegames/SKILL.md +524 -0
  91. package/skills/ue-serialization-savegames/references/save-system-architecture.md +705 -0
  92. package/skills/ue-state-trees/SKILL.md +489 -0
  93. package/skills/ue-state-trees/references/state-tree-mass-integration.md +184 -0
  94. package/skills/ue-state-trees/references/state-tree-patterns.md +321 -0
  95. package/skills/ue-testing-debugging/SKILL.md +520 -0
  96. package/skills/ue-testing-debugging/references/automation-test-patterns.md +387 -0
  97. package/skills/ue-testing-debugging/references/profiling-commands.md +357 -0
  98. package/skills/ue-ui-umg-slate/SKILL.md +431 -0
  99. package/skills/ue-ui-umg-slate/references/common-ui-setup.md +484 -0
  100. package/skills/ue-ui-umg-slate/references/widget-types.md +487 -0
  101. package/skills/ue-world-level-streaming/SKILL.md +518 -0
  102. package/skills/ue-world-level-streaming/references/streaming-patterns.md +414 -0
  103. package/templates/gamedev/unreal-project-context.md +107 -0
@@ -0,0 +1,218 @@
1
+ # Collision Channel Setup Reference
2
+
3
+ Reference for configuring custom collision channels, object types, and collision profiles in Unreal Engine 5 projects using the Chaos physics backend.
4
+
5
+ ---
6
+
7
+ ## Channel Slots Available
8
+
9
+ UE reserves the first 14 channels for built-in engine use. Projects have 18 custom slots:
10
+
11
+ | Enum | INI Key | Typical Use |
12
+ |------------------------|-------------------|-------------------------|
13
+ | `ECC_GameTraceChannel1` | `TraceTypeQuery1` | Custom trace channel 1 |
14
+ | `ECC_GameTraceChannel2` | `TraceTypeQuery2` | Custom trace channel 2 |
15
+ | ...through... | ... | ... |
16
+ | `ECC_GameTraceChannel18` | `TraceTypeQuery18`| Custom trace channel 18 |
17
+
18
+ The same slots serve as object type channels when `bTraceType=False`.
19
+
20
+ ---
21
+
22
+ ## DefaultEngine.ini Configuration
23
+
24
+ All custom channels and profiles go in `Config/DefaultEngine.ini` under `[/Script/Engine.CollisionProfile]`.
25
+
26
+ ### Declaring a Custom Trace Channel
27
+
28
+ ```ini
29
+ [/Script/Engine.CollisionProfile]
30
+ +DefaultChannelResponses=(Channel=ECC_GameTraceChannel1,DefaultResponse=ECR_Ignore,bTraceType=True,bStaticObject=False,Name="Weapon")
31
+ +DefaultChannelResponses=(Channel=ECC_GameTraceChannel2,DefaultResponse=ECR_Ignore,bTraceType=True,bStaticObject=False,Name="Interaction")
32
+ ```
33
+
34
+ - `bTraceType=True` — this is a trace channel (used in `LineTraceSingleByChannel`, `SweepSingleByChannel`)
35
+ - `DefaultResponse` — response all components have unless overridden
36
+
37
+ ### Declaring a Custom Object Type Channel
38
+
39
+ ```ini
40
+ +DefaultChannelResponses=(Channel=ECC_GameTraceChannel3,DefaultResponse=ECR_Block,bTraceType=False,bStaticObject=False,Name="Interactable")
41
+ +DefaultChannelResponses=(Channel=ECC_GameTraceChannel4,DefaultResponse=ECR_Block,bTraceType=False,bStaticObject=True,Name="HazardZone")
42
+ ```
43
+
44
+ - `bTraceType=False` — object channel (what an object IS, not what a trace uses)
45
+ - `bStaticObject=True` — object is non-moving (WorldStatic category behavior)
46
+
47
+ ### Declaring Custom Profiles
48
+
49
+ ```ini
50
+ ; Weapon/projectile — blocks WorldStatic, WorldDynamic, Pawn; ignores triggers
51
+ +Profiles=(Name="Projectile",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldDynamic",CustomResponses=(\
52
+ (Channel="WorldStatic",Response=ECR_Block),\
53
+ (Channel="WorldDynamic",Response=ECR_Block),\
54
+ (Channel="Pawn",Response=ECR_Block),\
55
+ (Channel="PhysicsBody",Response=ECR_Block),\
56
+ (Channel="Weapon",Response=ECR_Ignore),\
57
+ (Channel="Interaction",Response=ECR_Ignore)))
58
+
59
+ ; Trigger volume — overlaps pawns, ignores everything else
60
+ +Profiles=(Name="TriggerPawn",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=(\
61
+ (Channel="Pawn",Response=ECR_Overlap),\
62
+ (Channel="WorldStatic",Response=ECR_Ignore),\
63
+ (Channel="WorldDynamic",Response=ECR_Ignore),\
64
+ (Channel="PhysicsBody",Response=ECR_Ignore)))
65
+
66
+ ; Interactable object — visible to interaction traces, blocks world
67
+ +Profiles=(Name="Interactable",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Interactable",CustomResponses=(\
68
+ (Channel="WorldStatic",Response=ECR_Block),\
69
+ (Channel="WorldDynamic",Response=ECR_Block),\
70
+ (Channel="Pawn",Response=ECR_Block),\
71
+ (Channel="Interaction",Response=ECR_Block),\
72
+ (Channel="Weapon",Response=ECR_Ignore),\
73
+ (Channel="Visibility",Response=ECR_Block)))
74
+ ```
75
+
76
+ ---
77
+
78
+ ## Common Profile Setups
79
+
80
+ ### Shooter Game — Standard Channels
81
+
82
+ ```ini
83
+ ; Weapon trace — hits everything physical, ignores other weapon traces
84
+ +DefaultChannelResponses=(Channel=ECC_GameTraceChannel1,DefaultResponse=ECR_Block,bTraceType=True,bStaticObject=False,Name="Weapon")
85
+
86
+ ; Interaction trace — used by player to find interactable objects
87
+ +DefaultChannelResponses=(Channel=ECC_GameTraceChannel2,DefaultResponse=ECR_Ignore,bTraceType=True,bStaticObject=False,Name="Interaction")
88
+
89
+ ; Interactable object type
90
+ +DefaultChannelResponses=(Channel=ECC_GameTraceChannel3,DefaultResponse=ECR_Block,bTraceType=False,bStaticObject=False,Name="Interactable")
91
+
92
+ ; Damage volume object type
93
+ +DefaultChannelResponses=(Channel=ECC_GameTraceChannel4,DefaultResponse=ECR_Ignore,bTraceType=False,bStaticObject=False,Name="DamageVolume")
94
+ ```
95
+
96
+ ### Corresponding Profiles
97
+
98
+ ```ini
99
+ ; Player character — responds to weapon hits, can interact
100
+ +Profiles=(Name="PlayerPawn",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Pawn",CustomResponses=(\
101
+ (Channel="WorldStatic",Response=ECR_Block),\
102
+ (Channel="WorldDynamic",Response=ECR_Block),\
103
+ (Channel="Weapon",Response=ECR_Block),\
104
+ (Channel="Interaction",Response=ECR_Block),\
105
+ (Channel="Interactable",Response=ECR_Ignore),\
106
+ (Channel="DamageVolume",Response=ECR_Overlap)))
107
+
108
+ ; Pickup item — not hit by weapons, visible to interaction traces
109
+ +Profiles=(Name="Pickup",CollisionEnabled=QueryOnly,ObjectTypeName="Interactable",CustomResponses=(\
110
+ (Channel="Pawn",Response=ECR_Overlap),\
111
+ (Channel="WorldStatic",Response=ECR_Block),\
112
+ (Channel="Weapon",Response=ECR_Ignore),\
113
+ (Channel="Interaction",Response=ECR_Block),\
114
+ (Channel="Visibility",Response=ECR_Block)))
115
+
116
+ ; NPC enemy — blocks weapons and pawns
117
+ +Profiles=(Name="EnemyPawn",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Pawn",CustomResponses=(\
118
+ (Channel="WorldStatic",Response=ECR_Block),\
119
+ (Channel="WorldDynamic",Response=ECR_Block),\
120
+ (Channel="Pawn",Response=ECR_Block),\
121
+ (Channel="Weapon",Response=ECR_Block),\
122
+ (Channel="Interaction",Response=ECR_Ignore),\
123
+ (Channel="Camera",Response=ECR_Ignore)))
124
+ ```
125
+
126
+ ---
127
+
128
+ ## Applying Profiles in C++
129
+
130
+ ```cpp
131
+ // Apply a named profile — sets ObjectType, CollisionEnabled, and all channel responses at once
132
+ MyMesh->SetCollisionProfileName(TEXT("PlayerPawn"));
133
+ MyMesh->SetCollisionProfileName(TEXT("Projectile"));
134
+ MyMesh->SetCollisionProfileName(TEXT("NoCollision"));
135
+
136
+ // Get the current profile name
137
+ FName ProfileName = MyMesh->GetCollisionProfileName();
138
+
139
+ // Override individual channel responses after setting a profile
140
+ MyMesh->SetCollisionResponseToChannel(ECC_Camera, ECR_Ignore);
141
+ ```
142
+
143
+ ---
144
+
145
+ ## Referencing Custom Channels in C++
146
+
147
+ Custom trace channels map to `ETraceTypeQuery` for Blueprint functions and `ECollisionChannel` for C++ world queries.
148
+
149
+ ```cpp
150
+ // Use the generated enum values — confirmed by checking Project Settings > Collision
151
+ // ECC_GameTraceChannel1 = "Weapon" (in our setup)
152
+ // ECC_GameTraceChannel2 = "Interaction"
153
+
154
+ FHitResult Hit;
155
+ FCollisionQueryParams Params;
156
+ Params.AddIgnoredActor(this);
157
+
158
+ // Weapon trace — using ECC directly
159
+ GetWorld()->LineTraceSingleByChannel(Hit, Start, End, ECC_GameTraceChannel1, Params);
160
+
161
+ // Interaction trace
162
+ GetWorld()->LineTraceSingleByChannel(Hit, Start, End, ECC_GameTraceChannel2, Params);
163
+
164
+ // Interaction trace by object type (finds Interactable objects)
165
+ FCollisionObjectQueryParams ObjectParams;
166
+ ObjectParams.AddObjectTypesToQuery(ECC_GameTraceChannel3); // Interactable type
167
+ GetWorld()->LineTraceSingleByObjectType(Hit, Start, End, ObjectParams, Params);
168
+ ```
169
+
170
+ ---
171
+
172
+ ## ECollisionEnabled Quick Reference
173
+
174
+ | Value | Query (Traces) | Physics (Forces/Sweep) | Typical Use |
175
+ |--------------------|---------------|------------------------|---------------------------------|
176
+ | `NoCollision` | No | No | Ghost/invisible actors |
177
+ | `QueryOnly` | Yes | No | Trigger volumes, sensors |
178
+ | `PhysicsOnly` | No | Yes | Invisible physics blockers |
179
+ | `QueryAndPhysics` | Yes | Yes | Most gameplay objects |
180
+ | `ProbeOnly` | Probe only | No | Contact data only (no query hits, no physics forces) |
181
+
182
+ ---
183
+
184
+ ## Physics Settings (Project Settings > Physics)
185
+
186
+ These values live in `Config/DefaultEngine.ini` under `[/Script/Engine.PhysicsSettings]` and map to `UPhysicsSettingsCore`:
187
+
188
+ ```ini
189
+ [/Script/Engine.PhysicsSettings]
190
+ DefaultGravityZ=-980.000000
191
+ BounceThresholdVelocity=200.000000
192
+ FrictionCombineMode=Average
193
+ RestitutionCombineMode=Average
194
+ MaxAngularVelocity=3600.000000
195
+ MaxDepenetrationVelocity=0.000000
196
+ ContactOffsetMultiplier=0.020000
197
+ MinContactOffset=2.000000
198
+ MaxContactOffset=8.000000
199
+ bSimulateSkeletalMeshOnDedicatedServer=True
200
+ DefaultShapeComplexity=CTF_UseDefault
201
+ ```
202
+
203
+ `DefaultShapeComplexity` accepts: `CTF_UseDefault`, `CTF_UseSimpleAndComplex`, `CTF_UseSimpleAsComplex`, `CTF_UseComplexAsSimple`.
204
+
205
+ ---
206
+
207
+ ## Collision Setup Checklist
208
+
209
+ When collision is not working as expected, verify in order:
210
+
211
+ 1. **Both components have collision enabled** — `GetCollisionEnabled() != NoCollision`
212
+ 2. **Response matrix is symmetric** — if A blocks B, B must block A for events
213
+ 3. **Profile vs manual responses** — `SetCollisionProfileName` resets all manual responses; set per-channel overrides after the profile call
214
+ 4. **Overlap events flag** — `bGenerateOverlapEvents` must be `true` on BOTH components for overlap events
215
+ 5. **Hit events flag** — `bNotifyRigidBodyCollision` must be `true` for `OnComponentHit` to fire
216
+ 6. **Physics enabled** — `bSimulatePhysics = true` required for physics-driven hits (`NormalImpulse` will be non-zero)
217
+ 7. **Channel type** — trace channels vs object type channels use different query functions; mixing them gives no results
218
+ 8. **Query layer** — `QueryOnly` components are invisible to physics-only queries and vice versa