Skip to content
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

Weighted Slotting #366

Merged
merged 12 commits into from
Aug 28, 2024
Merged

Weighted Slotting #366

merged 12 commits into from
Aug 28, 2024

Conversation

Doubleumc
Copy link
Contributor

@Doubleumc Doubleumc commented Aug 10, 2024

About the pull request

The order in which players pass through the roundstart slotting system is now weighted.

All players have a base weight of 1.
New players under 2 hours human playtime get +2 weight, 2-5 hours get +1 weight.
Each round after the first two a player fails to get a slot, cumulative +1 weight. Resets to 0 upon getting a slot.

Players are still picked randomly, with higher weights having a higher chance to be picked.

Explain why it's good for the game

Right now, on average, every player has an equal opportunity to be picked. But it doesn't feel fair when you're on a 10+ round streak of not being picked.

With this change, on average, every player will still be picked the same amount of times as before. But those rounds you get to play should be distributed more evenly, so you don't hit a 10+ round dry spell.

Testing Photographs and Procedure

Screenshots & Videos

Put screenshots and videos here with an empty line between the screenshots and the <details> tags.

Changelog

🆑
code: changed slotting - new players and players that got skipped previous rounds have a higher chance to get a slot
/:cl:

@Doubleumc
Copy link
Contributor Author

Want to confirm the database stuff is sound before letting this touch the servers.

multi-tiered new player bonus, delayed streak bonus
don't try to assign players that have no wanted jobs
moves the weighted shuffle to the list generation
move the weighted shuffling logic into a separate, more robust proc
want to make sure everything is solid before letting it touch the DB
@Doubleumc Doubleumc marked this pull request as ready for review August 14, 2024 07:26
its not going to blow anything up
was shuffling the wrong list
ensure a client (and prefs) exist before adding to list
was already filtering to new_players so use the list for it, also expand single letter var M to player
@Doubleumc Doubleumc added the needs tested testmerge this to see what breaks label Aug 15, 2024
@messagecypher
Copy link

messagecypher commented Aug 18, 2024

just a little criticism
people who don't manage to get in the server and ready up before round start or entirely miss the operation seem to be at a little disadvantage: they don't get their +1s since they don't manage to join during round start and ready up.

the new player weighting is great, since it allows new players to get into PVE further by getting their hours in
but the +1 for every round you don't roll seems a little bit unfair to people who can't get into the server

while the streaks of not playing 10 rounds in a row is painful, its also just as bad as playing one round and coming back in a week only to have 10 more people with 2+ roll weight because they didnt get picked four times in the day before

(theres also the concern of multikeying/making an alt for the +2 weight but thats a non-issue since the PVE community isnt that bad)

@Doubleumc
Copy link
Contributor Author

Thank you for your feedback. Weighted slotting isn't perfect and can't possibly be perfect, but its trying its best to bring a little fairness to a random system.

people who don't manage to get in the server and ready up before round start or entirely miss the operation seem to be at a little disadvantage: they don't get their +1s since they don't manage to join during round start and ready up.

the new player weighting is great, since it allows new players to get into PVE further by getting their hours in but the +1 for every round you don't roll seems a little bit unfair to people who can't get into the server

People who are late or miss the operation entirely are already disadvantaged -- you cannot get slotted if you're not there to be slotted. That's not the kind of "missed slot" that weighting can do anything for or against. Not being there for roundstart is going to have the same outcome.

while the streaks of not playing 10 rounds in a row is painful, its also just as bad as playing one round and coming back in a week only to have 10 more people with 2+ roll weight because they didnt get picked four times in the day before

I agree that missing 10 rounds in a row would suck, and only getting to play once a week and missing the roll would also suck. But a more appropriate comparison would be missing that weekly roll 10 weeks in a row -- that would really, really suck. These streaks of missing rounds is what the system is intended to prevent.

(theres also the concern of multikeying/making an alt for the +2 weight but thats a non-issue since the PVE community isnt that bad)

If someone were to multikey and somehow not be detected, they already have an advantage of getting two random chances to be in the round. The weighting system is tracked per-ckey and would not change that.

"Fairness" is a nebulous concept. What form it takes and how it's measured has many, many potential answers. I won't pretend that this is the answer. Its simply an answer that is workable, implementable, and measurable with the tools available.

Should people who aren't there for roundstart be favored? By how much? Which roundstarts count, such as a test session vs "real" round? How are they determined? What about rounds with different slot counts (FORECON vs Blackstone)? Do they count more, less, the same? Is that more or less fair to the person who is there at roundstart?
Not being facetious. I don't know the answers either.

removed unnecessary assignment logging, added more useful ones
@Doubleumc Doubleumc merged commit ad20782 into cmss13-devs:master Aug 28, 2024
35 checks passed
@Doubleumc Doubleumc deleted the weighted-slotting branch August 28, 2024 18:43
cm13-github added a commit that referenced this pull request Aug 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Code Improvement do not merge needs tested testmerge this to see what breaks
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants