Jump to content

How to Actually Mod Aliens: Dark Descent


Recommended Posts

Step 1:

Get the project files here: https://github.com/korgano/Dark-Descent-Reference-Project/releases/tag/v1.0

This is an updated uProject based on the latest version of Aliens: Dark Descent, plus the following:

  • r457 mod loader and mod source code (already publicly shared, mod makers incommunicado)
  • Rummys Aliens sound assets (https://www.nexusmods.com/aliensdarkdescent/mods/29 - tried to use them, brain exploded)
  • Dummy and/or modded files I created (to give you a starting point)

Step 2:

Install Epic Game Store and Unreal Engine 4.27.2.

Yes, it sucks, but that's what you gotta do.

You might be able to avoid installing EGS on Linux, but I'm not familiar with that alternative Unreal Engine install method.

Step 3:

Install Visual Studio 2022.

Download the attached .vsconfig file and open it in Visual Studio Installer. This should hopefully trigger downloads of all components required to run UE4 related projects.

Step 5:

Open the ASF.uproject file in Unreal Engine 4.27.2, and let it run through rebuilding the project.

Step 6:

Watch the video at the provided time code (12:14 - 13:05) to setup Unreal Engine to generate pak chunks:

 

While in the Project settings, make sure to enable Zen IO store, because Aliens: Dark Descent uses it.

(For folks who don't like video, the last section of this guide shows off the instructions.)

 

Next post is rules for naming patch mods.

In the meantime, check out these Unreal Modding tutorials:

https://github.com/Dmgvol/UE_Modding

.vsconfig

Link to comment
Share on other sites

How to name mods

Naming is very important for Dark Descent mods, at least ones that don't utilize the r457 Mod Loader.

These mods are literally patching the game and are referred to as patch mods from here on out.

 

Essentials:

The file name of every .pak/.ucas/.utoc file for your mod MUST end in "_P".

This tells the game's Unreal Engine that the files are a patch, which then triggers updating in-game content.

 

Things to Consider:

  • If you're using the r457 Mod Loader to initialize your mod*, naming is less of a concern, because the loader should take care of load order issues.
  • Patch mods load based on the alphabetical order of the filenames.
  • To minimize load order issues, use the prefix zMod when naming your mods.
  • If you're really worried about files being overwritten by multiple patch mods, use prefix zzMod when naming your mod.

 

*If you do manage to get that to work, please write a tutorial on how to do it!

Link to comment
Share on other sites

How to Data Mine Aliens: Dark Descent

Step 1:

Follow the Creating Game Preset instructions here: https://github.com/Dmgvol/UE_Modding/blob/main/TheBasics/ExportingFModel.md

Step 2:

Once game loads into Fmodel, the hard part is going to be going through the various .UCAS files to find what you specifically want.

The vast majority of things are going to be in pakchunk0, which is 5+ GB.

 

Places to check for data:

UI Text: Content/StringTable

Rooms (Armory, etc...): Content/Blueprint/BaseManagement

Damage: Content/Blueprint/Data/Damage

Subfolders: Skill, Weapon

Effects (stat changes, etc...): Content/Blueprint/Effect

Subfolders: Attack, Perks, Traits, Upgrades

UI Icons: Content/Texture/UI/Icons

Subfolders: Attributes, Capacities, Inventory, Upgrades

Marine Perks: Content/Blueprint/MarineAttributes

Subfolders: Common, Weapons

Marine Leveling table: Content/Blueprint/MarineLeveling

(Negative) Traits:  Content/Blueprint/Traits

Subfolder: PDAs

Upgrades: Content/Blueprint/Upgrades

Skills: Content/Blueprint/Skills

Subfolders: Decoy, TacticalDrone

Xenomorphs: Content/Blueprint/AlienClasses

Subfolders: Egg, InvestigationCurves, Queen

Humanoid character classes + Tactical Drone: Content/Blueprint/MarineClasses

 

Step 3:

Extract data or assets. JSON is the format for data, PNG for textures, and audio is WAV.

All data goes to Fmodel's export folder, which will contain ASF (the game's project name), then a Content folder containing various folders.

NOTE: This combines folders of the same name from different chunks, which may cause issues when you generate mod files.

Step 4:

Use Agent Ransack or any other search tool that allows you to search the contents of files in a directory. Some keywords to search for:

  • Stat.
  • Resource.
  • Multiplier
  • OnKill

Step 5 (Optional):

Use your search tool to search the source code content in the ASF_Updated Source folder.

Link to comment
Share on other sites

  • 3 weeks later...

Booleans in DataAssets that are Invisible when set to TRUE

For some reason, the way the game is set up, various booleans (options with True/False settings) do NOT appear in Fmodel JSON dumps if set to TRUE. This means modders can create bugs by accident, due to not knowing that they should even assign a value to that boolean. Known examples include:

DamagePrimaryDataAsset
CanStopAction
 
Skill DataAssets
CanBeLaunchedIndoor
CanBeUsedInIndoorSublevel
 
This list will be updated as further examples are discovered.
Link to comment
Share on other sites

Changing Mission Difficulty Via Spawn Editing

  1. Make sure you have Dark Descent Reference Project v1.1 or better.
  2. Open the ASF_Updated uProject in Unreal Engine 4.27
  3. Navigate to Blueprint/Data/Missions
  4. Select the mission folder you want to modify
  5. Inside will be 1-4 sublevel data assets. Select the one you want to modify.

These are the settings that control the spawns:

"ExplorationAlienLimits" - X value = minimum, Y value = maximum (optional). Controls the number of respawning xenomorphs on the map.
"ExplorationSpawnDelayBounds" - X value = minimum, Y value = maximum. Controls the delay (in seconds) for xenomorph respawn after death.
"NumberOfPatrollingDronesAtStart" - Controls the number of xenomorphs initially on the map. As far as I know, they do not respawn.
"NbMinHumanoidEnnemyBeforeStartingRespawn" - Controls when human enemies respawn. Once the amount of human enemies goes below this number, respawn is triggered.
"TimerBeforeStartingRespawnHumanoidEnnemy" - Controls how much time (in seconds) passes before starting to respawn human enemies.
"DelayBetweenTwoRespawn" - Controls how much time (in seconds) passes between two respawns. Unclear if this is only for human enemies.

 

Make Missions Easier

  • ExplorationAlienLimits: Reduce X and Y values.
  • ExplorationSpawnDelayBounds: Increase X and Y values.
  • NumberOfPatrollingDronesAtStart: Reduce to 1 or 0.
  • NbMinHumanoidEnnemyBeforeStartingRespawn: Reduce to 1.
  • TimerBeforeStartingRespawnHumanoidEnnemy: Increase value.
  • DelayBetweenTwoRespawn: Increase value.

Make Missions Harder

  • ExplorationAlienLimits: Increase X and Y values, or set high X value and leave Y blank.
  • ExplorationSpawnDelayBounds: Reduce X and Y values or leave blank.
  • NumberOfPatrollingDronesAtStart: Increase value.
  • NbMinHumanoidEnnemyBeforeStartingRespawn: Increase to defaults (see below).
  • TimerBeforeStartingRespawnHumanoidEnnemy: Reduce to below 60 seconds.
  • DelayBetweenTwoRespawn: Reduce value or set to 0.

 

Base Game Settings:

The stock values for Aliens: Dark Descent mission spawns are available on the r/AliensDarkDescent subreddit here:

The data assets included in the latest version of the Reference Project come with my planned spawn tweaks for Limited Dark Descent Rebalance.

NOTE: Not all mission sublevel data assets have been assigned a Chunk number. This is because the LDDR implementation is mostly focused on the missions with humanoid enemies and Dead Hills.

If you wish to include all missions, make sure to assign all sublevel files to the same Chunk (17 or some other number).

 

Enemy Swapping

This is theoretically possible for human enemies in mission sublevel data assets. I have NOT experimented with this, and cannot report if this causes problems.

At minimum, I would NOT attempt to mix enemy and squad types due to the included files being dummies. Only use Darwin Era enemies with Darwin Era squad, and Weyland enemies with Weyland squad.

 

Link to comment
Share on other sites

  • 4 weeks later...

How to Use uAssetGUI to make Aliens: Dark Descent Mods

You WILL need Unreal Engine 4.27 to complete this, as well as the Dark Descent Reference Project (https://github.com/korgano/Dark-Descent-Reference-Project/releases).

If you want to skip steps 1 and 2, go here to download extracted uAssets:
https://github.com/korgano/Dark-Descent-Reference-Project/blob/main/DarkDescent_ZenToolsDump_Data.zip
https://github.com/korgano/Dark-Descent-Reference-Project/blob/main/DarkDescent_ZenToolsDump_Effect.zip
https://github.com/korgano/Dark-Descent-Reference-Project/blob/main/DarkDescent_ZenToolsDump_TacticalMode.zip

Step 1:
Download Zentools-UE4 and read the instructions: https://github.com/WistfulHopes/ZenTools-UE4
Use the filter

/Game/Content/[Rest of Path to Whatever]


Step 2:
Extract uAssets. The most mod relevant uAssets are contained in the Blueprint/Data path (Enemies, items, etc...). Wait for the program to go through all the game's UTOC files.

Step 3:
Copy the uAssets you intend to mod to specific directory. The file path should look like this: SomeFolder\ModName\ASF\Content\Blueprint\Directory\Directory.

If you're not sure what the file path should be, get Fmodel and start digging around /Contents/Pak/pakchunk0-WindowsNoEditor.utoc to get an idea of where things are.

Step 4:
Download the latest version of uAssetGUI.

Step 5:
Open uAssetGUI and navigate to the folder containing the uAssets you want to edit.

Step 6:
Make sure you save whenever you are done with edits, as there is no autosave when switching between files.

Step 7:
Open a terminal in the whatever your Unreal Engine 4 directory is. Example: D:\EGS\UE_4.27\Engine\Binaries\Win64

Step 8:
Create an empty PAK file with the following command:

.\UnrealPak.exe [Folder You'll Save To]\[Mod File Name].pak


Step 9:
Open your Dark Descent Unreal Project file and create two text files. The first will contain the commands for generating the UTOC/UCAS files, in this format:

-Output=[Folder You'll Save To]\[Mod File Name].utoc -ContainerName=[Mod File Name] -ResponseFile=[File Path to TXT file with uAsset list, requires quotes]


Example:

-Output=D:\EGS\Projects\ASF_Updated\Saved\StagedBuilds\ASF\Content\Paks\zModLDDRupgrades_P.utoc -ContainerName=zModLDDRupgrades_P -ResponseFile="D:\EGS\Projects\ASF_Updated\ASF_Upgrades_resp.txt"


The second file is a list of the uAssets that should be packaged into the mod:

"[Folder Containing uAssets]\[Filename].uasset" "../../../ASF/Content/Blueprint/Data/[Specific Folder]/[Filename].uasset" -compress


Example:

"D:\AliensDarkDescent\zModLDDR_Upgrades_P\ASF\Content\Blueprint\Data\Upgrades\PDA_Upgrade_TacticalDroneWelder.uasset" "../../../ASF/Content/Blueprint/Data/Upgrades/PDA_Upgrade_TacticalDroneWelder.uasset" -compress


Save the first file with whatever name you want, but MAKE SURE the second file has the same name with "-response" at the end. This to make sure that you keep the files associated with specific mods.

Step 10:
Take this template and find all the filepaths required for it:

[Filepath to Your Unreal Engine Folder]\UE_4.27\Engine\Binaries\Win64\UE4Editor-Cmd.exe [Filepath to Dark Descent Project]\ASF_Updated\ASF.uproject -run=IoStore -CreateGlobalContainer=[Filepath to Dark Descent Project]\ASF_Updated\Saved\StagedBuilds\WindowsNoEditor\ASF\Content\Paks\global.utoc -CookedDirectory=[Filepath to Folder Containing uAssets, Must NOT end in /] -Commands=[Filepath to First TXT File, requires quotes] -CookerOrder=[Filepath to Dark Descent Project]\ASF_Updated\Build\WindowsNoEditor\FileOpenOrder\CookerOpenOrder.log -TargetPlatform=WindowsNoEditor -stdout -UTF8Output


Example:

D:\EGS\UE_4.27\Engine\Binaries\Win64\UE4Editor-Cmd.exe D:\EGS\Projects\ASF_Updated\ASF.uproject -run=IoStore -CreateGlobalContainer=D:\EGS\Projects\ASF_Updated\Saved\StagedBuilds\WindowsNoEditor\ASF\Content\Paks\global.utoc -CookedDirectory=D:\EGS\Projects\ASF_Updated\Saved\Cooked\WindowsNoEditor -Commands="D:\EGS\Projects\ASF_Updated\ASF_Upgrades.txt" -CookerOrder=D:\EGS\Projects\ASF_Updated\Build\WindowsNoEditor\FileOpenOrder\CookerOpenOrder.log -TargetPlatform=WindowsNoEditor -stdout -UTF8Output


Step 11:
Paste the completed command into the terminal and execute.

Step 12:
Check the generated files. If the file size for the UTOC/UCAS is 1 KB, check the terminal log to see if there are file path errors. This is usually caused by putting a / at the end of the path to the folder containing your uAssets, or putting your uAssets directly in the [ModName] folder.

Step 13:
Copy and paste the Pak/UTOC/UCAS into the game's Content/Pak folder, then boot the game to verify that the changes are happening.

Step 14:
If your mods are functional, zip up the files and upload to your preferred site.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...