Old 08-26-2016, 07:10 AM
Ceno's Avatar
Ceno Ceno is offline
Join Date: Jul 2014
Posts: 9,340
Default [Tool] The ModCalc

Work in Progress

By popular request, I've set out to build a universal 'modcalc' desktop application for creating and sharing builds using modded masteries. At the time of this writing, I don't have anything concrete to show you (unless you like staring at gibberish code) save for the familiar backdrop I plan to lay the calc upon:

Good stuff, huh?

There are a few limitations to the program, however. In seeking universal compatibility with mods, I had to make a couple of assumptions about modding filestructure. Specifically, mods MUST* contain one (and only one) skills_mastertable.dbr file by that name in which is contained information pertaining to all of the classtable.dbr's used by the mod. Furthermore, mods must have their sources available in order to be used with the program. I'm not planning to add a .arz/.arc decompiler so as to enable the program to work on closed-source content (partially because I'm too lazy, partially because it goes against my ethical code anyways).

*Except for mods that don't add any new masteries and instead edit old ones, e.g. Cornucopia. In this case, the ModCalc loads internalized data pulled directly from the gamefiles when mods don't supply relevant info (for instance, if Cornucopia didn't have a skills_mastertable.dbr file, the program would use its own and then attempt to read Cornucopia masteries based off of that).

What presently works:
  • The program can 'create' skills with correct coordinates based on their placement in the mastery.
  • These skills contain the FULL data of each skill as seen in the mod.
  • The program can link skills to masteries and enumerate them accordingly.
  • A framework for exporting builds is roughly halfway done. More on that later.

What presently does not work:
  • Anything relating to the UI (no visuals yet, purely debug text).
  • Creating skills/masteries based on non-modded skills/masteries is in the prototyping stage (meaning nonfunctional, but close to being fully implemented). Implemented.
  • Builds' exportation/importation is only halfway completed.
  • Skill data is 'untranslated' meaning that it will display stuff like 'offensiveFireMin=5' rather than '5 Fire Damage'. This will be fixed last, once everything else works.
  • Devotions are not yet handled. I have not decided if I want to enable them in the program yet, as they would be quite complex to work with and heavily bloat the size of the app.
  • Can't load .tex files and thus can't display relevant images for skills. I am unsure if I will pursue this feature or use dummy Stand In files instead. If I can get a fast .tex -> png/tga CLI converter I'll look into it, but I will be able to handle .png/.tga files if they are supplied by the mod's author.


When it comes to exporting builds, I had two options. The first option, a simple one, was to export raw investment data users made into different skills to a file which could then be shared. The upside of this is that I could very easily hash such a file into a fairly small line of text (fairly small meaning around 400 characters or so) which could then be decompiled upon import, allowing users to copy/paste links around fairly simply. I may still do this, however there is a very significant problem here: there's no context of which mod is being used and what version of it. So you could get one skill to 22/12 in one mod, export the data, load it up in a different mod calculator, and it'd register in a skill that tops out at 18/8 (for instance). While this is definitely something that purely occurs from user-based error, there is also a more universal approach one could take, too.

Instead, the ModCalc could export the entire data of the mastery (with a little bit of compression by removing extraneous data) into a file alongside investment metadata, and reversing the process accordingly upon import. This would enable people to share builds with people even if other people didn't have a particular mod.

Ultimately, I have decided upon the second option, though I may well consider implementing both in the long run. The point of this ramble is to point out a key feature of the implementation of this ModCalc: it actually builds the entire build calculator on the fly rather than being directly hardcoded with specific values. Not only does this enable extreme versatility, but it also provides perfect accuracy and consistency with respect to modded content without needing to be updated itself (except for when Crate releases a patch to the main game and I need to update the default mastery info).


Application Size presently 22.4MB, expected to be around 30MB when concluded.

So yeah, that's the tool. I'm looking forward to using it myself, and hope you all get as much utility out of it as I plan to when it's done.

Last edited by Ceno; 08-26-2016 at 05:13 PM.
Reply With Quote
Old 08-26-2016, 05:11 PM
jiaco's Avatar
jiaco jiaco is offline
Super Moderator
Join Date: Jan 2010
Posts: 6,051

Gibberish indeed.

Originally Posted by yoda
Do. Or do not. There is no try.
Last edited by jiaco; Tomorrow at 11:34 PM.
Reply With Quote
Old 03-30-2017, 11:40 PM
ASYLUM101's Avatar
ASYLUM101 ASYLUM101 is offline
Join Date: Jan 2010
Posts: 8,175

Over half a year later and no update? Ugh!
Reply With Quote
Old 03-31-2017, 01:16 AM
Ceno's Avatar
Ceno Ceno is offline
Join Date: Jul 2014
Posts: 9,340

Originally Posted by ASYLUM101 View Post
Over half a year later and no update? Ugh!

Decompressing .tex files on the fly is ass.
Reply With Quote

builds, modcalc

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Grim Dawn ©2018 Crate Entertainment, LLC.
vBulletin® 3.8.4 ©2000-2014, Jelsoft Enterprises Ltd.