-
-
Notifications
You must be signed in to change notification settings - Fork 0
Cathode scripting overview
Matt Filer edited this page Jan 2, 2023
·
9 revisions
The Cathode Scripting system in Alien: Isolation is super cool, so lets break it down...
- The "COMMANDS.PAK" file holds all scripts for a level in the game, which in CathodeLib can load into (or create via) a
Commands
class. - Scripts within
Commands
are objects calledComposite
s. These containEntity
types which perform our logic. - If you're familiar with Blueprint in Unreal Engine, the structure of
Composite
s should seem familiar, as they are close to Blueprints. - There are four types of
Entity
which aComposite
can hold:-
FunctionEntity
- This executes a function. The function can either be hardcoded (which you can pick via the
FunctionType
enum when creating), or another composite within the Commands object (which you can reference).
- This executes a function. The function can either be hardcoded (which you can pick via the
-
VariableEntity
- This acts as an instance of a variable, and can be accessed outside of the
Composite
when it is instanced as aFunctionEntity
via the parameters.
- This acts as an instance of a variable, and can be accessed outside of the
-
ProxyEntity
- This acts as a proxy to an
Entity
in anotherComposite
. It's useful if you're scripting based on events that occur from nodes in otherComposite
script instances.
- This acts as a proxy to an
-
OverrideEntity
- This can override parameters in instances of
Composite
referenceFunctionEntity
objects. For example, say you have aComposite
that places a model with an interactable button, but you want to change the interactable text in this instance - you could use an override to do this.
- This can override parameters in instances of
-
- All
Entity
types can containParameter
s, which supply them data. You instance data within aParameter
by giving it aParameterData
object, which can be either:-
cTransform
(a position (Y is up), and euler rotation) -
cInteger
(an integer) -
cString
(a string) -
cBool
(a boolean) -
cFloat
(a float) -
cEnum
(an enum, with an index value) -
cVector3
(a vector with X,Y,Z components - sometimes used for colour values) -
cResource
(a list of references to resources in the level, such as a renderable instance) -
cSpline
(a spline, containing a list of cTransform objects for points along the spline)
-
-
Entity
objects can be linked, either to pass data between eachother, or to trigger events. For example, allEntity
objects have atrigger
parameter, which can be linked to in order to trigger them.
If you'd like to put all of this into action, check out "Creating your first Cathode script" to create an objective popup on level load!