# Doom Eternal - Atlan Modding

# Eternal Atlan Strings Modding

Atlan Mod Loader supports injecting data into Doom Eternal's binary language (blang) files.

#### Extracting Vanilla Strings

To extract Doom Eternal's vanilla string data, use [Atlan Resource Extractor](https://github.com/FlavorfulGecko5/EntityAtlan/releases/tag/Extractor) to extract resources of type `binaryFile`. This will dump the game's vanilla strings to CSV files. Each language has it's own blang file.

#### Creating String Mods

To setup a string mod for a particular language, add a new CSV file to your mod that matches the original .blang path.

For Example: to inject data into `binaryFile/strings/english.blang`

 your CSV path should be `binaryFile/strings/english.csv`

The file extension doesn't matter. It can be .csv, .txt, or anything else you prefer.

#### CSV Format

Atlan Mod Loader requires your CSV obey the following format: `#STRING_NAME "STRING TEXT"`

To summarize:

1. Your string name MUST start with a `#`
2. Your string text MUST be wrapped in quotes `"Like this"`
3. The following escape sequences are supported: `\n \r \\ \" \t`
4. OPTIONAL: You may have a comma between your string's name and text.
5. HIGHLY RECOMMENDED: Your string names should only use lowercase letters, underscores, and numbers

You may refer to the vanilla string CSV files as examples. These are all valid string CSVs that Atlan can load.

You can replace the content of existing strings or add new strings.

The following is a basic example CSV that replaces several strings found in the main menu.

```
#str_code_mainmenu_dlc1_name "THE ANCIENT CHUNGUS 1"
#str_code_mainmenu_dlc2_name "THE ANCIENT CHUNGUS 2"
#str_code_mainmenu_extras_name "SUPER COOL EXTRA STUFF"
#str_code_mainmenu_horde_name "HORSE"
```

#### Default CSV

Doom Eternal supports 13 different languages, each with it's own blang file. If you're only adding strings to your native language's blang, your custom strings will not exist when the game is played in other languages. To ensure parity between all languages, you may wish to add your untranslated strings to every blang file.

Atlan Mod Loader supports this with a special CSV: `binaryFile/strings/default.csv`

Strings in this CSV get added to all blang files that don't have their own CSV in the same mod.

For example: Let's say you have a mod with `binaryFile/strings/default.txt`

 and `binaryFile/strings/french.txt`

1. The data inside `french.txt` gets injected into the French blang
2. The data inside `default.txt` gets injected into every blang **except** French

This way, your mod can have a default/fallback CSV while being localized in specific languages.

#### Additional Information

To learn how to add colored text and other customization to your strings: see [String Customization](https://wiki.eternalmods.com/books/eternal-visual-modding/page/string-customization)

# Porting Legacy Mods to Atlan

<p class="callout danger">This page is a work in progress. The features discussed here are not publicly available and are subject to change.</p>

Atlan Mod Loader now supports DOOM Eternal, and will be replacing Eternal Mod Loader. Mods created for Eternal Mod Loader will not work out-of-the-box with Atlan. This page discusses all changes that need to be made to a mod zip for it to work with Atlan.

### Atlan Legacy Converter

To convert an Eternal Mod Injector zip to an Atlan zip, use Atlan Legacy Converter! This tool is built into Atlan Mod Packager. To use it:

1. Download [Atlan Mod Packager](https://github.com/FlavorfulGecko5/EntityAtlan/releases/tag/Extractor) and unzip it into your DOOM Eternal installation folder.
2. Drag and drop your Eternal Mod Injector zip files onto `AtlanModPackager.exe`
3. Output: For each zip file you convert, you'll receive an output zip with the name `<Original_Zip_Name>_AtlanPackage.zip`
4. Pay attention to the output log, named `packager_log.txt`. If any files failed to convert, or require manual conversion, the output log will tell you. If this is the case, proceed to the next section in this page.

Advanced users may wish to run the legacy converter through the command line. Here is an example of how to do this:

`AtlanModPackager.exe --gamedir "path_to_doom_eternal_folder" "zip_1.zip" "zip_2.zip"`

Any number of zip files may be specified.

### Manual Conversion

The overwhelming majority of legacy injector mods should convert to an Atlan zip without issue. However, some specific file types will require manual conversion. See the following table.

<table border="1" id="bkmrk-file-type-remarks-de" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 26.202%;"></col><col style="width: 73.796%;"></col></colgroup><tbody><tr><td class="align-center">**File Type**</td><td class="align-center">**Remarks**</td></tr><tr><td>Decls</td><td>Fully supported. New path is `decls/<path>.decl`</td></tr><tr><td>Entities</td><td>Fully supported. New path is `compfile/<path>.entities`</td></tr><tr><td>SWF Files</td><td>Fully supported. New path is `cswf/<path>.swf`</td></tr><tr><td>Strings JSON</td><td>Fully supported. New path is `binaryFile/<path>`</td></tr><tr><td>Eternal Mod JSON</td><td>Fully supported. New path is `atlanmod.txt`</td></tr><tr><td>Assets Info JSON</td><td>Manual conversion required. See below.</td></tr><tr><td>Static Model</td><td>Fully supported. New path is `model/<path>`</td></tr><tr><td>Audio: .wem</td><td>Fully supported. New path is `audio/<path>`</td></tr><tr><td>Audio: .opus</td><td>Manual conversion required. See below.</td></tr><tr><td>Images</td><td>Manual conversion rarely required. See below. New path is `image/<path>`

</td></tr><tr><td>Other Files</td><td>Presumably unsupported. Please discuss with tool creators.

</td></tr></tbody></table>

#### Converting Assets Info JSONs

Atlan uses a completely different format for it's Assets Info. You must manually convert your Assets Info JSON files to this new format. See [this page](https://wiki.eternalmods.com/books/dark-ages-modding/page/dark-ages-assets-info) for instructions.

#### Converting OPUS Audio Files

Atlan Mod Loader cannot load OPUS audio files. In order to load legacy SFX audio mods with Atlan, you must convert your OPUS files to WEMs.

1. Convert your OPUS file back to a WAV. Tools like Audacity can do this.
2. Use WWise to convert your WAV to a WEM. See [this page](https://wiki.eternalmods.com/books/eternal-audio-modding/page/creating-audio-mods).
3. The new path of your file in your mod zip should be `audio/<path>.wem`

#### Converting Image Files

Atlan Legacy Converter will successfully convert the majority of texture files. However, some files have ambiguous names that must be manually resolved. To do this:

1. Extract the texture file from your Legacy zip
2. Rename the file to have the exact extension metadata of the file you want to replace. Use resource explorer tools like [Valen](https://github.com/jandk/valen/releases) to identify the correct extension metadata.
3. Put the image into a new zip file, keeping the same path as it had in the legacy zip. Convert that zip with Atlan Legacy Converter.