CathodeLib 0.9.1
dotnet add package CathodeLib --version 0.9.1
NuGet\Install-Package CathodeLib -Version 0.9.1
<PackageReference Include="CathodeLib" Version="0.9.1" />
<PackageVersion Include="CathodeLib" Version="0.9.1" />
<PackageReference Include="CathodeLib" />
paket add CathodeLib --version 0.9.1
#r "nuget: CathodeLib, 0.9.1"
#:package CathodeLib@0.9.1
#addin nuget:?package=CathodeLib&version=0.9.1
#tool nuget:?package=CathodeLib&version=0.9.1
<img src="https://i.imgur.com/TZNGZVA.jpg" width="100%">
CathodeLib - Alien: Isolation C# Library
CathodeLib is an open source library providing functionality to handle formats from the Cathode game engine, for modding Alien: Isolation. Used to power OpenCAGE!
Available as a NuGet package, or alternatively just include this repo as a submodule in your project!
All parsers inherit from a base CathodeFile
class which provides:
- A static
Implementation
flag, defining if the parser supportsCREATE
,LOAD
, and/orSAVE
functionality for the file. Parsers which support all three have the ability to generate files from scratch. - A
Loaded
bool, which is true if the parser has populated its values from a pre-existing file that it has loaded. If false, the parser is creating a new file on save. - A
Filepath
string, which is the filepath that the parser is using to either load or save the file. - A
Save
function, which will save the file out if the parser has theSAVE
flag. This function can optionally be given a new filepath to save the file to. Returns false if saving fails. - Events for
OnLoadBegin
,OnLoadSuccess
,OnSaveBegin
,OnSaveSuccess
which fire at load/save start and successful completion respectively, with the appropriate filepath as an arg.
Most parsers provide access to the file's content via an Entries
parameter, however this can vary per implementation.
Note: in debug mode the parsers will all fail hard, however in release mode all load/save calls are wrapped in try/catch statements.
Parsers currently available in CathodeLib:
CATHODE.AlphaLightLevel
handles levelWORLD/ALPHALIGHT_LEVEL.BIN
files- This is a A16B16G16R16F image with a specified resolution, baking alpha light data for the level
CATHODE.AnimationStrings
handlesANIM_STRING_DB.BIN
andANIM_STRING_DB_DEBUG.BIN
files within `ANIMATION.PAK- This is a database of hashed animation-related strings, and their associated hashes
CATHODE.AnimClipDB
handlesANIM_CLIP_DB.BIN
files withinANIMATION.PAK
- This is a database of animation clips available by character type (WIP)
CATHODE.BML
handles any.BML
files- Get/set content as an
XmlDocument
viaBML.Content
- Get/set content as an
CATHODE.CharacterAccessorySets
handles levelWORLD/CHARACTERACCESSORYSETS.BIN
files- This is a collection of metadata for Character entities within the level (e.g. gender, build, assets, etc)
CATHODE.CollisionMaps
handles levelWORLD/COLLISION.MAP
files- This defines COLLISION_MAPPING resource data for collision barriers, including zone metadata
CATHODE.Collisions
handles levelWORLD/COLLISION.BIN
files- This defines weighted collision data for character hitboxes
CATHODE.Commands
handles levelWORLD/COMMANDS.PAK
and/orWORLD/COMMANDS.BIN
files- This consists of
Composite
scripts which hold variousEntity
types for logicFunctionEntity
= functions which execute functionality, with parameters and links to childEntity
objectsVariableEntity
= variables which can be used externally as parameters on an instancedComposite
via aFunctionEntity
ProxyEntity
= a proxy of aFunctionEntity
within anotherComposite
, useful for acting on events in another compositeOverrideEntity
= an override of a parameter value on an entity within an instancedComposite
in thisComposite
- A
Utils
member provides various utilities for working with Commands data via data tables appended to the saved file
- This consists of
CATHODE.CustomCharacterAssetData
handles theCHR_INFO/CUSTOMCHARACTERASSETDATA.BIN
file- This defines the tints and decals that character asset types use
CATHODE.CustomCharacterConstrainedComponents
handles theCHR_INFO/CUSTOMCHARACTERCONSTRAINEDCOMPONENTS.BIN
file- This defines the character parameters that character component types use
CATHODE.CustomCharacterInfo
handles theCHR_INFO/CUSTOMCHARACTERINFO.BIN
file- This defines base character presets, including skeletons and accessories
CATHODE.EnvironmentAnimations
handles levelWORLD/ENVIRONMENT_ANIMATION.DAT
files- This defines environmental animation data (WIP)
CATHODE.EnvironmentMaps
handles levelWORLD/ENVIRONMENTMAP.BIN
files- This maps instanced entities with environment map textures
CATHODE.Lights
handles levelWORLD/LIGHTS.BIN
files- This defines various lighting data for instanced entities (although, modifying it appears to have no visual impact)
CATHODE.MaterialMappings
handles levelWORLD/MATERIAL_MAPPINGS.PAK
files- This defines material remappings, used for modifying materials on instanced entities (WIP)
CATHODE.Materials
handles levelRENDERABLE/LEVEL_MODELS.MTL
&LEVEL_MODELS.CST
files- This defines material data, including texture pointers and constant buffers (WIP)
CATHODE.EXPERIMENTAL.MissionSave
handles*.AIS
files- This handles save file data (WIP)
CATHODE.Models
handles levelRENDERABLE/LEVEL_MODELS.PAK
&MODELS_LEVEL.BIN
files- This contains model mesh data in a CS2 format
CATHODE.MorphTargets
handles levelWORLD/MORPH_TARGET_DB.BIN
files- This defines morph data for faces (WIP)
CATHODE.Movers
handles levelWORLD/MODELS.MVR
files- This defines instance specific info for entities, including constant buffers and renderables (WIP)
CATHODE.EXPERIMENTAL.NavigationMesh
handles levelWORLD/STATE_*/NAV_MESH
files- This contains the navmesh for the level state, with associated properties (WIP)
CATHODE.PAK2
handlesUI.PAK
andANIMATIONS.PAK
files- This allows parsing of the PAK2 archive format, containing embedded files
CATHODE.PathBarrierResources
handles levelWORLD/PATH_BARRIER_RESOURCES
files- This defines the navmesh barrier resources (WIP)
CATHODE.PhysicsMaps
handles levelWORLD/PHYSICS.MAP
files- This defines DYNAMIC_PHYSICS_SYSTEM resource data for composite instances with physics systems
CATHODE.EXPERIMENTAL.ProgressionSave
handlesPROGRESSION.AIS
files- This handles progression save file data (WIP)
CATHODE.RadiosityInstanceMap
handles levelRENDERABLE/RADIOSITY_INSTANCE_MAP.TXT
files- This contains mappings between lightmap transforms in RADIOSITY_RUNTIME to resource indexes
CATHODE.RenderableElements
handles levelWORLD/REDS.BIN
files- This defines all renderable elements in a level - a model index with associated material index and count
CATHODE.Resources
handles levelWORLD/RESOURCES.BIN
files- This defines all available resources within the level
CATHODE.Shaders
handles levelRENDERABLE/LEVEL_SHADERS_DX11.PAK
&LEVEL_SHADERS_DX11_BIN.PAK
&LEVEL_SHADERS_DX11_IDX_REMAP.PAK
files- This defines all shaders within the level and additional metadata (WIP)
CATHODE.SkeleDB
handles theANIM_SYS/SKELE/DB.BIN
file withinANIMATION.PAK
- This defines all available skeletons and mappings
CATHODE.SoundBankData
handles levelWORLD/SOUNDBANKDATA.DAT
files- This defines all soundbanks available to be utilised within the game
CATHODE.SoundDialogueLookups
handles levelWORLD/SOUNDDIALOGUELOOKUPS.DAT
files- This defines a lookup table for animation/sound hashes within soundbanks
CATHODE.SoundEnvironmentData
handles levelWORLD/SOUNDENVIRONMENTDATA.DAT
files- This defines all reverb types that are used within the level
CATHODE.SoundEventData
handles levelWORLD/SOUNDEVENTDATA.DAT
files- This defines all sound events available to be utilised within the game
CATHODE.SoundFlashModels
handles levelWORLD/SOUNDFLASHMODELS.DAT
files- This maps flash texture resource IDs with the model IDs that use them within the level
CATHODE.SoundLoadZones
handles levelWORLD/SOUNDLOADZONES.DAT
files- This specifies all soundbanks that are used within the level
CATHODE.SoundNodeNetwork
handles levelWORLD/SOUNDNODENETWORK.DAT
files- This defines the layout of the sound node network within the level, used for sound propagation (WIP)
CATHODE.TextDB
handles*.TXT
files withinTEXT
directories- This defines a database of subtitles, which are saved per language
CATHODE.Textures
handles levelWORLD/LEVEL_TEXTURES.ALL.PAK
&LEVEL_TEXTURE_HEADERS.ALL.BIN
files- This contains all textures used within the level with additional metadata
CATHODE.EXPERIMENTAL.Traversals
handles levelWORLD/STATE_*/TRAVERSAL
files- This contains traversal metadata for the level (WIP)
Check out a full overview of the Commands structure on the Wiki, and follow this handy guide to create your first script!
<p align="center">CathodeLib is in no way related to (or endorsed by) Creative Assembly or SEGA.</p>
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- System.Buffers (>= 4.5.1)
- System.Memory (>= 4.5.4)
- System.Numerics.Vectors (>= 4.5.0)
- System.Runtime.CompilerServices.Unsafe (>= 5.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
0.9.1 | 126 | 7/15/2025 |
0.9.0 | 133 | 7/13/2025 |
0.8.3 | 248 | 5/13/2025 |
0.8.2 | 179 | 4/24/2025 |
0.8.1 | 114 | 3/29/2025 |
0.8.0 | 110 | 3/29/2025 |
0.7.2 | 96 | 3/22/2025 |
0.7.1 | 157 | 10/24/2024 |
0.7.0 | 133 | 10/24/2024 |
0.6.0 | 323 | 2/7/2024 |
0.5.1 | 635 | 8/3/2023 |
0.5.0 | 644 | 4/24/2023 |
0.4.0 | 672 | 3/7/2023 |
0.3.3 | 805 | 1/8/2023 |
0.3.2 | 779 | 1/3/2023 |
0.3.1 | 765 | 1/2/2023 |
0.3.0 | 731 | 1/2/2023 |
0.2.0 | 910 | 7/29/2022 |
0.1.1 | 1,120 | 11/15/2020 |