-
Notifications
You must be signed in to change notification settings - Fork 94
feat: Transfer assets of disconnected players to allies #1523
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
base: main
Are you sure you want to change the base?
feat: Transfer assets of disconnected players to allies #1523
Conversation
LGTM. btw I love the code comments here, haven't heard the word bonehead in ages :) |
msg->appendBooleanArgument(FALSE); | ||
#else | ||
msg->appendBooleanArgument(TRUE); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is hard to understand this thanks to the bad message design.
Better write like so:
#if RETAIL_COMPATIBLE_CRC
const Bool transferAssets = FALSE;
#else
const Bool transferAssets = TRUE;
#endif
msg->appendBooleanArgument(transferAssets);
msg->appendBooleanArgument(FALSE); | ||
#else | ||
msg->appendBooleanArgument(TRUE); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I do wonder, should transfer assets on disconnect be configurable in GameData.ini? Given EA designed it this way, maybe some Mods want to preserve the original design and encourage players to upkeep stable connections that way?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can agree with that statement. I can see how some mods would like to have this behavior adjustable. It would be especially useful to know who would receive the assets in case there are multiple players on the team left, as possible with 3v3 or more. This goes for surrendering normally too.
For in the far future it would be interesting to make this setting adjustable further; do players get all assets, are they randomly distributed among remaining teammates, or do you get money only?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I cannot come up with reasonable rationale for making this adjustable or why a mod or even anyone would think this is desirable. What benefit is there to differentiating behaviour between surrender and disconnect? If a setting is desired for what happens to an ally's assets on defeat, it should apply to all cases and not differ between exit, surrender or disconnect.
Besides that, I don't think it's worth giving any weight to whether 'EA designed it this way,' considering we can see an unused alternative implementation in Network::RelayCommandsToCommandList
with the assets being transferred. I doubt there's any intentional design here, especially when the alternative is an objective improvement.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I cannot come up with reasonable rationale for making this adjustable or why a mod or even anyone would think this is desirable.
There is a tangible difference between transfering assets on surrender and on disconnect: The first is a concious choice by the player. The second is likely an accident. Team mates and opponents can vote a player out. Historically team mates were not encouraged to vote out their team mate. But with this change, team mates could be encouraged to vote out their team mate (fast), for example if the player is not a good player and the team mates want to get hands on his stuff. I think this change will have some impact on user behavior in the disconnect screen.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why should that difference have any bearing on gameplay? Whether it's a conscious choice or an accident, the outcome is the same and the player is no longer playing.
Following your logic, the opposite is currently true and players are encouraged to vote out their opponents (fast). Is this not worse? And does it even make a difference given that all players have to vote? I think you're overlooking the fact that a team's opponents would also have to vote out the respective player (fast), and I doubt they'd be so hasty to do so if it was disadvantageous.
I don't understand your example; if a player is deemed bad, their team mate(s) will often tell them to quit so they get their stuff or they'll simply restart with someone else. Do you think it's realistic for them to wait around on the off chance that particular player disconnects so that they (and their opponents, apparently) can vote them out (fast)?
Regardless, if the disconnect timer is going to reach 0 anyway - and it usually is when voting comes into effect - then voting outcomes / behaviour is irrelevant and only serves to expedite the process.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Any opinions on this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Any opinions on this?
I think this behaviour change is ok. One way or the other, one team is a player down after disconnect. Consistent behavior is a plus. As a potential follow-up it might be good to allow remaining players to choose who gets the assets if there are more than 1 left.
I cannot come up with reasonable rationale for making this adjustable or why a mod or even anyone would think this is desirable.
Coop missions are a good example of when you would not want to have assets transfer under any circumstances. It defeats the point of the coop. This is what I meant to say with adjustable behavior. In the best case this would be adjustable per map though, not globally.
The fact that it is currently possible to do so is another problem for another time.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Coop missions are a good example of when you would not want to have assets transfer under any circumstances. It defeats the point of the coop.
Why? Does a disconnect not defeat the point of coop regardless of whether assets are transferred?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps, but with this change the mission would still be possible to complete without the second player. Coop must end in failure when one player is defeated, as would happen in retail on disconnect.
This change would no longer enforce this, as assets transfer to remaining player who can then finish the mission as a singleplayer-like map. From a social perspective I agree that it makes no sense here to continue alone when you want to play together, but the technical perspective still stands that it is possible when it shouldn't
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How about add a "TransferPlayerAssetsOnDisconnect = yes/no" option to GameData.ini ?
Then make it initialize as false with CRC_COMPATIBLE_CRC
Fixes #162
This change allows a player's assets to be transferred to their allies upon disconnect.