Making Mods: Getting Started
A high-level overview of what's possible with the Atlan Modding Tools. If you have previous experience modding Doom Eternal, this page explains the critical differences between the two games.
Dark Ages vs Eternal
Almost no differences exist between the Dark Ages and Eternal file system. However, major discoveries have simplified the modding process. Massive issues Eternal modders faced are irrelevant in Dark Ages.
| Eternal | Dark Ages |
| Mod loader replaces the files inside of the vanilla game archives. | Mod loader builds it's own resource archive. The vanilla game archives are untouched |
| Modders had to know what archives contained which assets, and replicate this setup in their mods. | Not an issue. The modded resource archive is loaded globally, so modded assets will always be usable. Modders don't need need to consider where their assets should be stored. |
| Adding new assets to an archive, instead of replacing existing assets, could cause instability. | Not an issue. Add as many new assets as you want! |
| Game updates frequently broke mods due to resource archive priorities changing. | Not an issue. The modded resource archive will always have the highest priority. |
This doesn't make your mods immune to game updates. When a game update edits a vanilla file, you should update your mods to use that new version. Otherwise, your mod will be outdated because it uses a previous update's file as a baseline. The consequences will vary significantly depending on the mod. It may range from nothing happening, to game balance being off, to core mechanics not working, to game crashes.
What vanilla files are modified?
In total, Atlan Mod Loader edits 3 vanilla files:
DOOMTheDarkAges.exe
base/packagemapspec.json
base/meta.resources
The modded resource archive is base/modarchives/common_mod.resources
What is Possible?
Atlan Mod Loader supports modding the following types of files:
- Decl Mods - (Located in
rs_streamfile/generated/decls) - Entitydefs - See Serialization and Atlan Mod Packager
- Logic Decls - See Serialization and Atlan Mod Packager
- Only existing values can be edited. You cannot create new variables, nodes, pins, or otherwise modify the structure of the graph. Attempting to do so can cause game crashes. These restrictions exist due to the
logicObjectDescriptorfiles, which are pre-compiled versions of the decls.
- Only existing values can be edited. You cannot create new variables, nodes, pins, or otherwise modify the structure of the graph. Attempting to do so can cause game crashes. These restrictions exist due to the
- Map Entities - See Serialization and Atlan Mod Packager and Dark Ages Level Modding
Building Your Mod
Before building your mods, you must use Atlan Resource Extractor to obtain the game's files. Please thoroughly read the information on the download page and in it's configuration file.
To add a vanilla file to your mod:
- Copy it from the vanilla resources into your mod folder
- Replicate the filepath produced by Atlan Resource Extractor
Example: Let's say you copy the following vanilla file into your mod folder
rs_streamfile/generated/decls/string/ui/mainmenu/collectible_viewer.decl
You must replicate this filepath in your mod folder. This should be it's path when your mod is zipped up.
Fake Directories
A goal of Atlan Mod Loader is improving the developer experience when making mods. One way it does this, is by making directories optional. Instead of creating literal directories, add an @ symbol in the filename. The mod loader translates these symbols into directories for you!
Example: Let's say we want to make a mod using the file:
rs_streamfile/generated/decls/string/ui/mainmenu/collectible_viewer.decl
This file is nested inside of 6 directories! That's a real pain to create and navigate through each time you need to open the file! Instead of creating those directories, just name the file:
rs_streamfile@generated@decls@string@ui@mainmenu@collectible_viewer .decl
You can also mix and match! For Example:
- Have a folder named
rs_streamfile@generated@decls@strings - Name the file
ui@mainmenu@collectible_viewer.decl
Find a setup and style most convenient for you and the mod you're making!
Mod Config. File
Atlan Mod Loader uses darkagesmod.txt as a mod's configuration file. Including a config in your mod zip is optional, but highly recommended!
Here is an example config. file. If you've created mods for DOOM Eternal, most of this will be familiar.
modinfo = {
name = "Your Awesome Mod"
author = "Your Name Here"
description = "Your Mod Description"
version = "3.0"
loadPriority = 1
requiredVersion = 1
}
aliasing = {
"my_first_decl.decl" = "rs_streamfile/generated/decls/ability_dash/my_ability_dash_decl.decl"
"my_second_decl.decl" = "rs_streamfile/generated/decls/ability_dash/default.decl"
}
| Property Name | Description |
|
name |
Your mod's name. Displayed in the Mod Manager |
| author | Author information. Displayed in the Mod Manager |
| description | Your mod's description. Displayed in the Mod Manager |
| version | Your mod's version. Displayed in the Mod Manager |
| loadPriority | If multiple mods edit the same file, their load priority is used to help resolve conflicts. Mods with a lower load priority override mods with a higher load priority |
| requiredVersion |
The version of Atlan Mod Loader you must be running to load this mod.
|
The aliasing block is optional. Are the names of your mod files extremely long and convoluted? Name them something simpler, then use your config. file to declare what's it name should be when mods are loaded!
The format for an alias is "Real Path In Zip File" = "Game Asset Path"
Example Mod
I've created a sample mod that illustrates the "Fake Directory" and "Aliasing" concepts. Download it here to get a feel for these powerful features!
No Comments