Skip to main content

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:

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:

  1. Copy it from the vanilla resources into your mod folder
  2. 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:

  1. Have a folder named rs_streamfile@generated@decls@strings
  2. 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.

  • Decl mods require a minimum version of 1
  • Entitydef and Logic Decl mods require a minimum version of 2
  • Mapentities mods require a minimum version of 4

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!