-
Notifications
You must be signed in to change notification settings - Fork 63
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
Party system, team matchmaking #423
Party system, team matchmaking #423
Conversation
Please use the new draft pull request feature for WIP PR's |
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.
Nice initial work, you're doing well 👍
Left generic comments on the code. Seems like what's missing for full functionality is party matchmaking and game launching + any rating/scoring changes required?
Tracking issue #19 |
❤ |
Scoring/rating is intended to apply to the normal global rating as the intention of this was to get people out of playing single maps and make them try other maps out of a map people while reducing the lobby sim aspect. |
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.
Didn't quite get through everything, will take a look at it this evening.
c6c74af
to
d2230d1
Compare
3cba3b6
to
fab2d70
Compare
server/team_matchmaking_service.py
Outdated
|
||
pending_invite.party.add_player(recipient) | ||
|
||
self.remove_disbanded_parties() |
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 do disbanded parties have to be checked here? Shouldn't they be checked here:
if pending_invite.party not in self.player_parties:
self.remove_disbanded_parties()
raise ClientError("The party you're trying to join doesn't exist anymore.", recoverable=True)
OK. Finished reading through it. Over all it's very clean nice job! One other thing that occurred to be because of something Downlord mentioned, was that we should maybe think about how the clients could localize our server messages. So everywhere we have something like: raise ClientError("The invited player doesn't exist", recoverable=True) Maybe we want to be sending some localizable error code instead? Just a thought. |
b1d18c3
to
df0704c
Compare
Using indices into a boolean array was confusing as it was non obvious what each index represented. This lead to some immediate implementation mistakes where the server implementation assumed that the indices mapped to their one indexed lua counterparts, while the client implementation assumed that the factions were sorted alphabetically from left to right. This new approach is less error prone, requires fewer bytes to transfer the same information, and is more flexible-- even allowing the selection of nomads or other future faction for special game modes.
As searches can only be started by party owners, the guests may not have decided what factions they want to pick when the owner enters them into the matchmaker queue. Therefore we should allow them to change their faction preferences up until the moment they are matched. Fixes #679
287154d
to
966e8cd
Compare
966e8cd
to
f27bba6
Compare
Add party system.
TODO:
invalid_state
messages? These states are internal things and violations should probably generate ClientErrors instead (i.e. if a player tries to join a queue while they are still in a game, the client should be able to catch this and prevent it)queue
orqueue_name
fields to the same thing (pick one for consistency)Closes #613
Closes #632
Closes #679