Hero change before bridge

I haven’t ever understood why can’t we change heroes when mission has already been chosen, but everyone is not in the Bridge.
A lot of the time when quickplaying into a half-formed group I’d like to change career or to another available hero, but I’m not allowed to do that unless I ask the host to cancel. Why aren’t we allowed to do that as long as someone’s not loading in with another hero ? Even then it could be allowed since there’s always one choice available and someone who’s loading in for a long time either already has a hero chosen or has it set to ask upon loading in.

Because when the portal is open, the game is looking for players immediately, and it’s important for the sake of matchmaking that you can’t change characters, 'cause someone could be in the middle of joining as, say, Saltzpyre, and if you change to saltzpyre now they’re forced to play another character.

That said, changing class within the same character shouldn’t cause an issue, so that’s an option.

3 Likes

Like Kaelus said, it’s probably for technical reasons. It is a bit annoying though.

Host’s game knows who is joining and has the information on the chosen hero. Thus it should be possible to allow heroes to be changed, with the joining player’s hero not being available to change into.

If the joining player has suggest other heroes turned on, anything could be chosen.

Not until just before the join is complete; at that stage connection has already been successful and then it does a hero-check to see if their preferred character is available. The functionality you are recommending is the same tool that would be required to hot-swap characters mid-level… one where the game is constantly checking to see if Kruber is still Kruber and not Kerillian as opposed to just launching the game with that sort of information stored and constant (to a point; players joining and leaving the game can change that stored information but it always has a default set to fall back on).

This is a one time check. It goes through a list and says “Okay what’s available?” and then goes back to the joining player with a list of available characters. It doesn’t somehow constantly ferry that message 1000s of times a second, it’s a 1-off request. Thus, if it made that request and then you changed heroes, it’d break.

Instead, they left the game “phased,” so there’s a soft lock set on your character when you open the bridge. Selecting a mission moves you to the next phase of launching the game where it saves a bunch of information so that it can correctly receive connections from other players (specifically, players from their match-making system as opposed to a direct join from a Steam friend).

This is all guesswork, of course, I’ve never read through FatShark’s code for how they do it, but I’d be willing to put a small wager on it.

Yeah, that’s exactly the point. This could be resolved a bit differently.

Making a possible sequence human readable:

Joining player’s game (JP) to Host1(H1): Hi, I want to join your game. I have Kruber locked in. I don’t want to play anything else.
H1 : Hi, We have one slot open and Kruber is not available. Bye.
H1: Looking for next available game, found H2.
JP: Hi, I want to join your game. I have Kruber locked in. I don’t want to play anything else.
H2: Hi, we have one slot open and Kruber is available. Locking Kruber until you load in.
JP: Understood. Loading in. Give me the rest of session data, etc.

I understand there could be "what if"s with this, like joining player disconnecting or taking too long to load, etc. All that can be dealt with though.

Also changing heroes could have a short cooldown, so that if you’ve done it , you can’t do it again for 10s or so while the bridge is open. That would ensure no data mismatch.
Same thing with joining players. If someone’s client has said they’re loading in with a certain hero, it couldn’t be picked for swapping to at all, just as if they were already in game.

Not sure why the game would “check” something constantly during joining. With the ‘suggest other heroes’ option existing it only needs to check in the beginning. If the joining player only wants to play Kruber, that’s not going to change once they’ve loaded in. If they however have suggest other heroes turned on, they will get to choose anyway, which again brings us to the same point. that information needs to be exchanged only once per join request if joining hero is locked the moment the client says to the host that it accepts the conditions and is loading in, which should be the first thing to do anyway.

Well i think they could at least swap career of the same character.