Table of content
Throrough this doc, you will find mention of points, Dataset, vtx, edges, clusters, paths and more.
While more advanced concepts are expanded on their own page, here are a few basics:
Points
Points are smallest piece of data you work with within PCG. They have a list of Static properties such as $Density
, $Color
, $Position
, $Rotation
etc. While you can change their values, you can’t remove any of them from a point. They’re its DNA.
On top of static properties, point can have Dynamic attributes, are custom, user-defined properties type, names and value you control.
PCGEx leverages attributes a lot, and doesn’t deal too much in properties except for blending.
Some PCGEx nodes uses attributes to store internal data. These are prefixed
PCGEx/
. Try not do modify these unless you know exactly what you’re doing – most of them are data packed inside anint64
.
Data / Dataset / Collection
Often Point Datasets, they are container for a single type of more atomic data – i.e, points. Contrary to points that share a common set of static properties, each Dataset can have its own custom list of attributes; with per-point values. Most PCGEx nodes can take multiple Dataset as input, and will process them in parallel.
Some very specific nodes are processing Dataset against each others, but it’s clear when they do so. It’s important to understand that most PCGEx nodes will do their biding on individual Datasets, ignoring what’s going on with others processed in parallel : things like min/max values for example are computed per Dataset, and never against the entierety of the inputs.
As a rule of thumb, PCGEx will always process Dataset in solation of the others, and output Datas in the same order as they are in the input.
Paths, Vtx and Edges
PCGEx uses the terms Paths, Vtx and Edges for some inputs & ouputs. These are just regular Point Datasets whose name is used to convey certain assumptions. Those assumptions are covered in more details on specific sections of the doc. Namely Clusters and Paths
Keep in mind that these are just points and they can be used with any other regular node – not just PCGEx!
Clusters
Clusters is the word PCGEx uses to mean Connected pair/groups of points. Pairs/groups are identified & retrieved through tags at the moment; that will change in the future for a more robust approach. While they are still just points, make sure to check out the Clusters specific documentation!
Cluster-related nodes uses tags to store internal data. These are prefixed
PCGEx/
. Try not do modify these unless you know exactly what you’re doing.
Module Overrides
A few nodes require you to pick “modules” for specific behaviors, such as blending, goal picking, pathfinding search algorithm, etc.
You’ll notice these modules don’t expose per-property override pins – this is a limitation of the way native PCG processes & generates input pin. In order to circumvent this limitation, said nodes have an override pin prefixed Overrides : xxx
Where xxx is the name of the module. This pin accepts attribute set as inputs, and will forward their values to the module.
There is a couple limitations tho:
- The value is read from index
0
of the attribute set, so any subsequent row will be ignored. - The name of the attribute must match perfectly the name of the property you’re targeting. To get that name, right-click on the variable in the editor and select
Copy Internal Name
. Sometime the displayed name is not the internal one. - Only first-level properties are supported, as well as simple value types (e.g, the basic types supported by PCG for attributes).
-
FSoftObjectPath
is not supported as a value and will instead be resolved. -
FSoftObjectClass
is not supported at all.
If the target property is a UObject reference, the override process will try to read the override value as a path, load & resolve it.
You can use this to your advantage to work with more complex types such asDataAsset
, or actor references.