-
-
Notifications
You must be signed in to change notification settings - Fork 1
Cathode scripting overview
Matt Filer edited this page Feb 10, 2024
·
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 be created via) a
Commandsclass. - Scripts within
Commandsare objects calledComposites. These containEntitytypes which perform our logic. - If you're familiar with Blueprint in Unreal Engine, the structure of
Composites should seem familiar. - There are four types of
Entitywhich aCompositecan hold:-
FunctionEntity- This executes a function. The function can either be hardcoded (which you can pick via the
FunctionTypeenum when creating), or anotherCompositewithin theCommandsobject (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
Compositeas a parameter when its instanced as aFunctionEntity.
- This acts as an instance of a variable, and can be accessed outside of the
-
ProxyEntity- This acts as a proxy of an
Entityin anotherCompositeinstance from the level root. It's useful if you're scripting based on events that occur in otherCompositescript instances within the wider context of the level.
- This acts as a proxy of an
-
AliasEntity- This acts as a reference to an
Entitywithin a child of the currentComposite. It can be used to override parameters within instanced composites, which can be useful to do things like change material properties or hide submeshes of reused models without creating a whole newComposite.
- This acts as a reference to an
-
- All
Entitytypes can containParameters, which supply them data. You instance data within aParameterby giving it aParameterDataobject, which can be either:-
cTransform(a position 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) -
cSpline(a spline, containing a list of cTransform objects for points along the spline)
-
-
Entityobjects can be linked, either to pass data between eachother, or to trigger events. For example, allEntityobjects have atriggerparameter, which can be linked to in order to trigger them. -
Entityobjects can also reference resources within the game's level (via aresourceparameter which usescResourcetype, or via a direct reference to theEntityitself), such asRENDERABLE_INSTANCEtypes, which reference an index in the level'sRenderableElements(which can also be loaded using CathodeLib).
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 from scratch!
You can also load existing COMMANDS.PAK files from the game & write handy scripts to change logic, or bulk edit things!