xmax mod [Grimanual]

Grimanual Tutorial

To make an xmax mod.

Prerequisites:
Virgin AssetManager

Glossary:
AM AssetManager, WD WorkingDirectory, BD BuildDirectory, XD eXtractionDirectory, dir directory

Start AM and make a new mod named xmax6 and then quit AM.

Go to WD and and make a new folder in database called records and then in records make directory called game. Go to the same location in the XD and copy paste gameengine.dbr to the WD game dir. Restart AM, select you mod and switch to the database tab and double click to open the record in AM. Go to Proxy Info cat and look at the 4 Array Real database fields spawnMin, spawnMax, championMin, championMax. In addition there are 4 more similar fields with the suffix Modifier. Right now ignore the Modifier fields and replace spawnMin and championMin to 6. You can leave the spawnMax and championMax empty or fill them with numbers…what does that do? Play with it. Write a thread on it, I will link here and you can contribute to Grimanual.

To be continued…by you.

Attachment: tut_000-favorites.png
Attachment: tut_001-working.png
Attachment: tut_002-proxies.png
Attachment: tut_003-proxyEditMass.png
Attachment: tut_004-proxyEditMass-01.jpg
Attachment: tut_005-proxyEditMass-02.png
Attachment: tut_006-proxypool.jpg

Thank you!

Considering that you already have a whole bunch of experience editing these values, could you explain to me what they do exactly?

Spoon.

The message you have entered is too short. Please lengthen your message to at least 10 characters.

Such constructive conduct.

This value seems to have no affect on spawn rates.

First of all, I highly recommend you take advantage of the Windows Favorites widget so that you can quickly navigate to “Grim Dawn” to launch AM as well as your working and build folders (set in AM options) and any other locations you need to access for modding.

Here is my Working

and I am going to navigate to:
C:\Users\jiaco\Documents\My Games\Grim Dawn\Working\database\records\proxies
which is where AM just recently extracted the latest hotfixed game files.

In this location we have the following template counts:


                     proxy                proxyambush 
                       386                        148 
proxylevelvarianceequation                proxylimits 
                        32                         10 
                 proxypool          proxypoolequation 
                       561                          1 
                  setpiece               setpiecepart 
                       106                          2 
              setpiecepool           spawnondeathpool 
                       120                         40 

While you may have seen a class field out there, it does not seem to be globally set, but if you take the base string of the templateName field, you can partition dbrs into sets of like. Same thing in AM, when you have multiple dbrs selected and then right-click Edit them, if they have the same template, they open simultaneously in a single DBREditor interface.

In addition to knowing how things work inside the game engine, you need to know how things work in the game. For a monster to spawn (they live in records/creature/enemies), it has to be in a ProxyPool that is linked to a Proxy. The Proxy is something that goes on the map when building a world, linked to a ProxyPool that stipulates all the monsters and some weights and spawn limit values.

Here is what you see in the top level proxies folder:

All of the limit_ dbrs control level scaling of enemies based on a painted feature on the world map. the lv#_ dbrs fine tune enemy difficulty. The proxypoolequation has some variables that can be use to globally alter the spawn min max values.

If you want to remove the feature whereby the vanilla game scales enemies to a certain limit depending upon map zone, then you are looking into the proxy records. There is a field in there, (AM:Proxy Config/difficultyLimitsFile) that is by default BLANK. In GD, you have lots of fields that can be blank or empty. My guess is that the template stores a default value for all fields and that if one is blank, it gets that value. In this case, I never looked up the default value but I know that setting it to limit_unlimited.dbr does what I want. To do this quickly, enter the area001 subfolder, select all the dbrs within (Ctrl-A) and then right-click and Edit them:

Here, each dbr is a column in the editor.

Double click the difficultyLimitsFile field name to open the mass-edit-editor:

And now here you have to use to top widget “…” to Set the value to “records/proxies/limit_unlimited.dbr” for all open records. Then click the Apply button before the OK button and then be sure to use File-Save to store that change for all open dbrs.

Notice I did not talk about ProxyAmbush nor the folders alongside area001 (boss&quest,devotion,factionspawns,poolsdeathspawn). They also have records to mod. The main distinction is that proxies (and ambush proxies) are in one folder with a companion folder to hold the ProxyPools. area001 has its pools in the records/proxies/pools location. For the rest, look for a specific subfolder for the pools (example: records/proxies/boxx&quest/boss&questpools).

The next component of an xmax mod is to open proxypoolequation and modify those values by X. You have poolValue * 1 right now for all 4 fields, spawnMin Max champMin Max. You can just bump those values in so many ways. In addition, some proxies use the champion vs non-champion distinction in different ways. If you want to do a Grimmest style mod, you have to go in and mod ProxyPools manually.

There you can see that each entity has 4 main values. the name points to the dbr of the monster to spawn. The weight is a number that is used to give the frequency [(IndividualWeight / SumofAllWeights) * 100 -> % chance] that the named monster will spawn. Then you have the levelVarianceEquation, which I mentioned earlier, the name of the dbr is quite obvious about the intention. By setting a monster to a higher value, you get a better chance that that monster is over-leveled compared to the toon. The 4th field is sort of optional, the minPlayerLevel and maxPlayerLevel set the level range (of the pc/toon) that can encounter the monster. I use the minPlayerLevel to make Grimmest easier in the early areas.

Modding the pools takes manual work. You can see in a comparison of vanilla and the Grimmest source what has been done. It is a fine polish type of modding where you add in as many heroes to the Champion Pool slots and try to up the rate of encounters full of different enemies and scale back the fodder at the same time.

Once you run out of heroes of a type, you can see that the next step is to copy paste generate some new monsters and then go in and customize them, give them new skills and weapons.

What else do you need to know?