ue-mcp 1.0.34 → 1.0.35
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/README.md +2 -2
- package/dist/pie/schema.d.ts +120 -0
- package/dist/pie/schema.js +25 -0
- package/dist/pie/schema.js.map +1 -1
- package/dist/tool-counts.json +5 -5
- package/dist/tools/gameplay.js +16 -5
- package/dist/tools/gameplay.js.map +1 -1
- package/dist/ue-mcp.default.yml +10 -4
- package/package.json +2 -2
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers.cpp +1 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers.h +3 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_InputInject.cpp +6 -3
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_PIEDiff.cpp +117 -4
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_PIERecord.cpp +15 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_PIEReplay.cpp +42 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_PIESnapshot.cpp +112 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/PIE/PIEFrameSampler.cpp +7 -2
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/PIE/PIEFrameSampler.h +4 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/PIE/PIEInputInjector.cpp +50 -33
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/PIE/PIEInputInjector.h +5 -4
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/PIE/PIEInputRecorder.cpp +83 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/PIE/PIEInputRecorder.h +19 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/PIE/PIEInputReplayer.cpp +209 -10
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/PIE/PIEInputReplayer.h +34 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/PIE/PIESequenceFormat.cpp +190 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/PIE/PIESequenceFormat.h +45 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/PIE/PIETakeRecorderBridge.cpp +141 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/PIE/PIETakeRecorderBridge.h +40 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/UE_MCP_Bridge.cpp +18 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# UE-MCP
|
|
2
2
|
|
|
3
|
-
**Unreal Engine Model Context Protocol Server** - gives AI assistants deep read/write access to the Unreal Editor through <!-- count:tools -->21<!-- /count --> category tools covering <!-- count:actions -->
|
|
3
|
+
**Unreal Engine Model Context Protocol Server** - gives AI assistants deep read/write access to the Unreal Editor through <!-- count:tools -->21<!-- /count --> category tools covering <!-- count:actions -->544+<!-- /count --> actions, plus a YAML flow engine for multi-step workflows.
|
|
4
4
|
|
|
5
5
|
```mermaid
|
|
6
6
|
flowchart LR
|
|
@@ -57,7 +57,7 @@ If you prefer to configure manually, add to your MCP client config:
|
|
|
57
57
|
|
|
58
58
|
- [Getting Started](https://db-lyon.github.io/ue-mcp/getting-started/) — Installation, configuration, first run
|
|
59
59
|
- [Architecture](https://db-lyon.github.io/ue-mcp/architecture/) — How the pieces fit together
|
|
60
|
-
- [Tool Reference](https://db-lyon.github.io/ue-mcp/tool-reference/) - All <!-- count:tools -->21<!-- /count --> tools with <!-- count:actions -->
|
|
60
|
+
- [Tool Reference](https://db-lyon.github.io/ue-mcp/tool-reference/) - All <!-- count:tools -->21<!-- /count --> tools with <!-- count:actions -->544+<!-- /count --> actions
|
|
61
61
|
- [Flows](https://db-lyon.github.io/ue-mcp/flows/) - YAML flow engine, custom tasks, rollback, hooks
|
|
62
62
|
- [Configuration](https://db-lyon.github.io/ue-mcp/configuration/) — `.ue-mcp.json` and MCP client config
|
|
63
63
|
- [Neon Shrine Demo](https://db-lyon.github.io/ue-mcp/neon-shrine-demo/) — Interactive guided demo
|
package/dist/pie/schema.d.ts
CHANGED
|
@@ -62,6 +62,7 @@ export declare const Manifest: z.ZodObject<{
|
|
|
62
62
|
rng_seed: z.ZodNumber;
|
|
63
63
|
pie_world: z.ZodString;
|
|
64
64
|
pawn_class: z.ZodString;
|
|
65
|
+
client_id: z.ZodOptional<z.ZodNumber>;
|
|
65
66
|
axis_threshold: z.ZodNumber;
|
|
66
67
|
actions: z.ZodArray<z.ZodObject<{
|
|
67
68
|
name: z.ZodString;
|
|
@@ -86,6 +87,7 @@ export declare const Manifest: z.ZodObject<{
|
|
|
86
87
|
path: string;
|
|
87
88
|
type: string;
|
|
88
89
|
}>, "many">;
|
|
90
|
+
tracked_actors: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
89
91
|
markers: z.ZodArray<z.ZodObject<{
|
|
90
92
|
frame: z.ZodNumber;
|
|
91
93
|
time: z.ZodNumber;
|
|
@@ -106,13 +108,16 @@ export declare const Manifest: z.ZodObject<{
|
|
|
106
108
|
csv: z.ZodString;
|
|
107
109
|
sequence: z.ZodString;
|
|
108
110
|
drift: z.ZodOptional<z.ZodString>;
|
|
111
|
+
tracked_actors: z.ZodOptional<z.ZodString>;
|
|
109
112
|
}, "strip", z.ZodTypeAny, {
|
|
110
113
|
csv: string;
|
|
111
114
|
sequence: string;
|
|
115
|
+
tracked_actors?: string | undefined;
|
|
112
116
|
drift?: string | undefined;
|
|
113
117
|
}, {
|
|
114
118
|
csv: string;
|
|
115
119
|
sequence: string;
|
|
120
|
+
tracked_actors?: string | undefined;
|
|
116
121
|
drift?: string | undefined;
|
|
117
122
|
}>;
|
|
118
123
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -146,8 +151,11 @@ export declare const Manifest: z.ZodObject<{
|
|
|
146
151
|
files: {
|
|
147
152
|
csv: string;
|
|
148
153
|
sequence: string;
|
|
154
|
+
tracked_actors?: string | undefined;
|
|
149
155
|
drift?: string | undefined;
|
|
150
156
|
};
|
|
157
|
+
client_id?: number | undefined;
|
|
158
|
+
tracked_actors?: string[] | undefined;
|
|
151
159
|
}, {
|
|
152
160
|
id: string;
|
|
153
161
|
version: 1;
|
|
@@ -179,8 +187,11 @@ export declare const Manifest: z.ZodObject<{
|
|
|
179
187
|
files: {
|
|
180
188
|
csv: string;
|
|
181
189
|
sequence: string;
|
|
190
|
+
tracked_actors?: string | undefined;
|
|
182
191
|
drift?: string | undefined;
|
|
183
192
|
};
|
|
193
|
+
client_id?: number | undefined;
|
|
194
|
+
tracked_actors?: string[] | undefined;
|
|
184
195
|
}>;
|
|
185
196
|
export type Manifest = z.infer<typeof Manifest>;
|
|
186
197
|
export declare const TapeValue: z.ZodUnion<[z.ZodNumber, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>]>;
|
|
@@ -603,6 +614,26 @@ export declare const DriftFrameEntry: z.ZodObject<{
|
|
|
603
614
|
rotation_delta_deg: number;
|
|
604
615
|
}>;
|
|
605
616
|
export type DriftFrameEntry = z.infer<typeof DriftFrameEntry>;
|
|
617
|
+
export declare const ActorDriftEntry: z.ZodObject<{
|
|
618
|
+
max_position_cm: z.ZodNumber;
|
|
619
|
+
max_rotation_deg: z.ZodNumber;
|
|
620
|
+
max_velocity_cms: z.ZodNumber;
|
|
621
|
+
frames_unresolved_in_source: z.ZodNumber;
|
|
622
|
+
frames_unresolved_in_replay: z.ZodNumber;
|
|
623
|
+
}, "strip", z.ZodTypeAny, {
|
|
624
|
+
max_position_cm: number;
|
|
625
|
+
max_rotation_deg: number;
|
|
626
|
+
max_velocity_cms: number;
|
|
627
|
+
frames_unresolved_in_source: number;
|
|
628
|
+
frames_unresolved_in_replay: number;
|
|
629
|
+
}, {
|
|
630
|
+
max_position_cm: number;
|
|
631
|
+
max_rotation_deg: number;
|
|
632
|
+
max_velocity_cms: number;
|
|
633
|
+
frames_unresolved_in_source: number;
|
|
634
|
+
frames_unresolved_in_replay: number;
|
|
635
|
+
}>;
|
|
636
|
+
export type ActorDriftEntry = z.infer<typeof ActorDriftEntry>;
|
|
606
637
|
export declare const DriftReport: z.ZodObject<{
|
|
607
638
|
version: z.ZodLiteral<1>;
|
|
608
639
|
source_recording_id: z.ZodString;
|
|
@@ -615,6 +646,25 @@ export declare const DriftReport: z.ZodObject<{
|
|
|
615
646
|
max_rotation_drift_deg: z.ZodNumber;
|
|
616
647
|
montage_section_mismatches: z.ZodNumber;
|
|
617
648
|
tracked_value_max_deltas: z.ZodRecord<z.ZodString, z.ZodNumber>;
|
|
649
|
+
actor_drift: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
650
|
+
max_position_cm: z.ZodNumber;
|
|
651
|
+
max_rotation_deg: z.ZodNumber;
|
|
652
|
+
max_velocity_cms: z.ZodNumber;
|
|
653
|
+
frames_unresolved_in_source: z.ZodNumber;
|
|
654
|
+
frames_unresolved_in_replay: z.ZodNumber;
|
|
655
|
+
}, "strip", z.ZodTypeAny, {
|
|
656
|
+
max_position_cm: number;
|
|
657
|
+
max_rotation_deg: number;
|
|
658
|
+
max_velocity_cms: number;
|
|
659
|
+
frames_unresolved_in_source: number;
|
|
660
|
+
frames_unresolved_in_replay: number;
|
|
661
|
+
}, {
|
|
662
|
+
max_position_cm: number;
|
|
663
|
+
max_rotation_deg: number;
|
|
664
|
+
max_velocity_cms: number;
|
|
665
|
+
frames_unresolved_in_source: number;
|
|
666
|
+
frames_unresolved_in_replay: number;
|
|
667
|
+
}>>>;
|
|
618
668
|
frames_over_threshold: z.ZodArray<z.ZodObject<{
|
|
619
669
|
frame: z.ZodNumber;
|
|
620
670
|
position_delta_cm: z.ZodNumber;
|
|
@@ -649,6 +699,13 @@ export declare const DriftReport: z.ZodObject<{
|
|
|
649
699
|
velocity_delta_cms: number;
|
|
650
700
|
rotation_delta_deg: number;
|
|
651
701
|
}[];
|
|
702
|
+
actor_drift?: Record<string, {
|
|
703
|
+
max_position_cm: number;
|
|
704
|
+
max_rotation_deg: number;
|
|
705
|
+
max_velocity_cms: number;
|
|
706
|
+
frames_unresolved_in_source: number;
|
|
707
|
+
frames_unresolved_in_replay: number;
|
|
708
|
+
}> | undefined;
|
|
652
709
|
}, {
|
|
653
710
|
version: 1;
|
|
654
711
|
source_recording_id: string;
|
|
@@ -667,5 +724,68 @@ export declare const DriftReport: z.ZodObject<{
|
|
|
667
724
|
velocity_delta_cms: number;
|
|
668
725
|
rotation_delta_deg: number;
|
|
669
726
|
}[];
|
|
727
|
+
actor_drift?: Record<string, {
|
|
728
|
+
max_position_cm: number;
|
|
729
|
+
max_rotation_deg: number;
|
|
730
|
+
max_velocity_cms: number;
|
|
731
|
+
frames_unresolved_in_source: number;
|
|
732
|
+
frames_unresolved_in_replay: number;
|
|
733
|
+
}> | undefined;
|
|
670
734
|
}>;
|
|
671
735
|
export type DriftReport = z.infer<typeof DriftReport>;
|
|
736
|
+
export declare const ActorState: z.ZodObject<{
|
|
737
|
+
resolved: z.ZodBoolean;
|
|
738
|
+
pos: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
739
|
+
rot: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
740
|
+
vel: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
741
|
+
}, "strip", z.ZodTypeAny, {
|
|
742
|
+
resolved: boolean;
|
|
743
|
+
pos?: [number, number, number] | undefined;
|
|
744
|
+
rot?: [number, number, number] | undefined;
|
|
745
|
+
vel?: [number, number, number] | undefined;
|
|
746
|
+
}, {
|
|
747
|
+
resolved: boolean;
|
|
748
|
+
pos?: [number, number, number] | undefined;
|
|
749
|
+
rot?: [number, number, number] | undefined;
|
|
750
|
+
vel?: [number, number, number] | undefined;
|
|
751
|
+
}>;
|
|
752
|
+
export type ActorState = z.infer<typeof ActorState>;
|
|
753
|
+
export declare const ActorStateRow: z.ZodObject<{
|
|
754
|
+
frame: z.ZodNumber;
|
|
755
|
+
time: z.ZodNumber;
|
|
756
|
+
actors: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
757
|
+
resolved: z.ZodBoolean;
|
|
758
|
+
pos: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
759
|
+
rot: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
760
|
+
vel: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
761
|
+
}, "strip", z.ZodTypeAny, {
|
|
762
|
+
resolved: boolean;
|
|
763
|
+
pos?: [number, number, number] | undefined;
|
|
764
|
+
rot?: [number, number, number] | undefined;
|
|
765
|
+
vel?: [number, number, number] | undefined;
|
|
766
|
+
}, {
|
|
767
|
+
resolved: boolean;
|
|
768
|
+
pos?: [number, number, number] | undefined;
|
|
769
|
+
rot?: [number, number, number] | undefined;
|
|
770
|
+
vel?: [number, number, number] | undefined;
|
|
771
|
+
}>>;
|
|
772
|
+
}, "strip", z.ZodTypeAny, {
|
|
773
|
+
actors: Record<string, {
|
|
774
|
+
resolved: boolean;
|
|
775
|
+
pos?: [number, number, number] | undefined;
|
|
776
|
+
rot?: [number, number, number] | undefined;
|
|
777
|
+
vel?: [number, number, number] | undefined;
|
|
778
|
+
}>;
|
|
779
|
+
frame: number;
|
|
780
|
+
time: number;
|
|
781
|
+
}, {
|
|
782
|
+
actors: Record<string, {
|
|
783
|
+
resolved: boolean;
|
|
784
|
+
pos?: [number, number, number] | undefined;
|
|
785
|
+
rot?: [number, number, number] | undefined;
|
|
786
|
+
vel?: [number, number, number] | undefined;
|
|
787
|
+
}>;
|
|
788
|
+
frame: number;
|
|
789
|
+
time: number;
|
|
790
|
+
}>;
|
|
791
|
+
export type ActorStateRow = z.infer<typeof ActorStateRow>;
|
package/dist/pie/schema.js
CHANGED
|
@@ -34,14 +34,17 @@ export const Manifest = z.object({
|
|
|
34
34
|
rng_seed: z.number(),
|
|
35
35
|
pie_world: z.string(),
|
|
36
36
|
pawn_class: z.string(),
|
|
37
|
+
client_id: z.number().int().nonnegative().optional(),
|
|
37
38
|
axis_threshold: z.number(),
|
|
38
39
|
actions: z.array(ActionSpec),
|
|
39
40
|
tracked_values: z.array(TrackedValueSpec),
|
|
41
|
+
tracked_actors: z.array(z.string()).optional(),
|
|
40
42
|
markers: z.array(Marker),
|
|
41
43
|
files: z.object({
|
|
42
44
|
csv: z.string(),
|
|
43
45
|
sequence: z.string(),
|
|
44
46
|
drift: z.string().optional(),
|
|
47
|
+
tracked_actors: z.string().optional(),
|
|
45
48
|
}),
|
|
46
49
|
});
|
|
47
50
|
// Per-frame value for the input_tape step. The C++ writer emits a scalar when
|
|
@@ -109,6 +112,13 @@ export const DriftFrameEntry = z.object({
|
|
|
109
112
|
velocity_delta_cms: z.number(),
|
|
110
113
|
rotation_delta_deg: z.number(),
|
|
111
114
|
});
|
|
115
|
+
export const ActorDriftEntry = z.object({
|
|
116
|
+
max_position_cm: z.number(),
|
|
117
|
+
max_rotation_deg: z.number(),
|
|
118
|
+
max_velocity_cms: z.number(),
|
|
119
|
+
frames_unresolved_in_source: z.number().int().nonnegative(),
|
|
120
|
+
frames_unresolved_in_replay: z.number().int().nonnegative(),
|
|
121
|
+
});
|
|
112
122
|
export const DriftReport = z.object({
|
|
113
123
|
version: z.literal(PIE_FORMAT_VERSION),
|
|
114
124
|
source_recording_id: z.string(),
|
|
@@ -121,6 +131,21 @@ export const DriftReport = z.object({
|
|
|
121
131
|
max_rotation_drift_deg: z.number(),
|
|
122
132
|
montage_section_mismatches: z.number().int().nonnegative(),
|
|
123
133
|
tracked_value_max_deltas: z.record(z.number()),
|
|
134
|
+
actor_drift: z.record(ActorDriftEntry).optional(),
|
|
124
135
|
frames_over_threshold: z.array(DriftFrameEntry),
|
|
125
136
|
});
|
|
137
|
+
// tracked.jsonl: one ActorStateRow per line. Optional sidecar emitted by the
|
|
138
|
+
// recorder when pie_record_arm is called with track_actors=[...]. Joined to
|
|
139
|
+
// recording.csv by frame index.
|
|
140
|
+
export const ActorState = z.object({
|
|
141
|
+
resolved: z.boolean(),
|
|
142
|
+
pos: z.tuple([z.number(), z.number(), z.number()]).optional(),
|
|
143
|
+
rot: z.tuple([z.number(), z.number(), z.number()]).optional(),
|
|
144
|
+
vel: z.tuple([z.number(), z.number(), z.number()]).optional(),
|
|
145
|
+
});
|
|
146
|
+
export const ActorStateRow = z.object({
|
|
147
|
+
frame: z.number().int().nonnegative(),
|
|
148
|
+
time: z.number(),
|
|
149
|
+
actors: z.record(ActorState),
|
|
150
|
+
});
|
|
126
151
|
//# sourceMappingURL=schema.js.map
|
package/dist/pie/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/pie/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAU,CAAC;AAE7C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGjF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,eAAe;CAC5B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;IACtC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC5B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC5C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACtC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC3C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;IAC5B,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;IACxB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/pie/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/tool-counts.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"tools": 21,
|
|
3
|
-
"actions":
|
|
4
|
-
"bridgeActions":
|
|
3
|
+
"actions": 544,
|
|
4
|
+
"bridgeActions": 517,
|
|
5
5
|
"localActions": 27,
|
|
6
6
|
"perTool": {
|
|
7
7
|
"project": 25,
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"widget": 19,
|
|
19
19
|
"editor": 52,
|
|
20
20
|
"reflection": 8,
|
|
21
|
-
"gameplay":
|
|
21
|
+
"gameplay": 73,
|
|
22
22
|
"gas": 9,
|
|
23
23
|
"networking": 11,
|
|
24
24
|
"demo": 3,
|
|
@@ -26,6 +26,6 @@
|
|
|
26
26
|
"statetree": 35,
|
|
27
27
|
"plugins": 2
|
|
28
28
|
},
|
|
29
|
-
"generatedAt": "2026-05-
|
|
30
|
-
"version": "1.0.
|
|
29
|
+
"generatedAt": "2026-05-22T13:24:20.770Z",
|
|
30
|
+
"version": "1.0.35"
|
|
31
31
|
}
|
package/dist/tools/gameplay.js
CHANGED
|
@@ -61,19 +61,20 @@ export const gameplayTool = categoryTool("gameplay", "Gameplay systems: physics,
|
|
|
61
61
|
inject_input_update: bp("Change the value of a running hold without releasing it. Params: injection_id, value_x?, value_y?, value_z?.", "inject_input_update", (p) => ({ injection_id: p.injection_id, value_x: p.value_x, value_y: p.value_y, value_z: p.value_z })),
|
|
62
62
|
inject_input_stop: bp("Stop a running hold or tape by id. Idempotent: returns stopped=false if no injection existed for that id. Params: injection_id.", "inject_input_stop", (p) => ({ injection_id: p.injection_id })),
|
|
63
63
|
inject_input_tape: bp("Play a per-frame value array through Enhanced Input at the given Hz. One value = one frame. Scalars or [x,y] / [x,y,z] tuples accepted per element to match the action's value type. Auto-stops at the end of the array (or inject_input_stop with the returned id). Params: action, values (array of numbers or 2/3-tuples), hz? (default 60), injection_id?.", "inject_input_tape", (p) => ({ action: p.action, values: p.values, hz: p.hz, injection_id: p.injection_id })),
|
|
64
|
-
pie_record_arm: bp("Arm a PIE input recording for the next BeginPIE (or immediately if PIE is already running). Writes manifest.json / sequence.json / recording.csv into Saved/MCPRecordings/<id>/ on EndPIE. Params: actions? (whitelist of UInputAction paths; empty = record all bound), track_values? (dotted reflection paths sampled to doubles per frame), axis_threshold? (default 0.15), sample_hz? (default 60), pin_fps? (default = sample_hz; 0 to skip the t.MaxFPS pin), capture_pawn_state? (default true), capture_montage? (default true), rng_seed? (default auto), run_gap_frames? (default 6), recording_dir? (override of Saved/MCPRecordings/), id? (override the auto-generated id). Determinism note: pins FMath::RandInit and t.MaxFPS but does not affect FRandomStream or Niagara/AI RNG.", "pie_record_arm", (p) => ({ actions: p.actions, track_values: p.track_values, axis_threshold: p.axis_threshold, sample_hz: p.sample_hz, pin_fps: p.pin_fps, capture_pawn_state: p.capture_pawn_state, capture_montage: p.capture_montage, rng_seed: p.rng_seed, run_gap_frames: p.run_gap_frames, recording_dir: p.recording_dir, id: p.id })),
|
|
64
|
+
pie_record_arm: bp("Arm a PIE input recording for the next BeginPIE (or immediately if PIE is already running). Writes manifest.json / sequence.json / recording.csv into Saved/MCPRecordings/<id>/ on EndPIE, plus tracked.jsonl when track_actors is set. Params: actions? (whitelist of UInputAction paths; empty = record all bound), track_values? (dotted reflection paths sampled to doubles per frame), track_actors? (world actor ids sampled per frame; pos/rot/vel written to tracked.jsonl), axis_threshold? (default 0.15), sample_hz? (default 60), pin_fps? (default = sample_hz; 0 to skip the t.MaxFPS pin), capture_pawn_state? (default true), capture_montage? (default true), rng_seed? (default auto), run_gap_frames? (default 6), recording_dir? (override of Saved/MCPRecordings/), id? (override the auto-generated id). Determinism note: pins FMath::RandInit and t.MaxFPS but does not affect FRandomStream or Niagara/AI RNG.", "pie_record_arm", (p) => ({ actions: p.actions, track_values: p.track_values, track_actors: p.track_actors, axis_threshold: p.axis_threshold, sample_hz: p.sample_hz, pin_fps: p.pin_fps, capture_pawn_state: p.capture_pawn_state, capture_montage: p.capture_montage, rng_seed: p.rng_seed, run_gap_frames: p.run_gap_frames, recording_dir: p.recording_dir, id: p.id })),
|
|
65
65
|
pie_record_disarm: bp("Cancel an armed (but not yet started) recording. No-op if no recording is armed. Errors if a recording is already in flight (use pie_record_stop).", "pie_record_disarm"),
|
|
66
66
|
pie_record_stop: bp("Finalize the in-flight recording immediately even if PIE has not ended. Writes manifest/sequence/csv and clears state. Returns the same shape that EndPIE finalization would produce.", "pie_record_stop"),
|
|
67
67
|
pie_record_status: bp("Recorder state: { state: idle|armed|waiting_for_pawn|recording, id, current_frame, elapsed_seconds, tracked_action_count }.", "pie_record_status"),
|
|
68
68
|
pie_record_list: bp("Enumerate recordings under Saved/MCPRecordings/ (newest first). Params: recording_dir? (override root), record_limit? (default 200), record_offset?.", "pie_record_list", (p) => ({ recording_dir: p.recording_dir, limit: p.record_limit, offset: p.record_offset })),
|
|
69
|
-
pie_record_read: bp("Read a recording artifact. Params: id, file? (manifest|sequence|csv|drift, default manifest), recording_dir?, record_limit? (CSV rows; default 1000), record_offset?.", "pie_record_read", (p) => ({ id: p.id, file: p.file, recording_dir: p.recording_dir, limit: p.record_limit, offset: p.record_offset })),
|
|
69
|
+
pie_record_read: bp("Read a recording artifact. Params: id, file? (manifest|sequence|csv|drift|tracked, default manifest), recording_dir?, record_limit? (CSV rows; default 1000), record_offset?. 'tracked' reads tracked.jsonl when track_actors was set on arm.", "pie_record_read", (p) => ({ id: p.id, file: p.file, recording_dir: p.recording_dir, limit: p.record_limit, offset: p.record_offset })),
|
|
70
70
|
pie_record_delete: bp("Delete a recording directory. Idempotent: returns alreadyDeleted=true if the dir is absent. Requires confirm=true to actually remove. Params: id, confirm, recording_dir?.", "pie_record_delete", (p) => ({ id: p.id, confirm: p.confirm, recording_dir: p.recording_dir })),
|
|
71
71
|
pie_mark: bp("Insert a labelled marker into the in-flight recording (or replay) timeline. No-op (active=false) when no recording/replay is running. Params: label, metadata?.", "pie_mark", (p) => ({ label: p.label, metadata: p.metadata })),
|
|
72
|
-
pie_replay_arm: bp("Arm a PIE replay for the next BeginPIE (or current PIE). Drives the recorded sequence through UEnhancedInputLocalPlayerSubsystem::InjectInputForAction (input/hold/input_tape) plus console/mark/capture steps. Writes drift.json (per-frame pawn delta vs source) when replaying a known recording_id. Params: recording_id? (loads sequence.json + recording.csv for drift), sequence_path? (explicit), steps? (inline array; same schema as sequence.json), settle_ms?, sample_hz?, pin_fps? (default = sample_hz; 0 to skip), apply_rng_seed? (default true), record_drift? (default true), auto_stop_pie? (default false), drift_thresholds? ({ position_cm?, rotation_deg?, velocity_cms? }
|
|
72
|
+
pie_replay_arm: bp("Arm a PIE replay for the next BeginPIE (or current PIE). Drives the recorded sequence through UEnhancedInputLocalPlayerSubsystem::InjectInputForAction (input/hold/input_tape) plus console/mark/capture steps. Writes drift.json (per-frame pawn delta vs source) when replaying a known recording_id. mode='monitor' skips step execution but keeps drift sampling running so a human can play manually against a reference recording. Params: recording_id? (loads sequence.json + recording.csv for drift), sequence_path? (explicit), steps? (inline array; same schema as sequence.json), settle_ms?, sample_hz?, pin_fps? (default = sample_hz; 0 to skip), apply_rng_seed? (default true), record_drift? (default true), auto_stop_pie? (default false), mode? ('replay' default | 'monitor'), drift_thresholds? ({ position_cm?, rotation_deg?, velocity_cms?, tracked_default?, tracked? }), rng_seed? (inline-only).", "pie_replay_arm", (p) => ({ recording_id: p.recording_id, sequence_path: p.sequence_path, steps: p.steps, recording_dir: p.recording_dir, settle_ms: p.settle_ms, sample_hz: p.sample_hz, pin_fps: p.pin_fps, apply_rng_seed: p.apply_rng_seed, record_drift: p.record_drift, auto_stop_pie: p.auto_stop_pie, mode: p.mode, drift_thresholds: p.drift_thresholds, rng_seed: p.rng_seed })),
|
|
73
73
|
pie_replay_disarm: bp("Cancel an armed (but not yet started) replay. Errors if a replay is already in flight (use pie_replay_stop).", "pie_replay_disarm"),
|
|
74
74
|
pie_replay_stop: bp("Stop the in-flight replay immediately. Releases all held injections and writes drift.json when applicable. Returns { stopped, executed_steps, drift_report_path?, max_position_drift_cm?, max_velocity_drift_cms?, frames_compared? }.", "pie_replay_stop"),
|
|
75
75
|
pie_replay_status: bp("Replay state: { state, source_recording_id, current_step, total_steps, elapsed_seconds, max_position_drift_cm, max_velocity_drift_cms }.", "pie_replay_status"),
|
|
76
|
-
|
|
76
|
+
pie_snapshot: bp("One-shot dump of a live PIE actor's full UProperty state to JSON. Resolves target by name, class name, or full path (first match wins). Writes <recording_dir>/<recording_id>/snapshots/<snapshot_name>.json when recording_id is supplied; Saved/MCPSnapshots/<snapshot_name>.json otherwise. Complements track_actors (which only samples pos/rot/vel per frame). Params: target, recording_id?, recording_dir?, snapshot_name? (default snapshot-<timestamp>), include_components? (default true).", "pie_snapshot", (p) => ({ target: p.target, recording_id: p.recording_id, recording_dir: p.recording_dir, name: p.snapshot_name, include_components: p.include_components })),
|
|
77
|
+
pie_record_diff: bp("Offline diff of two PIE recordings. Walks both recording.csv files in lockstep by frame index and emits position / rotation / velocity deltas, per-path tracked_value_max_deltas for reflection paths sampled in both recordings, plus the list of frames over the configurable thresholds. Pure file read; no PIE required. Params: a_id, b_id, recording_dir? (override root), position_cm? (default 5), rotation_deg? (default 2), velocity_cms? (default 25), tracked_default? (default 0 = tracked drift never trips frames_over_threshold), tracked_thresholds? (per-path map).", "pie_record_diff", (p) => ({ a_id: p.a_id, b_id: p.b_id, recording_dir: p.recording_dir, position_cm: p.position_cm, rotation_deg: p.rotation_deg, velocity_cms: p.velocity_cms, tracked_default: p.tracked_default, tracked_thresholds: p.tracked_thresholds })),
|
|
77
78
|
}, undefined, {
|
|
78
79
|
actorLabel: z.string().optional(),
|
|
79
80
|
profileName: z.string().optional(),
|
|
@@ -135,11 +136,14 @@ export const gameplayTool = categoryTool("gameplay", "Gameplay systems: physics,
|
|
|
135
136
|
hz: z.number().optional().describe("inject_input_tape: tape rate in Hz (default 60)"),
|
|
136
137
|
actions: z.array(z.string()).optional().describe("pie_record_arm: whitelist of UInputAction asset paths to record. Empty = record all bound."),
|
|
137
138
|
track_values: z.array(z.string()).optional().describe("pie_record_arm: dotted reflection paths sampled per frame (e.g. 'Hero.AbilitySystem.Health')."),
|
|
139
|
+
track_actors: z.array(z.string()).optional().describe("pie_record_arm: world actors to sample per frame (matched by name, class name, or full path; first match wins). Writes tracked.jsonl with per-frame pos/rot/vel for each id."),
|
|
138
140
|
axis_threshold: z.number().optional().describe("pie_record_arm: dead zone for axis edge detection (default 0.15)"),
|
|
139
141
|
sample_hz: z.number().optional().describe("pie_record_arm: sample rate in Hz (default 60). Also the default for pin_fps."),
|
|
140
142
|
pin_fps: z.number().optional().describe("pie_record_arm: t.MaxFPS pin during recording (default = sample_hz; 0 to skip)"),
|
|
141
143
|
capture_pawn_state: z.boolean().optional().describe("pie_record_arm: include pawn location/rotation/velocity/Speed2D per row (default true)"),
|
|
142
144
|
capture_montage: z.boolean().optional().describe("pie_record_arm: include 'Montage:Section' per row (default true)"),
|
|
145
|
+
take_record: z.boolean().optional().describe("pie_record_arm: also drive Take Recorder Start/Stop in lockstep with BeginPIE / EndPIE. Requires the Take Recorder plugin enabled and an open Take Recorder panel with sources configured. pie_record_stop returns take_recorder_status with the outcome (started / skipped / stopped, plus the reason)."),
|
|
146
|
+
client_id: z.number().optional().describe("pie_record_arm / pie_replay_arm / inject_input*: which local player to sample, replay, or inject into. 0 (default) = first local player; 1+ selects subsequent local players in multi-client PIE sessions. To record multiple clients in one PIE session, call pie_record_arm once per client_id with different ids."),
|
|
143
147
|
rng_seed: z.number().optional().describe("pie_record_arm: explicit RNG seed (default auto). Reapplied via FMath::RandInit on attach."),
|
|
144
148
|
run_gap_frames: z.number().optional().describe("pie_record_arm: gap-tolerance frames for axis run extraction in sequence.json (default 6)"),
|
|
145
149
|
recording_dir: z.string().optional().describe("pie_record_arm/list/read/delete: override of Saved/MCPRecordings/"),
|
|
@@ -157,11 +161,18 @@ export const gameplayTool = categoryTool("gameplay", "Gameplay systems: physics,
|
|
|
157
161
|
apply_rng_seed: z.boolean().optional().describe("pie_replay_arm: reapply sequence.rng_seed via FMath::RandInit (default true)"),
|
|
158
162
|
record_drift: z.boolean().optional().describe("pie_replay_arm: sample replay state and emit drift.json (default true when recording_id is set)"),
|
|
159
163
|
auto_stop_pie: z.boolean().optional().describe("pie_replay_arm: stop PIE on sequence completion (default false)"),
|
|
160
|
-
|
|
164
|
+
mode: z.string().optional().describe("pie_replay_arm: 'replay' (default) injects inputs and drives the sequence; 'monitor' skips step execution but keeps drift sampling running so a human can play manually against a reference recording."),
|
|
165
|
+
capture_frame_every: z.number().optional().describe("pie_replay_arm: when > 0, write a viewport screenshot every Nth sampled frame to <recording_dir>/frames/. pie_replay_stop returns ffmpeg hints for assembling the PNG sequence into a GIF or MP4."),
|
|
166
|
+
drift_thresholds: z.record(z.unknown()).optional().describe("pie_replay_arm: { position_cm?, rotation_deg?, velocity_cms?, tracked_default?, tracked? } cutoffs for over-threshold frame list. tracked is a per-path map (path -> threshold); tracked_default applies to paths without an explicit entry. 0 disables tracked-value triggering."),
|
|
161
167
|
a_id: z.string().optional().describe("pie_record_diff: id of recording A"),
|
|
162
168
|
b_id: z.string().optional().describe("pie_record_diff: id of recording B"),
|
|
163
169
|
position_cm: z.number().optional().describe("pie_record_diff: position delta threshold in cm (default 5)"),
|
|
164
170
|
rotation_deg: z.number().optional().describe("pie_record_diff: rotation delta threshold in degrees (default 2)"),
|
|
165
171
|
velocity_cms: z.number().optional().describe("pie_record_diff: velocity delta threshold in cm/s (default 25)"),
|
|
172
|
+
tracked_default: z.number().optional().describe("pie_record_diff: default per-path delta threshold applied to tracked-value columns that are not in tracked_thresholds (default 0 = don't trigger)"),
|
|
173
|
+
tracked_thresholds: z.record(z.number()).optional().describe("pie_record_diff: per-path delta thresholds keyed by reflection path. A frame is over-threshold if any path's |delta| exceeds its entry (or tracked_default when absent)."),
|
|
174
|
+
target: z.string().optional().describe("pie_snapshot: actor identifier (name, class name, or full path)"),
|
|
175
|
+
snapshot_name: z.string().optional().describe("pie_snapshot: filename basename (default snapshot-<timestamp>)"),
|
|
176
|
+
include_components: z.boolean().optional().describe("pie_snapshot: also dump UActorComponents (default true)"),
|
|
166
177
|
});
|
|
167
178
|
//# sourceMappingURL=gameplay.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gameplay.js","sourceRoot":"","sources":["../../src/tools/gameplay.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gameplay.js","sourceRoot":"","sources":["../../src/tools/gameplay.ts"],"names":[],"mappings":"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"}
|
package/dist/ue-mcp.default.yml
CHANGED
|
@@ -2804,7 +2804,7 @@ tasks:
|
|
|
2804
2804
|
gameplay.pie_record_arm:
|
|
2805
2805
|
class_path: ue-mcp.bridge
|
|
2806
2806
|
group: gameplay
|
|
2807
|
-
description: "Arm a PIE input recording for the next BeginPIE (or immediately if PIE is already running). Writes manifest.json / sequence.json / recording.csv into Saved/MCPRecordings/<id>/ on EndPIE. Params: actions? (whitelist of UInputAction paths; empty = record all bound), track_values? (dotted reflection paths sampled to doubles per frame), axis_threshold? (default 0.15), sample_hz? (default 60), pin_fps? (default = sample_hz; 0 to skip the t.MaxFPS pin), capture_pawn_state? (default true), capture_montage? (default true), rng_seed? (default auto), run_gap_frames? (default 6), recording_dir? (override of Saved/MCPRecordings/), id? (override the auto-generated id). Determinism note: pins FMath::RandInit and t.MaxFPS but does not affect FRandomStream or Niagara/AI RNG."
|
|
2807
|
+
description: "Arm a PIE input recording for the next BeginPIE (or immediately if PIE is already running). Writes manifest.json / sequence.json / recording.csv into Saved/MCPRecordings/<id>/ on EndPIE, plus tracked.jsonl when track_actors is set. Params: actions? (whitelist of UInputAction paths; empty = record all bound), track_values? (dotted reflection paths sampled to doubles per frame), track_actors? (world actor ids sampled per frame; pos/rot/vel written to tracked.jsonl), axis_threshold? (default 0.15), sample_hz? (default 60), pin_fps? (default = sample_hz; 0 to skip the t.MaxFPS pin), capture_pawn_state? (default true), capture_montage? (default true), rng_seed? (default auto), run_gap_frames? (default 6), recording_dir? (override of Saved/MCPRecordings/), id? (override the auto-generated id). Determinism note: pins FMath::RandInit and t.MaxFPS but does not affect FRandomStream or Niagara/AI RNG."
|
|
2808
2808
|
options:
|
|
2809
2809
|
method: pie_record_arm
|
|
2810
2810
|
gameplay.pie_record_disarm:
|
|
@@ -2834,7 +2834,7 @@ tasks:
|
|
|
2834
2834
|
gameplay.pie_record_read:
|
|
2835
2835
|
class_path: ue-mcp.bridge
|
|
2836
2836
|
group: gameplay
|
|
2837
|
-
description: "Read a recording artifact. Params: id, file? (manifest|sequence|csv|drift, default manifest), recording_dir?, record_limit? (CSV rows; default 1000), record_offset?."
|
|
2837
|
+
description: "Read a recording artifact. Params: id, file? (manifest|sequence|csv|drift|tracked, default manifest), recording_dir?, record_limit? (CSV rows; default 1000), record_offset?. 'tracked' reads tracked.jsonl when track_actors was set on arm."
|
|
2838
2838
|
options:
|
|
2839
2839
|
method: pie_record_read
|
|
2840
2840
|
gameplay.pie_record_delete:
|
|
@@ -2852,7 +2852,7 @@ tasks:
|
|
|
2852
2852
|
gameplay.pie_replay_arm:
|
|
2853
2853
|
class_path: ue-mcp.bridge
|
|
2854
2854
|
group: gameplay
|
|
2855
|
-
description: "Arm a PIE replay for the next BeginPIE (or current PIE). Drives the recorded sequence through UEnhancedInputLocalPlayerSubsystem::InjectInputForAction (input/hold/input_tape) plus console/mark/capture steps. Writes drift.json (per-frame pawn delta vs source) when replaying a known recording_id. Params: recording_id? (loads sequence.json + recording.csv for drift), sequence_path? (explicit), steps? (inline array; same schema as sequence.json), settle_ms?, sample_hz?, pin_fps? (default = sample_hz; 0 to skip), apply_rng_seed? (default true), record_drift? (default true), auto_stop_pie? (default false), drift_thresholds? ({ position_cm?, rotation_deg?, velocity_cms? }
|
|
2855
|
+
description: "Arm a PIE replay for the next BeginPIE (or current PIE). Drives the recorded sequence through UEnhancedInputLocalPlayerSubsystem::InjectInputForAction (input/hold/input_tape) plus console/mark/capture steps. Writes drift.json (per-frame pawn delta vs source) when replaying a known recording_id. mode='monitor' skips step execution but keeps drift sampling running so a human can play manually against a reference recording. Params: recording_id? (loads sequence.json + recording.csv for drift), sequence_path? (explicit), steps? (inline array; same schema as sequence.json), settle_ms?, sample_hz?, pin_fps? (default = sample_hz; 0 to skip), apply_rng_seed? (default true), record_drift? (default true), auto_stop_pie? (default false), mode? ('replay' default | 'monitor'), drift_thresholds? ({ position_cm?, rotation_deg?, velocity_cms?, tracked_default?, tracked? }), rng_seed? (inline-only)."
|
|
2856
2856
|
options:
|
|
2857
2857
|
method: pie_replay_arm
|
|
2858
2858
|
gameplay.pie_replay_disarm:
|
|
@@ -2873,10 +2873,16 @@ tasks:
|
|
|
2873
2873
|
description: "Replay state: { state, source_recording_id, current_step, total_steps, elapsed_seconds, max_position_drift_cm, max_velocity_drift_cms }."
|
|
2874
2874
|
options:
|
|
2875
2875
|
method: pie_replay_status
|
|
2876
|
+
gameplay.pie_snapshot:
|
|
2877
|
+
class_path: ue-mcp.bridge
|
|
2878
|
+
group: gameplay
|
|
2879
|
+
description: "One-shot dump of a live PIE actor's full UProperty state to JSON. Resolves target by name, class name, or full path (first match wins). Writes <recording_dir>/<recording_id>/snapshots/<snapshot_name>.json when recording_id is supplied; Saved/MCPSnapshots/<snapshot_name>.json otherwise. Complements track_actors (which only samples pos/rot/vel per frame). Params: target, recording_id?, recording_dir?, snapshot_name? (default snapshot-<timestamp>), include_components? (default true)."
|
|
2880
|
+
options:
|
|
2881
|
+
method: pie_snapshot
|
|
2876
2882
|
gameplay.pie_record_diff:
|
|
2877
2883
|
class_path: ue-mcp.bridge
|
|
2878
2884
|
group: gameplay
|
|
2879
|
-
description: "Offline diff of two PIE recordings. Walks both recording.csv files in lockstep by frame index and emits position / rotation / velocity deltas plus the list of frames over the configurable thresholds. Pure file read; no PIE required. Params: a_id, b_id, recording_dir? (override root), position_cm? (default 5), rotation_deg? (default 2), velocity_cms? (default 25)."
|
|
2885
|
+
description: "Offline diff of two PIE recordings. Walks both recording.csv files in lockstep by frame index and emits position / rotation / velocity deltas, per-path tracked_value_max_deltas for reflection paths sampled in both recordings, plus the list of frames over the configurable thresholds. Pure file read; no PIE required. Params: a_id, b_id, recording_dir? (override root), position_cm? (default 5), rotation_deg? (default 2), velocity_cms? (default 25), tracked_default? (default 0 = tracked drift never trips frames_over_threshold), tracked_thresholds? (per-path map)."
|
|
2880
2886
|
options:
|
|
2881
2887
|
method: pie_record_diff
|
|
2882
2888
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ue-mcp",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "Unreal Engine MCP server - 21 tools,
|
|
3
|
+
"version": "1.0.35",
|
|
4
|
+
"description": "Unreal Engine MCP server - 21 tools, 544+ actions for AI-driven editor control",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"bin": {
|
|
@@ -152,6 +152,7 @@ void FGameplayHandlers::RegisterHandlers(FMCPHandlerRegistry& Registry)
|
|
|
152
152
|
Registry.RegisterHandler(TEXT("pie_replay_stop"), &PieReplayStop);
|
|
153
153
|
Registry.RegisterHandler(TEXT("pie_replay_status"), &PieReplayStatus);
|
|
154
154
|
Registry.RegisterHandler(TEXT("pie_record_diff"), &PieRecordDiff);
|
|
155
|
+
Registry.RegisterHandler(TEXT("pie_snapshot"), &PieSnapshot);
|
|
155
156
|
}
|
|
156
157
|
|
|
157
158
|
TSharedPtr<FJsonValue> FGameplayHandlers::CreateSmartObjectDefinition(const TSharedPtr<FJsonObject>& Params)
|
|
@@ -107,4 +107,7 @@ private:
|
|
|
107
107
|
|
|
108
108
|
// Offline pawn-state diff of two recordings.
|
|
109
109
|
static TSharedPtr<FJsonValue> PieRecordDiff(const TSharedPtr<FJsonObject>& Params);
|
|
110
|
+
|
|
111
|
+
// Full UProperty dump of a live PIE actor to JSON (snapshots/<name>.json).
|
|
112
|
+
static TSharedPtr<FJsonValue> PieSnapshot(const TSharedPtr<FJsonObject>& Params);
|
|
110
113
|
};
|
package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_InputInject.cpp
CHANGED
|
@@ -64,8 +64,9 @@ TSharedPtr<FJsonValue> FGameplayHandlers::InjectInput(const TSharedPtr<FJsonObje
|
|
|
64
64
|
if (!Action) return LoadErr;
|
|
65
65
|
|
|
66
66
|
const FInputActionValue Value = BuildValueForAction(Action, Params);
|
|
67
|
+
const int32 ClientIndex = FMath::Max(0, OptionalInt(Params, TEXT("client_id"), 0));
|
|
67
68
|
FString Err;
|
|
68
|
-
if (!UEMCPPIE::FPIEInputInjector::InjectOnce(Action, Value, Err))
|
|
69
|
+
if (!UEMCPPIE::FPIEInputInjector::InjectOnce(Action, Value, Err, ClientIndex))
|
|
69
70
|
{
|
|
70
71
|
return MCPError(Err);
|
|
71
72
|
}
|
|
@@ -86,9 +87,10 @@ TSharedPtr<FJsonValue> FGameplayHandlers::InjectInputStart(const TSharedPtr<FJso
|
|
|
86
87
|
|
|
87
88
|
const FInputActionValue Value = BuildValueForAction(Action, Params);
|
|
88
89
|
const FString DesiredId = OptionalString(Params, TEXT("injection_id"));
|
|
90
|
+
const int32 ClientIndex = FMath::Max(0, OptionalInt(Params, TEXT("client_id"), 0));
|
|
89
91
|
|
|
90
92
|
FString Err;
|
|
91
|
-
const FString Id = UEMCPPIE::FPIEInputInjector::StartHold(Action, Value, DesiredId, Err);
|
|
93
|
+
const FString Id = UEMCPPIE::FPIEInputInjector::StartHold(Action, Value, DesiredId, Err, ClientIndex);
|
|
92
94
|
if (Id.IsEmpty()) return MCPError(Err);
|
|
93
95
|
|
|
94
96
|
auto Result = MCPSuccess();
|
|
@@ -183,9 +185,10 @@ TSharedPtr<FJsonValue> FGameplayHandlers::InjectInputTape(const TSharedPtr<FJson
|
|
|
183
185
|
|
|
184
186
|
const int32 Hz = OptionalInt(Params, TEXT("hz"), 60);
|
|
185
187
|
const FString DesiredId = OptionalString(Params, TEXT("injection_id"));
|
|
188
|
+
const int32 ClientIndex = FMath::Max(0, OptionalInt(Params, TEXT("client_id"), 0));
|
|
186
189
|
|
|
187
190
|
FString Err;
|
|
188
|
-
const FString Id = UEMCPPIE::FPIEInputInjector::StartTape(Action, Vals, Hz, DesiredId, Err);
|
|
191
|
+
const FString Id = UEMCPPIE::FPIEInputInjector::StartTape(Action, Vals, Hz, DesiredId, Err, ClientIndex);
|
|
189
192
|
if (Id.IsEmpty()) return MCPError(Err);
|
|
190
193
|
|
|
191
194
|
auto Result = MCPSuccess();
|