# Reference: "resources" Array

<p class="callout info">In DOOM Eternal, each map has a list of *.resources* and *.streamdb* files that will be loaded in the map itself. With this feature, you can tell the game to load other *.resources* and/or *.streamdb* files in maps. You can also tell the game to stop loading *.resources* or *.streamdb* files that are loaded by default in maps.</p>

## Structure

The basic structure of the "resources" array is below:

```INI
{
	"resources":[
		{
			"name":"",
			"remove":,
			"placeFirst":,
			"placeBefore":,
			"placeByName":""    
		}
	]
}
```

- **`name`** (string) (<span style="text-decoration: underline;">required</span>) - the name of the file to load, e.g. `"e5m1_spear.resources"`
- `<strong>remove</strong>` (bool) (optional) - if set to `true`, the file specified by the **`name`** property will be removed from the map. Defaults to `false` if not set.
- `<strong>placeFirst</strong>` (bool) (optional) - if set to `true`, the file specified by the **`name`** property will be loaded with the highest priority in the map. Defaults to `false` if not set.
- `<strong>placeBefore</strong>` (bool) (optional) - if set to `true`, this resource will be loaded <span style="text-decoration: underline;">before</span> the resource named in the `<strong>placeByName</strong>` property. Defaults to `false` if not set (meaning it will be loaded <span style="text-decoration: underline;">after</span>).
- `<strong>placeByName</strong>` (string) (optional) - used with `<strong>placeBefore</strong>` to control the order in which resource files are loaded. For example, setting `"placeBefore":true` and `"placeByName":"e1m1_intro.resources"` will cause the file specified by `<strong>name</strong>` to be loaded with a higher priority than e1m1\_intro.resources.

<p class="callout warning">If neither `<strong>placeBefore</strong>` nor **`placeByName`** are set, then the asset will be loaded last, with the lowest priority.</p>

## Example Usage

The most common use of this feature is to give custom map/level creators access to assets that aren't normally available in a map. For example, you can tell the game to load **e5m1\_spear.resources** (and the required .streamdb files) within another level, such as e1m1\_intro.

By doing this, a person modifying the e1m1\_intro map can then freely access files/entities from e5m1\_spear.resources, the same as if they existed in e1m1\_intro already. This would allow you to use DLC AI such as spirits (and many other things) in e1m1\_intro, where they normally can't be used.

Below is a sample .json snippet that loads the e5m1\_spear.resources and .streamdb files.

```INI
{
    "resources":[
        {
            "name":"e5m1_spear.resources"
        },
        {
            "name":"gameresources_6_1.streamdb",
            "placeBefore":true,
            "placeByName":"gameresources_0_4.streamdb"
        },
        {
            "name":"gameresources_0_6.streamdb",
            "placeBefore":true,
            "placeByName":"gameresources_0_4.streamdb"
        },
        {
            "name":"gameresources_1_8.streamdb",
            "placeBefore":true,
            "placeByName":"gameresources_0_4.streamdb"
        },
        {
            "name":"gameresources_2_2.streamdb",
            "placeBefore":true,
            "placeByName":"gameresources_0_4.streamdb"
        },
        {
            "name":"gameresources_3_2.streamdb",
            "placeBefore":true,
            "placeByName":"gameresources_0_4.streamdb"
        },
        {
            "name":"gameresources_4_3.streamdb",
            "placeBefore":true,
            "placeByName":"gameresources_0_4.streamdb"
        },
        {
            "name":"gameresources_5_3.streamdb",
            "placeBefore":true,
            "placeByName":"gameresources_0_4.streamdb"
        }
    ]
}
```

## How Do I Know Which Files to Add?

First, take a look at this spreadsheet (note: there are multiple tabs at the bottom): [https://docs.google.com/spreadsheets/d/10R5fWKGyqPuCPdueqKeCYycHETSHg0QeFOCbWIQZUCY/](https://docs.google.com/spreadsheets/d/10R5fWKGyqPuCPdueqKeCYycHETSHg0QeFOCbWIQZUCY/edit#gid=179806618 "https://docs.google.com/spreadsheets/d/10R5fWKGyqPuCPdueqKeCYycHETSHg0QeFOCbWIQZUCY/edit#gid=179806618")

This spreadsheet contains the list of the default *.resources* and *.streamdb* files that are loaded in all the game's maps. So, let's say that we want to have access to all the assets in **e5m1\_spear.resources** in **e1m1\_intro.resources**. The first thing we need to do is find the "e5m1\_spear" map name in the spreadsheet, using the "map name" column.

You will see that the map name appears multiple times. This is because the map loads multiple .resources and .streamdb files. In the "file name" column you will see the names of the files that are loaded in the map. The order of the files matters. It actually goes from bottom to up, so the files at the bottom are loaded first during the map loading process, and the files at the top are loaded last. This means that the files at the top override the others (if they share files in common). This is what we refer to as **load priority**.