Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature request add new command --skip-campaign? #3

Open
AxDSan opened this issue Apr 14, 2020 · 9 comments
Open

Feature request add new command --skip-campaign? #3

AxDSan opened this issue Apr 14, 2020 · 9 comments

Comments

@AxDSan
Copy link

AxDSan commented Apr 14, 2020

No description provided.

@apocalyptech
Copy link
Owner

Howdy! I wouldn't be opposed to adding that in, though I'm unlikely to put in the work myself. I suspect that there's both a collection of mission states, and a collection of challenge states that'd have to be put in place in order to get it to work, and that's more work than I really care to do at the moment. :) Technically you'd probably need to unlock a lot of fast travel stations as well, and all that kind of jazz.

So anyway, I'm definitely open to it, but someone else is gonna have to do the legwork of figuring out what kind of data changes are required to support it.

@AxDSan
Copy link
Author

AxDSan commented Apr 14, 2020

Howdy! I wouldn't be opposed to adding that in, though I'm unlikely to put in the work myself. I suspect that there's both a collection of mission states, and a collection of challenge states that'd have to be put in place in order to get it to work, and that's more work than I really care to do at the moment. :) Technically you'd probably need to unlock a lot of fast travel stations as well, and all that kind of jazz.

So anyway, I'm definitely open to it, but someone else is gonna have to do the legwork of figuring out what kind of data changes are required to support it.

Hi there 😁, thanks for the prompt response, I would love to dig into the save file format a bit deeper, as I'm new to the BL3 modding scene, I seen a lot of File I/O with esoteric binary data that
I don't recognize, and also with couple of formats that I have seen before like JSON (mainly for human readability I guess), Protobuf which is the actual beef, but since I have never worked with this actual save file format, I'm in pampers right now... Enough of the little intro...

I was also thinking on how to achieve this, my first (noob) thoughts were, just to go straight to the point, and it was, to hopefully to assign a (magical) value to the actual save file like: e.g. set a variable in the file that would tell the game: "hey this player has the the complete playthrough unlocked and the current mission is Divine Retribution" but that was way too naive from me. 🤣

So you say someone would need to basically do all the process that it's required by a mission to be completed? AKA setting the Fast Travels, etc., etc.

@apocalyptech
Copy link
Owner

Yeah, it'd be basically going through the various bits of data to find out which ones are actually important for the resulting savegame to be sensible. Like the mission state itself is clearly important, but the saves also seem to use "challenges" to keep track of a lot of things -- like there's a challenge for unlocking the Eridian Resonator, even though that doesn't show up as a "challenge" in the game itself. There's probably a bunch of challenges that get put in place which might affect how levels look, what characters are present, and all that kind of fun stuff So you'd want to make sure to have all that in place as well.

You probably wouldn't want to just pull over all challenges, though, because that would include all the stuff like the the stat-based challenges for killing enemies or using grenades or whatever. I think that the stuff like Hammerlock Hunts and Dead Claptrap challenges are part of that, too.

And then Fast Travels, and probably various other things. I actually did start working on a utility to copy mission state from one save to another, but I just gave up on it when I realized all the work I'd have to do for it. :) Was quicker in the end to just copy the save entirely and just change the small bits that I was interested in.

@AxDSan
Copy link
Author

AxDSan commented Apr 14, 2020

Yeah, it'd be basically going through the various bits of data to find out which ones are actually important for the resulting savegame to be sensible. Like the mission state itself is clearly important, but the saves also seem to use "challenges" to keep track of a lot of things -- like there's a challenge for unlocking the Eridian Resonator, even though that doesn't show up as a "challenge" in the game itself. There's probably a bunch of challenges that get put in place which might affect how levels look, what characters are present, and all that kind of fun stuff So you'd want to make sure to have all that in place as well.

You probably wouldn't want to just pull over all challenges, though, because that would include all the stuff like the the stat-based challenges for killing enemies or using grenades or whatever. I think that the stuff like Hammerlock Hunts and Dead Claptrap challenges are part of that, too.

And then Fast Travels, and probably various other things. I actually did start working on a utility to copy mission state from one save to another, but I just gave up on it when I realized all the work I'd have to do for it. :) Was quicker in the end to just copy the save entirely and just change the small bits that I was interested in.

Yeah, so it's definitely way more complicated than what I originally thought 🤣😁, I will just be lurking around and I will keep on playing with the save file for a while, and see what I can get to learn and understand from it.

Thanks sharing the info!

@AxDSan AxDSan closed this as completed Apr 14, 2020
@apocalyptech apocalyptech reopened this Apr 14, 2020
@apocalyptech
Copy link
Owner

apocalyptech commented Apr 14, 2020

No worries! I'll go ahead and keep this open; if anyone else ever stumbles across it and feels like doing the work, I'd be happy to accept a PR, as I say. :) I might eventually feel motivated enough to work on it again, myself, too.

Cheers!

@AxDSan
Copy link
Author

AxDSan commented Apr 14, 2020

No worries! I'll go ahead and keep this open; if anyone else ever stumbles across it and feels like doing the work, I'd be happy to accept a PR, as I say. :)

Cheers!

Sure thing!

@apocalyptech
Copy link
Owner

FYI, I just discovered today that the protobuf library I was using has a native import/export in JSON format, which would probably make digging into this quite a bit easier. I've just released a new version which supports doing the export/import with JSON, so perhaps that'll be enough for someone to have an easier time digging through that stuff.

@AxDSan
Copy link
Author

AxDSan commented Apr 14, 2020

FYI, I just discovered today that the protobuf library I was using has a native import/export in JSON format, which would probably make digging into this quite a bit easier. I've just released a new version which supports doing the export/import with JSON, so perhaps that'll be enough for someone to have an easier time digging through that stuff.

Awesome sauce 🙌 Pretty cool stuff, I will update and check it out! Thanks! +1

@AxDSan
Copy link
Author

AxDSan commented Apr 15, 2020

Ok so, taking a look at the json file, it's way more readable of course, thanks! 👍 Also, it's all true what you said...

Basically skipping the campaign would require the player to:

  • Insta-Hit level 57 (Because there would be no reason whatsoever to have the entire campaign skipped and then be stuck at level 1?)
  • Unlock all the locations for the map zones (Fast Travel) and stuff...

So, it's doable... (at least for skipping the actual campaign) I took one saves file from your historical archive for save files and basically took the lowest level and with the most uncompleted missions, so ...very beginning, and ...11-did-sanctuary or something like that, then I copied and pasted my entire mission_playthroughs_data from a player save file that had the playthrough completed, and then used bl3-save-import-json to import the data back into a save file, reloaded in game and there it was, all missions completed and playthrough unlocked...

now... all that was done by hand... the thing is to make it of course, automatic or with less interactions as possible.

adding the travel zones still remains untested as for me... but it's 10'clock at night, and I'm tired :D just finished, testing some builds and this now, I need some rest 🤣🙌 - will keep this updated!

--- EDIT ---
Here's a something something, I decided to plug along:
Watch

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants