spring / uberserver

uberserver, a matchmaking/chat lobby server for the spring rts project
https://springrts.com/wiki/Uberserver
Other
33 stars 38 forks source link

FORCEJOINBATTLE is unusable #115

Closed Licho1 closed 10 years ago

Licho1 commented 10 years ago

For common scenario, we want to move people from existing battle to another. This happens:

Atm FORCEJOINBATTLE does not work if client is already connected in a battle. Instead of giving up uberserver should make player leave battle (ordinary playerleft message so that there is no error from kick popup etc) and then join him to a target battle.

abma commented 10 years ago

whats the error message?

the stuff you wrote should work.

also you should read docs how it works:

http://springrts.com/dl/LobbyProtocol/ProtocolDescription.html#FORCEJOINBATTLE:client

(it doesn't look so...)

Licho1 commented 10 years ago

Oh you mean its extra command? But lobbies wont support it .. does it have legacy support via flag?

abma commented 10 years ago

springlobby supports FORCEJOINBATTLE since version 0.147...

Licho1 commented 10 years ago

Yeah but it asked user there...

abma commented 10 years ago

thats up to the lobby devs / user if he wants a prompt or not imo. also this command was discussed a lot in meetings.

abma commented 10 years ago

side note: also current springlobby DOES NOT prompt. why do you write so many assumptions?

this command works! if not provide details.

Licho1 commented 10 years ago

Sadly that makes it unusable... in all meanings its "force" move..

Thats why forge is used .. command which does not need client to implement anything new

abma commented 10 years ago

a client could add a check if it issued the command or not. if it didn't issue the command it ignores the JOIN.

abma commented 10 years ago

if you split host, it happens at a fraction second before game starts. If user wont react in time one game will be bigger

thats non-sense. you don't split a host which you don't have control at. -> don't start when you want to split it at the same time.

when using move/forcemove - meaning is to move entire population of battleroom to a new room..

you can with current command.

when using matchmaker/pw it has to move even semi-idle person in, because move happens again split second before matched battle starts..

i don't understand that.

abma commented 10 years ago

Atm FORCEJOINBATTLE does not work if client is already connected in a battle.

i tested it some time ago, it worked.

Instead of giving up uberserver should make player leave battle (ordinary playerleft message so that there is no error from kick popup etc) and then join him to a target battle.

FORCEJOINBATTLE works like that, but depends on client implementation.

abma commented 10 years ago

It seems Zero-K Lobby Client doesn't support it, springlobby does!

gajop commented 10 years ago

Personally I think it's weird that clients get the FORCEJOINBATTLE sent to them. I don't think users should have the option to ignore FORCEJOINBATTLE: it just complicates client code and gives room for differing behavior/non-compliance between lobbies.

Users should just get the JOINBATTLE/LEFTBATTLE or whatever else they might need. It shouldn't matter whether it was FORCE* or not.

I'm guessing you already had that discussion once, but I'm too lazy to find out the dev meetings :P

abma commented 10 years ago

i can't say to reasons, etc. but it was discussed a lot it seems:

http://springrts.com/phpbb/viewtopic.php?f=80&t=27730&p=515419

abma commented 10 years ago

@gajop:

FORCEJOINBATTLE is a replacement for:

FORGEREVERSEMSG user LEAVEBATTLE FORGEREVERSEMSG user JOINBATTLE battleid

FORGEREVERSEMSG was/is a command which allows a user to fake any message to a client. this is a huge bug-trap/security hole, this is why it will be removed.

Licho1 commented 10 years ago

Ok I will switch to forcejoinbattle but if there are lobbies that will make it optional etc. they will make it unusable. In that case I hope you can just implement leavebattle/joinbattel from server instead of relying on client compliance..