Skip to content

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 called Composites. These contain Entity types which perform our logic.
  • If you're familiar with Blueprint in Unreal Engine, the structure of Composites should seem familiar, as they are close to Blueprints.
  • There are four types of Entity which a Composite 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).
    • VariableEntity
      • This acts as an instance of a variable, and can be accessed outside of the Composite when it is instanced as a FunctionEntity via the parameters.
    • ProxyEntity
      • This acts as a proxy to an Entity in another Composite. It's useful if you're scripting based on events that occur from nodes in other Composite script instances.
    • OverrideEntity
      • This can override parameters in instances of Composite reference FunctionEntity objects. For example, say you have a Composite 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.
  • All Entity types can contain Parameters, which supply them data. You instance data within a Parameter by giving it a ParameterData 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, all Entity objects have a trigger 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!

Clone this wiki locally