Eternal - Miscellaneous

Anything that does not fit in the other categories go here. Covers FX/Particles, Backups, etc.

Backups

Information about how to backup various aspects of DOOM Eternal.

Backups

Backup Save Files

This technique essentially gives the player infinite save slots for each campaign.

Finding Save Files

Find your remote folder for DOOM Eternal, ex: C:\Program Files (x86)\Steam\userdata\#########\782330\remote
The ######### will be your Steam ID.

You should now see all of your saves and profile data as folders.

Save Folders

The following are valid save folders:
GAME-AUTOSAVE0
GAME-AUTOSAVE1
GAME-AUTOSAVE2
DLC1-AUTOSAVE3
DLC1-AUTOSAVE4
DLC1-AUTOSAVE5
DLC2-AUTOSAVE6
DLC2-AUTOSAVE7
DLC2-AUTOSAVE8
HORDE-AUTOSAVE9
PROFILE

GAME = Base Campaign
DLC1 = The Ancient Gods Part 1
DLC2 = The Ancient Gods Part 2
HORDE = Horde Mode
PROFILE = DOOM Level Data

You may not have all of these folders. That means you do not have a saved game for every slot.
However, you should always have a PROFILE folder.

Backing Up Save Files

Backups

Backup DOOM Levels

This technique also allows the player to modify their DOOM level freely, as it is stored client-side.

Your DOOM Level and Event XP are not the same thing. A DOOM Level measures how much you have played the game and essentially serves no value other than prestige.

Finding Your DOOM Level File

This step is not required, but it provides an alternative way to copy your save files and profile data.
This is also relevant to Backup Save Files.

Find your remote folder for DOOM Eternal, ex: C:\Program Files (x86)\Steam\userdata\#########\782330\remote
The ######### will be your Steam ID.

You should now see all of your saves and profile data as folders. PROFILE is the only folder you should worry about. It contains profile.bin which stores your DOOM Level.

Profile Tools

idProfile by emoose - Download
De-serializes the profile.bin file into a readable JSON format.

DOOMSaveManager by GoobyCorp - Download
Makes exporting and importing saves easier.

Instructions

  1. Unzip both files in the same folder
  2. Launch DOOM Save Manager.exe -> Continue if prompted with a warning -> Action: Export Backup -> OK -> Save the backup.zip file somewhere safe
  3. Extract PROFILE\profile.bin -> Drag & Drop it onto idProfile.exe -> profile.bin.json will now be created -> Open the file with a text editor
  4. CTRL + F -> Type: experienceGained -> Find Next and look in the line directly below experienceGained -> If it is present, change: "Int8" to "Int32" -> Change the current value after "Int32" to whatever you want -> Save
  5. Drag & Drop profile.bin.json into idProfile.exe -> profile.bin.json.bin will now be created -> Rename the file to profile.bin -> Delete the old file if need-be
  6. Open: backup.zip -> Replace the old profile.bin with the new one
  7. Launch DOOM Save Manager.exe -> Continue if prompted with a warning -> Action: Import Backup -> Select: backup.zip -> OK

DOOM Level Key - Reference Image

1 Level = 10,000 XP
250 Levels = 2,500,000 XP  |  1 Echelon (Stone Star)
2250 Levels = 22,500,000 XP  |  9 Echelon (Bronze Star)
4250 Levels = 42,500,000 XP  |  17 Echelon (Silver Star)
6250 Levels = 62,500,000 XP  |  25 Echelon (Gold Star)
8250 Levels = 82,500,000 XP  |  33 Echelon (Platinum Star)
10250 Levels = 102,500,000 XP  |  41 Echelon (Slayer Star)
12000 Levels = 122,500,000 XP  |  48 Echelon (Max Level)

Each star is 250 Levels, with 8 stars being 2000 Levels (20,000,000 XP) for each Echelon.
You can only have a maximum of 8 stars before you unlock the next tier.

You cannot level up past 48 Echelon.

EntityDefs

This chapter contains all the entitydef decls that can be spawned by the SnapHak/BubbleBear sh_spawn command, or the Meath00k chrispy command.

EntityDefs

EntityDef/AI

Each AI may only be spawned in their respected campaign AND anything released after.
For example, Spirits can be spawned in any TAG1 or TAG2 level, but not in the Base Campaign.

Base Campaign

ai/ambient/buffpod
ai/ambient/tentacle
ai/ambient/zombie_cueball
ai/fodder/carcass
ai/fodder/gargoyle
ai/fodder/imp
ai/fodder/lostsoul
ai/fodder/prowler
ai/fodder/soldier_blaster
ai/fodder/soldier_shield
ai/fodder/zombie_maykr
ai/fodder/zombie_t1_hell
ai/fodder/zombie_t1_scientist
ai/fodder/zombie_tier_1
ai/fodder/zombie_tier_3
ai/heavy/arachnotron
ai/heavy/cacodemon
ai/heavy/dreadknight
ai/heavy/hellknight
ai/heavy/mancubus_fire
ai/heavy/mancubus_goo
ai/heavy/painelemental
ai/heavy/pinky
ai/heavy/pinky_spectre
ai/heavy/revenant
ai/heavy/whiplash
ai/heavy/whiplash_spectre
ai/superheavy/archvile
ai/superheavy/baron
ai/superheavy/doom_hunter
ai/superheavy/marauder
ai/superheavy/marauder_wolf
ai/superheavy/tyrant

The Ancient Gods - Part 1

ai/ambient/spirit
ai/ambient/super_tentacle
ai/ambient/turret
ai/heavy/bloodangel
ai/superheavy/baron_armored

The Ancient Gods - Part 2

ai/ambient/demonic_trooper
ai/fodder/imp_stone
ai/fodder/prowler_cursed
ai/fodder/soldier_chaingun
ai/fodder/zombie_t1_screecher

Bosses

Most bosses may only be spawned in the level they appear in.

DOOM Hunter Base
ai/superheavy/doomhunter_gold_stage1
ai/superheavy/doomhunter_gold_stage2
ai/superheavy/doomhunter_stage1
ai/superheavy/doomhunter_stage2
Sentinel Prime
ai/boss/gladiator_gold
ai/boss/gladiator
Urdak
ai/fodder/maykr_minion
ai/boss/khan_maykr
Final Sin
ai/boss/icon_of_sin_base
ai/boss/icon_of_sin_stage2
The Blood Swamps
ai/friendly/wolf
The Holt
ai/ambient/spirit_samuel
ai/boss/samuel
The Dark Lord
ai/boss/darklord
ai/boss/darklord/summoned/arachnotron
ai/boss/darklord/summoned/baron
ai/boss/darklord/summoned/hellknight
ai/boss/darklord/summoned/mancubus_fire
ai/boss/darklord/summoned/marauder
ai/boss/darklord/summoned/marauder_wolf
ai/boss/darklord/summoned/painelemental
ai/boss/darklord/summoned/revenant
ai/boss/darklord/summoned/tyrant
ai/boss/darklord/summoned/whiplash
EntityDefs

EntityDef/Pickup

Not all pickups can be spawned in every level. They can only be spawned in the levels they normally appear in.
For example, a Mega Health cannot be spawned in Hell on Earth.

Base Campaign

pickup/armor/large
pickup/armor/medium
pickup/armor/small
pickup/health/large
pickup/health/medium
pickup/health/small
pickup/powerup/berserk
pickup/powerup/onslaught
pickup/powerup/overdrive

The Ancient Gods - Part 1

pickup/extra_life/extra_life_2up

The Ancient Gods - Part 2

pickup/ammo/hammer

Classic Mode

pickup/weapon/bfg
pickup/weapon/chaingun
pickup/weapon/crucible
pickup/weapon/double_barrel
pickup/weapon/gauss_rifle
pickup/weapon/hammer
pickup/weapon/heavy_cannon
pickup/weapon/plasma_rifle
pickup/weapon/rocket_launcher
pickup/weapon/shotgun

Mission-Specific

pickup/ammo/bfg
pickup/ammo/bullets
pickup/ammo/cells
pickup/ammo/crucible
pickup/ammo/gas
pickup/ammo/rockets_single
pickup/ammo/shells
pickup/extra_life/extra_life_1
pickup/keycard/slayer_key
pickup/keycard/uac_blue
pickup/keycard/uac_red
pickup/keycard/uac_yellow
pickup/blood_punch_refill
pickup/dash_refill
pickup/mega_armor
pickup/mega_health
pickup/rad_suit
pickup/rad_suit_refill
progress/mastery_token_weapon
Cultist Base
pickup/keycard/cultist
Super Gore Nest
pickup/keycard/hell_flesh_blue
pickup/keycard/hell_flesh_red
pickup/keycard/hell_flesh_yellow
UAC Atlantica Facility
pickup/dive_suit
pickup/dive_suit_refill

Some items cannot be picked-up when spawned by the Meath00k chrispy command.

SWF Modding.

HUD and menu modding

The ability to mod DOOM Eternal's HUD and menus is limited, but is possible, thanks to idStudio. The layout of DOOM Eternal's HUD is rendered by a custom flash interpreter, so in some cases this can be changed by editing the source SWF file. The various shapes of HUDs and menus actually come from textures files. Some menus may be populated by a decl file. Depending on what you want to change, you want to edit other files in combination with modified SWFs, or SWF files may not need to be edited at all.

Extracting SWF files

Open idStudio, go to Mods, Package browser. In that window, go to File, Open. Navigate to your DOOM Eternal installation, then idStudio/base and open common_s000.wad7. Then open the SWF folder and extract the SWF file you think you want to modify. If you're not sure, you can simply extract all of them, not much space will be used in doing so.

Ignore the generated/cswf folder, this contains SWFs compiled for use in-game and cannot be edited by external tools.

Alternatively, you can use Eternal Resource Extractor to pull all SWF files from common_s000.wad7.

Editing SWF files with an external program

While there is no offical tool for editing SWF files for the purposes of DOOM Eternal modding, you can download software that can open normal shockwave flash files, such as Free Flash Decompiler.

While the functionality of the game's HUD is, for the most part, hardcoded and not particularly flexible, you can at least change the layout by deleting, moving, or resizing sprites. Adding elements may not work as expected. Usually, the bottom sprite will contain the entire HUD element. When inspecing elements within sprites (or elements inside of frames inside of sprites), read the child element ID to find what sprites are contained in that item, until you find the object you want to edit or remove.

Additionally, a small set of actionScript functions exist in Eternal's flash intepreter, including a function of set console variables.

Recreate the directory structure in an the base folder of an idStudio mod, and save or copy your modified SWF file to the correct folder. idStudio will generate a cooked SWF file on startup, or upon loading a map. You can force compile SWFs with the cookSWFs console command if you add a SWF while idStudio is running, but if you want to test it within idStudio, you might need to restart the map. When you want to package your mod for uploading to the mod portal, you will want to check generated/cswf

Packing SWF files for the mod injector

If you want to use the modded SWF file in a mod injector ZIP archive, do not package the generated bswf file, it will not work. Use Eternal Resource Extractor to obtain the Eternal SWF file from the bwsf container. Also, note that targetting the mod injector instead of the mod portal does not remove the need to use idStduio; is it is still necessary to generated the SWF files in Eternal format. This format is not readable by SWF editing software, hence why you must extract SWF files from idStudio and not from the retail game package.

Porting Legacy Mods to Atlan

This page is a work in progress. The features discussed here are not publicly available and are subject to change.

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.

Simple Changes

1. Decls

Decl paths are simplified as follows:

If your Eternal Mod Loader decl path is:

gameresources_patch1/generated/decls/damage/damage/my_damage.decl

Your Atlan Mod Loader decl path will be:

decls/damage/damage/my_damage.decl

2. Entities

Entities paths are adjusted as follows:

If your Eternal Mod Loader entities path is:

e5m1_spear_patch1/maps/game/dlc2/e5m1_spear/e5m1_spear.entities

Your Atlan Mod Loader entities path will be:

compfile/maps/game/dlc2/e5m1_spear/e5m1_spear.entities

Strings

If your Eternal Mod Loader string file path is:

gameresources_patch3/EternalMod/strings/english.json

Then your Atlan Mod Loader string file path is:

binaryFile/strings/english.txt

The capitalization in binaryFile matters. The file extension doesn't matter anymore.

Format

Atlan has changed the Doom Eternal string mod format. String mod files are now CSVs instead of JSON files.

Here is an example of a valid string CSV file.

#str_my_awesome_string, "Howdy"
#cool_string, "Another string"
#str_escape_sequences, "\n \t \\ \" Usable escape sequences"

Notes: