CATHODE is an engine built by the Creative Assembly for the 2014 video game Alien: Isolation. It is a highly modified version of the engine created by the Creative Assembly for an earlier title, Viking: Battle for Asgard. The trademark for the engine name was filed by SEGA on August 26th 2013, and eventually granted February 20th 2014.
The CATHODE engine was built upon a custom scripting system which was created entirely for Alien: Isolation - named after the engine, CATHODE Scripting. This system was node based and live edit. It allowed for the use of prefabs to quickly build upon existing scripts. The scripting system ran inside of the Creative Assembly Game Editor (CAGE) in a what-you-see-is-what-you-get (WYSIWYG) style, allowing for easy modifications by the team. The CATHODE Scripting system covered: particles, lighting, props, AI scripts, audio, zoning and character setup.
Lead developer Clive Gratton explained how difficult it was to develop Alien: Isolation initially as the CATHODE Scripting system was created. Due to the engine being developed alongside the game as it progressed from the features it had for Viking, there was consequently a period of around 6 months of work that was effectively lost and had to be entirely rebuilt in the new scripting system within CAGE when it was ready for the team to use. Prior to using CAGE, a 3DSMax plugin was used to edit scripts for the game which was not ideal as the license was expensive, meaning not all of the team could have access to it.
The initial greenlight demo for Alien: Isolation was built upon an early version of CATHODE when work began to convert it from the Viking engine. While early demo builds of the game included a splashscreen for CATHODE, references to it were removed in the final shipped game, although its name is mentioned alongside the game on store pages.
LightingCATHODE was built to use a process known as deferred rendering which allows the developers to use a large number of lights in an environment along with advanced geometry and maintain a consistently good framerate. This meant that the game was able to re-create the Alien look without being too taxing on the system it runs on. Developers Thomas Stachowiak and Jose Bonet detailed the way that CATHODE handles its deferred rendering in a talk at the Develop 2012 conference during the development of Alien: Isolation.
As well as deferred rendering, CATHODE calculated its radiosity in realtime, allowing for a large number of dynamic lights in the environments to accurately recreate the Alien look. A few radiosity settings can be tweaked in the game configuration files, proving that this system is calculated realtime during gameplay. It was noted that the Creative Assembly actually hired lighting technicians from the film industry rather than the games industry due to their lighting system being live edit, meaning that they could easily modify environment lighting without much technical knowledge through prefabs. This however caused disruption internally, as the realtime radiosity feature was added mid-production causing extra work for the art department.
The CATHODE engine is a highly modified version of an engine created by The Creative Assembly for a previous title, Viking: Battle for Asgard. This engine was likely chosen as a base for CATHODE over their Total War engine due to the third person perspective of Viking, with Alien: Isolation initially being a third person experience, and the large detailed environments it could render. The giveaway that Viking: Battle for Asgard's engine is the base of Alien: Isolation's CATHODE engine can be found in Isolation's console build, where many Viking config files are left over - such as UI scripts, weapon scripts and
attack data. Early Alien: Isolation character configuration files also share a large number of attributes from Viking's characters where they have been ported to the CATHODE XML/BML format, with even final in-use character configuration scripts containing attributes such as "is_male" from Viking, something that is seemingly useless within Isolation. It was noted by developers that these character configuration files have survived from early EA sports games that the Creative Assembly have produced, and although it is not an ideal system, it works well which is why it has still carried across.
The use of Viking: Battle for Asgard's engine was later confirmed by Clive Gratton, Alien: Isolation's lead programmer, in a talk explaining how Viking's engine was reworked to become CATHODE. Aside from the new features added to the engine such as the largely publicized deferred rendering, behind-the-scenes a number of new tools were created to use with the engine, the main tool being the CATHODE Scripting system for the Creative Assembly Game Editor (CAGE). This editor was similar to the blueprint system found in Unreal Engine 4 and allowed programmers to easily script elements of the game through a custom WYSIWYG-style interface. Clive spoke of issues faced in early development, particularly developers creating elements of the game before the script editor was finished, which meant those elements then
had to be remade when the editor was ready. This slowed development and meant a lot of early work was wasted. This could have been why the game's story was majorly rewritten around a year before release causing a lot of story elements to be scrapped - potentially occurring at the same time that the game switched from third to first person (potentially this was also when the name Alien Year Zero was dropped).
AI behaviors in CATHODE were controlled by a series of behavior trees, the goal of which was to allow designers to tweak behaviors easily when they wished to add new characters or pull specific character reactions to certain triggers. This dream ultimately didn't come true however as the behavior trees for Alien: Isolation were incredibly complex and only the AI programmers were able to easily understand them.
The behavior trees for Alien: Isolation were created within Brainiac Designer, an open source behavior tree creation tool using a plugin known internally as "LegendPlugin" - Legend and Moon being internal names for Isolation and other scrapped prototypes. A fan creation of LegendPlugin is available which allows you to view and modify all of the behavior trees within Alien: Isolation for yourself, just like the team at Creative Assembly initially planned to roll out. There are around 14 main behavior trees within the game files, spanning across 86 separate files. Shown to the right is a compressed version of a partially expanded version of the main Xenomorph behavior tree - click here to view larger.
As well as this behavior tree system (which formed the local behaviors of the AI), there was also a primary "stage manager". The stage manager fed information around both AI systems in the game, a macro AI and a micro AI, the "micro AI" being the NPC itself, and the "macro AI" being an AI 'director', similar to that of Left for Dead, which would monitor the player and alien at all times. This director AI would make sure that encounters remained tense, and that the alien was acting appropriately through something known as the "menace gauge". This metric would measure how long and tense encounters with the NPCs (specifically the Xenomorph) were becoming and adjust the AI accordingly. Scripted searches were also implemented to the game to force NPCs to search around the player when in hiding for a set radius.
CATHODE seemingly used a tool known as CharEd to manage the game's character, material and weapon configuration files. The CharEd configuration for Alien: Isolation as seen in the game files is shown below.
CharEd Project: "GOE Directory Configuration"
|CharEd Tag||Description||File Path|
|Schemas||Presumed to be an overview of the character created within GameLabData.||Build\OfflineCharacterData\Schema|
|GameLabData||Presumed to be where characters information was stored.||Build\OfflineCharacterData|
|Projects||The location to the CharEd folder.||Tools\CharEd|
|AnimData||The location to the game's animation data. This would most likely be used to pull animations for creating character actions.||Build\Animation|
|EntityData||The location to the entity tools folder.||Tools\entity|
|AttributeData||The location to the character attribute data folder, this stores information such as spawning weapon, alliance groups, attack groups, etc.||Build\Data_files\chr_info|
|WeaponData||The location to the weapon configurations folder, this stores the configurations for the weapons and ammunition found within the game.||Build\Data_files\weapon_info|
|AimIKData||Something that appears to be depreciated in the final build of the game, this was a way of setting up different sized weapons to be positioned correctly on character models.||Build\Data_files\aim_ik_data|
|CharacterDefData||A feature that seems to have been removed as there are no other references to it. Potentially replaced with AttributeData.||Build\Data_files\CharacterDefs|
|SkeletonDefData||The development location to the skeleton definition of animated models in-game. In the final build of the game, these are placed in "ANIMATION.PAK".||Build\Data_files\SkeletonDefs|
|MaterialData||The location of the material configuration files, this specifies all data about materials to be applied to models such as impact effects, physics, debris, fire reactions, etc.||Build\Data_files\material_data|
|CameraData||Seemingly depreciated, this would most likely have configured the third person camera as seen in early game demos to react to the player's cover movement and game presence.||Build\Data_files\camera_info|
|GlobalConstants||The development version of the root "DATA" directory found in the final game.||Build\Data_files|
|CharacterModels||The folder where character models are stored before being packed into the engine's PAK format.||Build\Characters|
|ViewconeSets||The folder where "viewcone" sets are stored. This specifies how big of a vision a character has and how much environmental effects will change their vision ability, such as smoke or light.||Build\Data_files\view_cone_sets|
|ImpactsEffects||A feature which scripts are not shipped with the game, or was merged with something else, impact effects are played upon hitting a character - for example, android head impacts use the effect "ANDROID_HEAD_IMPACT".||Build\Data_files\ImpactsEffects|
|AlienConfigData||The folder where the alien-specific configurations are stored. A number of different alien configurations are present for different situations and scripted moments (such as the Crew Expendable vent sequence).||Build\Data_files\alienconfigs|
|DifficultySettingData||The folder where difficulty setting modifiers are stored. These configurations are loaded in based on the user's difficulty choice and modify the preset configurations found in the AlienConfigs and Chr_Info.||Build\Data_files\difficultysettings|
The CATHODE Engine has a heavy use of a custom file format with the extension of PAK. While some PAK files are simply compiled source files with padding between (such as UI.PAK), others are more complex and require other manifest-type files to unpack them. Another common format is "BML" a compiled XML format which is used throughout the game to configure things such as character skeletons, weapon parameters, difficulty settings, loot drops and more.The engine has a "cover and traversal" system which is unused in the final version of Alien: Isolation which was built for the early third person version of the game. This system has a set of rules for object heights and sizes to calculate if it can be traversed (climbed) or used as cover (the third person version of the game was very reliant on using sticky cover controls to hide from the Alien).
CATHODE used a custom complex multilayered sound engine which mixed sound effects in real time during play to react to the current state of the environment around the player. This was primarily done by utilising six audio channels for each ambient soundtrack, being two channels each (left+right) for low, medium, and high tension. These channels would then be faded between at runtime to dynamically increase tension dependant on the game's state, while keeping the pace of the previous tension layer. The mixer would also create tension by lowering and raising the volume of different audio sets (such as player foley) to make players feel more vulnerable in certain situations. The idea was to mirror the player's focus to subconsciously draw attention to the threats without you noticing. During the Alien's frontstage "AreaSweep" as well as utilising the six channel method mentioned previously, the soundtrack would also be created on-the-fly from sets of audio stingers and premade track sections to enhance the tension of Alien encounters. Each map had a set of "flowgraphs" for mission sections and specific events within CAGE's audio editor.
RAD Telemetry was utilised within the engine to allow for performance debugging. Telemetry is a performance monitoring suite that shows detailed thread process data with little overhead. The static libraries for the performance monitoring were left in the press copies of Alien: Isolation, however later removed in a post-launch update. As well as Telemetry to monitor performance, the engine utilised its own crash reporter to track crash issues in builds. Crash data was collected and sent back to an internal database via cURL.
- The mod tools created to open Alien: Isolation's PAK files also work with Viking: Battle for Asgard due to CATHODE being a newer version of that engine.
- The deferred rendering that was added to Viking's engine for Isolation was first previewed at the 2012 "Develop Conference".
- The initial greenlight demo of Alien: Isolation ran in-engine on an early version of CATHODE.
- The original main menu for Alien: Isolation (for pre-release demos) included a boot logo for CATHODE, but this was cut from the retail version of the game. The boot logo can be seen at the top of this article.
Further information about the engine can be found at the following links: