Skip to main content

Dark Ages Assets Info

These features are a work in progress and are not publicly available yet. This page is a WIP and subject to change

This section describes advanced settings available through your mod's configuration file. Please read this page to gain a basic understanding of the Atlan config. file before continuing here.

These are advanced settings. Please take care when using them. Improper usage may cause instability or crashes.

PackageMapSpec Manipulation

Located in your game installation is the file base/packagemapspec.json

This file declares the resource and streamdb archives that are to be loaded in each level. By editing this file, you can change what resources a level loads. For example, if you wanted to use DLC AI in a base-campaign level, you can import the DLC level's archives to gain access to those assets.

The following is an example of a mod config. file that performs packagemapspec manipulation

modinfo = {
    name = "MapSpec Example"
    author = "FlavorfulGecko5"
    description = "Demonstrates how the MapSpec block works"
    version = "9.0"
    loadPriority = 1
    requiredVersion = 1
}
mapspec = {
	"game/ripatorium/ripatorium$game/sp/m1_intro/m1_intro$.resources"
    "game/ripatorium/ripatorium$game/sp/m7_armada/m7_armada$.streamdb"
    "game/ripatorium/ripatorium$game/sp/m11_styx/m11_styx"
    "game/dlc/m15_hub/m15_hub$game/sp/m9_cosmic_a/cosmic_a$_patch1.resources"
}

First, let's introduce the format: "FROM_MAP$TO_MAP$FILTER"

  • FROM_MAP is the map you want to import files from.
  • TO_MAP is the map you want to import files into.
  • FILTER is a filter string for specifying the exact files you want to import. This field is optional.
  • $ characters separate the three fields.
  • You can find all map names in the maps list, at the bottom of the packagemapspec.json file.

Now let's walk through each example in the above config. file:

 game/ripatorium/ripatorium$game/sp/m1_intro/m1_intro$.resources

  1. Imports all .resources archives loaded by the Ripatorium into Village of Khalim.

game/ripatorium/ripatorium$game/sp/m7_armada/m7_armada$.streamdb

2. Imports all .streamdb archives loaded by the Ripatorium into Sentinel Command Station

game/ripatorium/ripatorium$game/sp/m11_styx/m11_styx

3. This import statement has no filter string. Therefore, ALL resource and streamdb files loaded by Ripatorium get imported into Harbor of Souls

game/dlc/m15_hub/m15_hub$game/sp/m9_cosmic_a/cosmic_a$_patch1.resources

4. This imports m15_hub_patch1.resources into the first Cosmic Realm level. It's not recommended to use this feature this way versus importing all resource archives. However, if you really want just a patch archive imported for some reason, this is one way you can do it.

MapResources Injection

You can use the Config file to inject data into the game's MapResources files. To understand what MapResources files are, and why you'd want to edit them, see this page.

Atlan allows you to inject data into any of the game's MapResources files. This is accomplished using the mapresources and assets_lists properties. See the following config:

modinfo = {
    name = "MapResources"
    author = "FlavorfulGecko5"
    description = "Demonstrates how the MapResources block works"
    version = "9.0"
    loadPriority = 1
    requiredVersion = 1
}
mapresources = {
	"common" = "my_asset_list"
    "game/sp/m1_intro/m1_intro" = LOAD_ALL
    "game/sp/m1_intro/m1_intro" = my_asset_list
    "game/sp/m1_intro/m1_intro" = list_two
}
asset_lists = {
	
    my_asset_list {
    	"aiComponentList/custom/my_custom_component_list"
    }
    
    list_two {
    	"damage/my_damage_decl"
        "projectile/my_projectile_decl"
        "entityDef/modded/cool_entity"
    }
}

The workflow is straightforward:

1. Use the asset_lists block to define lists of game assets. This config. file defines two asset lists named "my_asset_list" and "list_two".

In your asset lists, the text before the first / character is the resource type. The capitalization of the resource type matters, and must be correct! Atlan Resource Extractor's extra scripts will provide a full list of correctly capitalized resource types for you.

2. Use the mapresources block to list the names of the maps whose MapResources files you want to inject data into. Then, add the names of your asset lists.

LOAD_ALL is a special indicator. If encountered, Atlan will disable the layermask of all vanilla entries to ensure every resource in the file is always loaded. For Dark Ages, this shouldn't be necessary to set. For Eternal, you may want to set this if doing extensive entities modding and encountering stability issues. See this page to understand what this means.

This example config does several things:

  • The asset list my_asset_list is injected into common.mapresources
  • The asset lists my_asset_list and list_two are injected into m1_intro.mapresources and LOAD_ALL is enabled on it.