[Tool] GDViewer - Fast lightweight character viewer and note keeper

New update for Grim Dawn v1.1.9.0
Additional small update for faster loading with many characters

This tool was originally developed for my own usage, but I would like to offer it into the public domain as I have noted numerous requests on the forums for a fast GD all character overview.

Many thanks to @Hal9001 for his C# “GD Stash Searcher” app source code that allowed me to figure out how to decode the structures in the player.gdc file for my own platform. I use his tool regularly and is a recommended top notch solution for searching where all those items you are looking for are stored.

I have many characters in Grim Dawn and was struggling to keep tabs of what each one was striving for in their goals with regards to progress, equipment, devotions etc. as well as what combo of character classes I have already created?

I know GD-Stash, Grimtools and others can also display this info, but this can be cumbersome to get a quick overview of ALL your characters without either loading a new char or drilling down and waiting on menu clicks.

My old way of working was to use Excel spreadsheets, but they were not ideal as the dynamic character info stored in the player.gdc files had to be constantly updated manually. This tool lets you view ALL your characters in a grid as well as storing local user notes against each character. Each column on the grid can also be clicked to sort by that heading.

Version 1.3.11 (build 23) new features

  1. A general notes section to keep any of your thoughts or references in a central location.
    Nothing special, just a big container for any general text localized to your Grim Dawn context.

  2. A web page links button that stores and makes available Grim Dawn links you often access.
    Forgot how to progress to the “Crate of Entertainment Quest”?
    I do this often and short of adding yet another shortcut to my already over utilized browser shortcut bar I find this a better option. Just popup the list from the button and double-click your link. Editable either via the Edit button or direct edit of …\Notes\WebLinks.ini

  3. A feature I use quite a lot, but maybe not for everyone?
    I have many characters that have lots of available excess stash space. I decided to nominate certain characters as designated COLLECTORS of certain item types, almost like turning your character into a specialized vendor, except to you the items are FREE.
    For example my char “Sheriff Jesse Bourbon” is my one-stop shop when searching for any one handed pistols that a character is needing.
    Right-Click on the character grid to set what this character specialises in collecting.
    If you need to add additional collector topics, just add a new INI file header in …\Notes\Collections.ini
    I cannot remember which characters are collecting what anymore, hence the addition of this feature that shows me which character are collecting what at just a click.
    NOTE: A nice idea here from @peval is that he uses this feature to keep track of which characters can defeat certain Nemesis and Super Bosses
    [Tool] GDViewer - Fast lightweight character viewer and note keeper
    Never ceases to amaze me as a developer of how users can twist and enhance your designs in an effective manner that you never even thought of at design time. You can configure the Collections.ini to any topic group and character members that suits your purpose.

On starting the application you will be required to select your Grim Dawn SAVE directory in a similar manner to Grimtools etc. It will be either in your local or steam cloud paths.

Example output of my player base …

Latest Version 1.3.12 (build 24) startup loading improvement

  1. My character count has now surpassed the count of 40 and I was getting a little unhappy with the time the app was taking to resolve all the equipment and stats to startup (never been a fan of “Watching Paint Dry”). All that this version has changed from 1.3.11 (build 23) is that I have fired the loading of the characters up with multiple threads. If you only have a few characters you will see no difference here, but if you have many of them then initial load time is significantly faster.
    I am using this version at the moment and have no issues so far, but if you encounter any please let me know. You can always revert back to 1.3.11 (build 23) if it breaks on your machine as all data and files are compatible.

  2. Small but needed change for me on the main grid. Using mouse wheel would scroll up and down in the character grid or clicking the character would show the character’s notes. This great, but I kept tending to use the mouse wheel over the notes section WITHOUT clicking in the notes section itself expecting to scroll through the notes, but instead it continued to scroll through the character grid. This action is logical, but annoyed me. Now if you DOUBLE-CLICK on a character in the grid then the notes section will gain focus and you can use the mouse wheel to scroll without accidentally scrolling in the grid instead.

NO Grim Dawn files are modified by this app as it purely reads information.

Forum Links to EXE file versions - Thanks @Powbam for download assist

GDViewer_1_1_7_18.zip (897.2 KB) DEPRECATED

GDViewer_1_3_11_23.zip (1.0 MB) UPDATED for GD 1.1.9.0

GDViewer_1_3_12_24.zip (1.0 MB) LOADING performance improvement

Some screen dumps showing new features

  • General Notes

  • Specialised Collectors

Right-Click in grid to select what the character is collecting

And then … click the “Specialised Collectors” button and it will list your characters that are collecting and specialising in the items. If you need more collection topics just edit the …\Notes\Collections.ini file.

There are no viruses in the compiled file, I have Kaspersky and AVG on my machines and none have complained with false positives. Please let me know if your AV detects this as a false positive.

Let me know if you get any other issues and I will try to address them. This was tailored for my own personal usage, but I am happy to consider feedback and other useful features, but not at the cost of just bloating and over complicating the tool. It must remain speedy and KISS (Keep it Simple Stupid)

“Show me a developer who says his first release has NO bugs and I will show you a pathological LIAR :wink:

— That is not counting “Hello World” apps by the way, although I do sometimes wonder about those these days (Hello Wrold maybe)?

12 Likes

I would consider Nexus (Nexus has a downside in that the user has to have an account to download) or Moddb or even Mega. If you’re not paying for Dropbox then 10-20 downloads will lock it down and they’ll block further downloads.

Other than that… nice tool. Thumbs up.


Edit: I see that the file size is a mere 1.26MB - the forum allows you to drag and drop files into the editor and I believe the size limit is about 4MB’s. You can put this file into a .zip and drop it into the editor and distribute it directly from the forum. No other site is needed when the file size is that small.

2 Likes

Cool app, I’ll try it later. Since your app already read character files, can you also include the number of skill point and attribute point the char have like the devotion tab you already got? Like make it show new tab “Skill point:190/248, tab attribute: 87/107”. Just to keep track which character not yet have maxed skill and attribute point, this may also help to quickly diagnosed if a character have a bug that make it lose skill/attribute point.

Thanks @Powbam - managed to drop the app as zipped on the forum page.

I tried that Nexus site, what a confusing mess !!!
Gave up and lost interest after about the 6th page it was asking for.

1 Like

Yeah, I’m not the biggest fan of Nexus. I know that mamba uses Moddb to distribute GDStash - never registered an account there so I don’t know how ‘friendly’ it is.

Yes, that was one of the features I wanted on the details page next to the notes, but after looking at it I actually got quite confused as when I extracted the attribute points from the player.gdc header file. The data I was reading did not match any of the ingame attributes. After playing around for a while thinking my extractions were incorrect, I had a brainstorm and realised that the attribute values are the BASE ones and that they are dynamic in the way they get increased by masteries, skills and equipment and can change at any given time.

I see GD Stash also just reports the base values of these attributes. They are not much use to me in this form as they lack the enhancement additions of the total calculated values. I have no idea yet how to calculate the additional dynamic values to the attributes, so at this stage I will just disregard them.

Without clogging up the speed with complex extractions, mapping and calculations I cannot see an easy way of getting the ACTUAL game values of these attributes. GD Stash obviously also had the same issue and just reports the BASE attributes from the header.

@Mamba - you got any comments or ideas here?

I did not bother getting the in game values which are affected by skills and gear, as you noticed. While you could factor those in to get closer to the in-game values, you will still fall short until we can replicate the RNG logic to get the exact item stats (rather than their base values).

Yes, it is small, but efficient.

I am from the old school of programmers from the early 1980’s who were used to squeezing efficient apps into 128, 256 and 640 KB ram (not MB or GB - we had only … KB! - hell it was not even ONE Megabyte ram we had to work with). To put that into perspective, your average modern MP3 song would have probably filled up most of your 5MB hard disk and had no chance of even loading into a 640K ram.

This exercise was nice for me in that in today’s world that given all the new high level languages out there that the old stalwarts like Assembler, Delphi (originally Turbo Pascal) and C++ can still show how to get the optimal performance and size from an app.

Try it - it is very fast on load time.

I have never taken to interpreters or PCode compilers and have always believed in the power of the low level compilation of native languages.

Yea, it is not for all modern coders, but the power is still out there if you are willing to explore it.

ONE exe file as a single distribution as opposed to the current modern multiple file mess and required dependencies sort of seal the deal for me.

Comments from code optimisers anticipated as this may appear to be a dying art.

KISS

3 Likes

Thanks for the reply.

My feelings exactly,
Once I stopped doubting the FLOAT value logic I was getting from the attribute values I realised that I was on a hiding to nothing to try to get the actual GAME values for these stats.

Factoring in to get closer to values by deeper extraction logic will also not work as you mention as those values change drastically during ingame play.

I will keep my tool simple at this stage as it does exactly what I want it to do at this moment.

If you get any new insights into the GD files please include me, maybe there is more hidden stuff we can find and I would love to be involved in extracting or decoding any esoteric secrets.

1 Like

doesn’t it sit on top of .Net by virtue of being written in C# ? In which case the .exe size is not indicative of how much RAM it uses, as much of what it references is outside the .exe, similar to .dlls

My app does not use .NET and is not written in C# either. It is in Delphi (think C++ similar) and compiles to native machine code. No Interpreter, no Run-Time engine. One stop small EXE.

I’m always interested in learning different languages than what I know (which isn’t alot) - is this where you go to get setup for it?

https://www.embarcadero.com/

I registered and downloaded the free community edition. Got any tips/links for getting started with it?

My mistake, that was the app you based yours on :wink:

Not sure what versions of Delphi are current. I stopped purchasing at the last good and stable version of Delphi 2010. After that they sort of lost the plot as they ended up with bloatware that tried to be a swiss army knife and became extremely expensive as well. I am only interested in Win32 Apps and Win Services from Delphi on Windows. If I need .NET or Web stuff I use Microsoft VS.

There is another Pascal GUI IDE product out there that is FREE to public domain. It is called Lazarus and it uses the FPC (Free Pascal Compiler). It is virtually 98% compatible with delphi source and I managed to port my libraries over with very little changes. The GUI IDE also feels very much like you are working in the Delphi IDE.

The beauty about this product though is that the GUI IDE can be downloaded for Windows,Linux, Apple MAC, Android, Raspberry PI and many other platforms. This allows you to develop on the same IDE on all your operating systems. I do a lot of work with the RasPI as we use them for gateways and interfaces into devices. Lazarus is ideal on the RasPI as I can develop small fast low level applications or command line tools as well as Daemons that run in the background like Win Services. Works like a charm on Linux as well and it is easy to develop desktop applications that compile to a single executable that needs no run time or virtual machines.

https://www.lazarus-ide.org/

Above is the link to Lazarus. It is well supported and you can find many examples and projects there. I actually consider Lazarus as Delphi for Linux and RasPI as the language is virtually identical. If you can code in Delphi you can certainly take to Lazarus instantly.

Hey Mike,

Congrats on the release of the app l ! If you’re looking for a wish list of things to possibly add here’s a few thing you could consider (apologies if someone has already mentioned one or all of them)

  1. Add support for mod characters. These are found in user folder under the save directory. Seeing all your characters across both vanilla and mod components would be awesome.

  2. Show character gear and other attribute data (not a picture). With Grimtools you can see the weapons and other gear, plus the augments and components applied. I find though that I’m flicking back and forth on screens to compare my character to one in Grimtools. Less back and forth would be handy.

Hello,

I get a error!?

-

Win10 x64 (build 1909)

Hmmm, it looks like it cannot open a file or a file does not exist. It could be a Win 10 permissions problem. Have you tried running it as Admin?

Also what dir did you install it into?
Win 10 sometimes has issues in C:\Program Files etc. in that it does not like you creating files like the INI file and the TXT note files in it.

I still use Win 7 and I am Admin so i don’t get these issues, but give me a little while and I will add some error logging that will tell us what file it is having issues with.

Yes, with no change!?

In the Grim Dawn folder under My Games.

No problem … I can wait! :wink:

Ok, I have updated the link at the top of the post.
Version is 1.0.1.10 now.

I have added exception reporting dialogs for …

  • Unable to create or write to the INI file in the installdir
  • Unable to OPEN the grim dawn player.gdc for read in the save file path
  • Unable to create or write to the TXT note files in installdir\Notes

Lets see what expanded error message you get now.
It should tell us the filename that is causing the issue.

In your install folder there should be a GDViewer.ini if it was able to create it.
What is the contents of your INI file in regards to the GD Save Path?

eg. Mine is

[PATHS]
GD Save Path=C:\Program Files (x86)\Steam\userdata\xxxxxxxx\219990\remote\save\

You also should have a Notes directory in there as well

That dir you have installed into is in My Documents, try to create a NEW folder of root like Games or something like mine above. That My Documents sometimes gets locked by OneDrive and other stuff in Win 10

Hello,

Here the new error windows:

-

It looks like that your tool will double open the “player.gdc” file on Win10!?

Here the ini-file:

GDViewer.ini
[PATHS]
GD Save Path=C:\Users\xxx\Documents\My Games\Grim Dawn\save\