FAForever / fa

Lua code for FAF
224 stars 231 forks source link

Decapitation as a rated victory condition #5347

Open phongu opened 1 year ago

phongu commented 1 year ago

Decapitation is currently an unrated, modded victory condition implemented by Sheikah. It lets people continue playing even after their commander dies, but the game ends in a loss for the team that loses all commanders. It's a nice feature for full-share games with a mix of new and veteran players because it avoids the problems associated with the highest rated getting double eco after a beginner dies, and it punishes beginners less for using their commanders, which is otherwise one of the hardest things to learn because of the extreme cost associated with losing it. From the tests I ran with Decapitation, the game balance was less volatile than standard full-share.

Integrating it as a core feature would increase it's visibility (since by default, modded games are not shown in the custom game list) and making it rated has already been ok'd by the balance team in this forum thread

Garanas commented 1 year ago

We'll pick this up in the 4th developers iteration

Garanas commented 1 year ago

I'm not sure if it being integrated would make it rated. I think only assassination is rated. @Askaholic could you help us with that question?

Askaholic commented 1 year ago

Yes I believe you’re correct, it would have to be added as a valid victory condition in the server code.

https://github.com/FAForever/server/blob/a6c626afb7b25224988fbe9471c28d8f32a1895f/server/games/game.py#L656

Garanas commented 1 year ago

Would that be a difficult change? Bear with me, I have no knowledge of the setup or architecture of the server 😄

Askaholic commented 1 year ago

No it wouldn’t be very difficult

Garanas commented 1 year ago

Then the remaining question is who decides that the mode is rated or not 😄 , is there previous suggestions or decisions on this topic?

Askaholic commented 1 year ago

Great question. I think history won’t really help us here as it probably was determined by a lone dev in the past who just decided how the rating decision should work. I would think some consortium of the balance, game and dev teams might make sense, since it’s kindof more of a metagame decision.

Garanas commented 1 year ago

I've started the discussion with the balance team in their channel

Garanas commented 1 year ago

The balance team is in favor. That's one down. What other dev teams would be involved in this decision?

Askaholic commented 1 year ago

I’d probably see what @Brutus5000 and @Sheikah45 think.

Sheikah45 commented 1 year ago

I am fine with it. Seems to me to be on the same level as full share vs no share, just has to be clearly communicated which it is in game

Garanas commented 1 year ago

I was thinking of an announcement at the start, like the pause announcement?

Sheikah45 commented 1 year ago

What about just some icon like full vs no share?

Since generally people are annoyed by the text

Brutus5000 commented 1 year ago

I should not have any stakes in this decision. But I like the idea from a players perspective.

Garanas commented 1 year ago

What about just some icon like full vs no share?

Since generally people are annoyed by the text

@Sheikah45 Where is this icon?

Garanas commented 1 year ago

I think we can call it and that we can proceed to make it rated. @Askaholic are you available to make the server changes, or should I ask BlackYps?

Sheikah45 commented 1 year ago

What about just some icon like full vs no share?

Since generally people are annoyed by the text

@Sheikah45 Where is this icon?

It might not be an icon but I am talking about the info in the scoreboard

Sheikah45 commented 1 year ago

@Garanas One thing I thought of that I never tested with the mod is to make sure units are still transferred when a player gets disconnected.

Garanas commented 1 year ago

I'll test it thoroughly when integrating it 😃 . If we put it on the (standard) scoreboard then people may not see it because of UI mods replacing the scoreboard

Sheikah45 commented 1 year ago

I would probably be inclined to say that is on the scoreboard author to update it to reflect the information. As historically by now we have established like info like that is on the scoreboard. But that is just my opinion.

Rather than having a text announcement every game.

Askaholic commented 1 year ago

You should ask @BlackYps. I should be able to find time for code review and making a release though.

Garanas commented 1 year ago

I would probably be inclined to say that is on the scoreboard author to update it to reflect the information. As historically by now we have established like info like that is on the scoreboard. But that is just my opinion.

Fair enough, I agree

BlackYps commented 1 year ago

Yes I believe you’re correct, it would have to be added as a valid victory condition in the server code.

https://github.com/FAForever/server/blob/a6c626afb7b25224988fbe9471c28d8f32a1895f/server/games/game.py#L656

So this is supposed to get integrated into the base game? I believe the relevant lines would then look like this


if self.gameOptions["Victory"] not in (Victory.DEMORALIZATION, Victory.DECAPITATION):
    await self.mark_invalid(ValidityState.WRONG_VICTORY_CONDITION)
Garanas commented 1 year ago

And where does it get the DECAPITATION value from?

BlackYps commented 1 year ago

On the server the victory is just an enum that matches the victory conditions to integers. I am not sure where those originate from, but they also seem to be saved in the database.

Garanas commented 11 months ago

I'll soon start on implementing this so that we can ship it with the 4th development iteration. Has there been work on the server on the matter?

BlackYps commented 11 months ago

No, not yet