[WIP] ArzBaller - the CLI for packing dbrs

Funny, the game will load my arzs as custom maps…I just cannot repack the entire database.arz. this seems to be the state I had the code in before I quit working on this years ago, the program can pack most records, but not all. This will require some teamwork to finish, so I just remove all the debug code and pack this up to share today.

another issue is that the arzs are not the same size, but if they function, I guess I really do not care too much about that.

one difference I know is the old database extractors fail or display incorrectly for the minus numbers, whereas the new ones work. I dont know how it works, but perhaps something to try. maybe we can add records from the main db until it breaks and see what triggers it :stuck_out_tongue:

Updated the second post of this thread with what I understand to be the arz format description.

Will try to comment the code as much as possible now and zip it up later today.

The first binary I post will contain what I believe to be the necessary dlls for someone without Qt installed, but I am never sure about what other dlls I have that might be needed from the Visual Studio install. So when this hits, rest assured that the first version will not work for most people, we will add in dlls one by one as we find which ones are not installed by default and get this towards a release state. But if memory serves correct, this process is always influenced by RNG and a total pain in the ass.

Compressed and Uncompressed sizes are switched from my understanding

Typo on forums, code is fine. It would not work otherwise :D. But thanks.

Updated the third post with source and a binary for testing…I am sure I did not describe everything sufficiently, but will be around to help if anyone needs it.

The downloads are hidden in the third post of a WIP thread for a reason, this is not ready for prime time just yet. But with some help, it should be soon.

running

arzBaller.exe GrimmestSource testGrimmest.arz

with the GrimmestSource being the example:

results in:

and of course I am running it as admin.

thoughts? you mentioned game itself cant be compiled but others would(with different sizes in arz), so I assume this should’ve worked?

edit: nevermind, I was trying it with the whole folder, instead of the database/ folder, since the pack example was "
arzBaller.exe testGrimmestExtract testGrimmest.arz", my bad, ignore this post

edit2: just tried a couple of dbs, works, works in game as well.

I modded the crucible(made the exp gain from monsters a third of the original game, was 0 in crucible) and made no other changes. it compiled succesfully, and game does run the arz file. here are the side effects:

  • crucible still works, wave logic still works
  • turrets dont work, they disappear instantly
  • ui on the top right is gone
  • monsters now drop loot same as the original game
  • exp is still rewarded at the end of each 10-waves and end of a run
  • loot reward at the end still works as well, but they only drop iron and no items
  • file size almost 2 mb smaller
  • mastery bars are filled instantly in the skill tree – possibly breaking the save file

Honestly I like the items dropping from monsters better so it was a worthy sacrifice for gaining xp in crucible :stuck_out_tongue: if it wasn’t for the last one, I’d be playing this instead of the current crucible

what do you think? should this have worked, am I missing something? or is this a bug in the compiler?
maybe this could be useful for debugging something, since this database is smaller than the game.
edit: heres the resulting arz if anyones interested, link is valid for 24hrs. quite playable by fixing the mastery bars manually :stuck_out_tongue:
https://a.uguu.se/YpigjQHUgVVq_SurvivalMode.7z

Disabling xp from monsters hardcoded, there is no way to return it via dbr editing.

Same as in asset manager. it’s always removes not attached resources files when you trying build it usual way.

I already returned it, by changing the experience equation in gameengine.dbr, from monsterLevel*0 to the original game equation divided by 3.

so, can this be fixed? can I mod the crucible database.arz?

Yeah, and it works? Well, lol, it seems i was misinformed by one man(geez, bro), while i didn’t have enough time to test this stuff for myself.
Anyway, It’s great.
–deleted–

No idea. But thanks for giving it a twirl, I am actually shocked that anyone was able to do anything at all with it. So that is at least good news for me that it does something.

Not sure what is removing resources with arzBaller, it does not even have access to them. But honestly, I am a bit confused by your discussion.

I didn’t say anything about this program except that Stormcaller got same side effects as in Asset Manager when it deletes not attached resources.

disclaimer: I did not use the tools provided by crate, however syntax for my directories should be the same, though this should be checked or replicated from scratch.
I uploaded all my files here, including 2 extracted directories and arz files: https://a.uguu.se/MU5yehCIBfui_arzstuff.7z

Previously on lost:
I extracted the crucible database, then I changed the “experienceEquation” in the “gameformulas.dbr” to match the original game files(divided by 3)
I then repackaged this file using ArzBaller, because I ball so hard.
I got the side effects listed in my previous post.

Now I stepped up my game, I extracted both the original database and my modded database.

then I compared the resulting directories, and here its clear why its smaller than what I started with :stuck_out_tongue:


(left is modded, right is not)

a few examples(bio info are gone, perhaps because template doesn’t exist?):

negative values are off by one(this is true for all negative values, always):

some properties are gone(for seemingly no reason):

properties with multiple levels are gone(always):

the source for minus values being 1 off might be from the unpacker rather than the packer. Also, I don’t know whats the delimiter syntax you expect, but the .dbr files I got does it like this:

characterOffensiveAbilityModifier,1.000000;2.000000;3.000000;4.000000;5.000000;6.000000;7.000000;8.000000;9.000000;10.000000;11.000000;12.000000;12.000000;12.000000;12.000000;13.000000;13.000000;13.000000;14.000000;14.000000;14.000000;15.000000,

someone should probably replicate this with the official tools, in case my dbrs are weird :stuck_out_tongue:

Let me just confirm this, left is my tool and right is what?

Looks like you just found a whole bunch of bugs…thanks a lot. I will pick this up again tomorrow morning and get fixing.

I sent a pm

Dayem, thx storm-bro for reminding about this crucible stuff, almost forgot about it.
Anyway for the record, with Asset Manager all things works perfectly, mod built without any files loss.

edit. and who gonna work on it, you better don’t forget about original enemies have their different factions, or you’ll face with eg. friendly black legion as i did now. lol

I don’t know how to use that :stuck_out_tongue: I want to have some changes made, and I think other people would use this, too. can I pitch a short list to you? I am not trying to make a mod. But we are getting screwed in this mode, and having a crucible-only char is impossible without some changes. so if you are going to make a mod, hear me out :smiley:

just started looking at things, got no experience with c++ or qt, just curiosity:

xfile:: pos() returns file.size(). guess you don’t actually use it in the derived class, but you tried to.

also, xfile:: seek() is declared (header) as return type int and then as quint32 in the source, is the same/no casting? (then again you don’t actually need the return?)

you allocate twice the size of a file as buffer for qdatastream.readrawdata()? (doesn’t really matter because of EoF?)

edit: also, stormcaller, that is one sexy merge tool.

I stopped using pos() cause it was not working, I guess it never hit me to look at the function.

Thanks, everything you pointed out will get fixed tomorrow morning.