-
Notifications
You must be signed in to change notification settings - Fork 0
UGMPMeta
The collected signature table: for each tag, the parameter types it has been used with.
Declared in Plugins/GMP/Source/GMP/Private/GMPMeta.h:80
UCLASS(defaultconfig, config = GMPMeta)
class UGMPMeta : public UObject
{
public:
GMP_API static const TArray<FName>* GetTagMeta(const UObject* WorldCtx, FName MsgTag);
GMP_API static const TArray<FName>* GetSvrMeta(const UObject* WorldCtx, FName MsgTag);
UPROPERTY() TMap<FName, FGMPTagTypes> GMPTypes;
UPROPERTY(Config) TArray<FGMPTagMetaBase> MessageTagsList;
};GetTagMeta returns the recorded parameter type names for a tag, in order — the array that
Parameter compatibility compares against. GetSvrMeta is the server-side counterpart.
Two storages, deliberately:
| Property | Config-backed | Role |
|---|---|---|
GMPTypes |
no | the live table used during a session |
MessageTagsList |
yes | what serialises to DefaultGMPMeta.ini
|
config = GMPMeta with defaultconfig means the collected table writes out to DefaultGMPMeta.ini.
Staging that ini with a build carries the signatures into the packaged game. That is what lets a script backend validate types at runtime without the editor present. If script-side type validation is expected in a shipped build and is not happening, an unstaged ini is the first thing to check.
Editor-time collection from C++ call sites, Blueprint nodes and script usage, plus
Signature inference for tags never declared in C++. Filling and comparison are gated on
GMP_WITH_DYNAMIC_CALL_CHECK — on in Editor and Development.

- listener registration and dispatch validation
- Blueprint node pin generation — see UK2Neuron
- per-language codegen — see Transparent rewrite
The table records what has been observed, not what is declared. A tag exercised only in a code path no editor run ever took has nothing recorded for it, and nothing to validate against.
Signature inference · Parameter compatibility · Class2Name · MSGKEY
GMP · Reference wiki — one page per named thing. Guided introduction: project site · 中文站点 · measured dispatch stack Source: repository · README · README 中文
Pages here are generated from wiki/ in the main repository — edit there, not on the wiki.
Concepts
- Why a string key
- Dispatch layers
- Parameter compatibility
- Signature inference
- Key baking
- Transparent rewrite
- Jump tracing
Sending and listening
- NotifyMessage family
- ListenMessage family
- StoreObjectMessage
- MSGKEY
- FSigSource
- FSigHandle
- FGMPKey
- FGMPResponder
Dispatch internals
Reflection and data
Editor
Build