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

Impliments a new voting system for weekends and wednesday: Hybrid FPTP weighted random from preferences #26879

Conversation

Qwertytoforty
Copy link
Contributor

What Does This PR Do

Adds the hybrid hellish first past the post system of preferences.
This works as the following:
image

Ok, that paint diagram sucked.

You rate the maps you want in preferences, from 1-5. This means for the days with these systems you do not manually vote.
Then, we remove the most recent 2 maps. Last rounds and the current rounds map.
Let us say you had cyberiad, delta and faragus as your3 most favourite maps, cyberad the highest, faragus the lowest. You would vote cyberiad by default, but if it is not an option, it would pick your next best choice, delta. If thats not an option, you vote for faragus.
Afterword, it tallies up the votes for the 3 active maps.
It then does a weighted pick of these 3 maps. Spinning a wheel, with 1 slot for each vote. This means that we don't get the same 3 maps in a row, there is chance for the less popular maps, but generally its what the majority of the playerbase wants, without it swaping between say, box and diagoras over and over every 2 rounds.

adds the required config change to example, and the stuff for the database. Thank you so much @warriorstar-orion for helping with this pr.

Why It's Good For The Game

We don't have people voting for maps, yet they complain about what maps roll!
This should help. This system gives you what you want (per preferences), while avoiding 2 maps looping forever by making it exclude the last map as well as current, as well as implementing the weighted random.
It avoids the issues of random map selection by being what people online want, and without repeating too often.
It fixes people not voting by working off preferences.
It also gives us information we can track for peoples maps rated most popular to least.
Hopefully, people like it.

It might be worth forcing people with 100+ hours (new players wouldn't know the map), to vote, otherwise they can't join the round, so we don't have people not voting that know maps

Testing

working with warriorstar to make sure it updates the database rights, saves properly, ect,
Testing with multiple clients to ensure the votes are placed correctly, last map is loaded, vote% is mostly accurate (note if people do not select maps it will not be accurate.


Declaration

  • I confirm that I either do not require pre-approval for this PR, or I have obtained such approval and have included a screenshot to demonstrate this below.

image
yes that says stupid vote idea thats because I doubt myself every time I look in the mirror.

Changelog

🆑 Qwertytoforty, warriorstar-orion
add: Adds a new map voting type. Hybrid First past the post, with weighted random. See the pr for details.
add: Adds map preferences. Check under the antagonist and maps tab in game preferences, and vote on them!
/:cl:

@ParadiseSS13-Bot ParadiseSS13-Bot added -Status: Awaiting type assignment This PR is waiting for its type to be assigned internally SQL Change This PR modifies the game database. This PR must go through the host. Configuration Change This PR changes the game configuration files. Please run via the host. labels Sep 22, 2024
SQL/paradise_schema.sql Outdated Show resolved Hide resolved
code/controllers/subsystem/non_firing/SSmaprotate.dm Outdated Show resolved Hide resolved
@Christer2222
Copy link

It might be worth forcing people with 100+ hours (new players wouldn't know the map), to vote, otherwise they can't join the round, so we don't have people not voting that know maps

Not sure I understand what you mean here, say you get up to get a snack or do some stretches at the shuttle and you don't make it back in time to vote, does that mean you won't be able to play the next round, if you have more 100+ h?

I also think that it would be better to swap the Tuesday and Thursday fully random maps with weighted random, as it is better for giving people the map they want to play. Having the least popular map get picked is sure to upset some people

@Qwertytoforty
Copy link
Contributor Author

It might be worth forcing people with 100+ hours (new players wouldn't know the map), to vote, otherwise they can't join the round, so we don't have people not voting that know maps

Not sure I understand what you mean here, say you get up to get a snack or do some stretches at the shuttle and you don't make it back in time to vote, does that mean you won't be able to play the next round, if you have more 100+ h?

I also think that it would be better to swap the Tuesday and Thursday fully random maps with weighted random, as it is better for giving people the map they want to play. Having the least popular map get picked is sure to upset some people

IT works off preferences. You save the maps you want, from 1-5 in prefernces.
You only have to set it once, though you can change it if you want.
The idea of the 100+ lock (theoretically, not implimented), is it makes sure people know about the option and use it, rather than a large portion having it unfilled.
It would not lock you out if you did not press the map vote button, that button would not show up on that rounds

@ParadiseSS13-Bot ParadiseSS13-Bot added Testmerge Requested This PR has a pending testmerge request -Status: Awaiting approval This PR is waiting for approval internally -Status: Awaiting review This PR is awaiting review from the review team and removed -Status: Awaiting type assignment This PR is waiting for its type to be assigned internally -Status: Awaiting approval This PR is waiting for approval internally labels Sep 22, 2024
@github-actions github-actions bot added the Merge Conflict This PR is merge conflicted label Sep 27, 2024
SQL/updates/59-60.sql Outdated Show resolved Hide resolved
code/__DEFINES/misc_defines.dm Outdated Show resolved Hide resolved
@S34NW
Copy link
Member

S34NW commented Oct 7, 2024

Why even keep random and vote at this point, just replace them entirely with this one

@Henri215 Henri215 added the Tweak This PR tweaks something ingame label Oct 15, 2024
code/controllers/subsystem/non_firing/SSmaprotate.dm Outdated Show resolved Hide resolved
code/modules/client/preference/link_processing.dm Outdated Show resolved Hide resolved
code/controllers/subsystem/non_firing/SSmaprotate.dm Outdated Show resolved Hide resolved
code/controllers/subsystem/non_firing/SSmaprotate.dm Outdated Show resolved Hide resolved
code/controllers/subsystem/non_firing/SSmaprotate.dm Outdated Show resolved Hide resolved
code/controllers/subsystem/non_firing/SSmaprotate.dm Outdated Show resolved Hide resolved
code/modules/client/preference/link_processing.dm Outdated Show resolved Hide resolved
code/controllers/subsystem/non_firing/SSmaprotate.dm Outdated Show resolved Hide resolved
@github-actions github-actions bot removed the Merge Conflict This PR is merge conflicted label Oct 27, 2024
Copy link
Member

@DGamerL DGamerL left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

decide_next_map() LGTM

code/__DEFINES/misc_defines.dm Outdated Show resolved Hide resolved
Copy link
Contributor

@Burzah Burzah left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am approving for the SQL stuff, though this would need to be moved to its own PR and handled that way, in order to facilitate an actual test merge of this system.

That being said, I am with @S34NW on this one. If we are going to go in with changing the voting system in general, I would rather see this become the norm for everything (depending on how the test went, what the stats are, etc). I don't think it is very intuitive to keep it the way it is now and have it vary by days, given that we are also adding this into player preferences. It should just become the standard, if this is the solution. I will say that my preference for the whole map rotation system would be true random, no repeats, population limits based on maps. Regardless, changing it now would be a step in the right direction.

Co-authored-by: DGamerL <[email protected]>
Signed-off-by: Qwertytoforty <[email protected]>
@github-actions github-actions bot added the Merge Conflict This PR is merge conflicted label Nov 9, 2024
Copy link
Contributor

@Contrabang Contrabang left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Technically this isnt first past the post since its pickweight but idc

@ParadiseSS13-Bot ParadiseSS13-Bot added -Status: Awaiting merge This PR is ready for merge and removed -Status: Awaiting review This PR is awaiting review from the review team labels Nov 11, 2024
@github-actions github-actions bot removed the Merge Conflict This PR is merge conflicted label Nov 12, 2024
@AffectedArc07 AffectedArc07 added this pull request to the merge queue Nov 14, 2024
Merged via the queue into ParadiseSS13:master with commit da630e1 Nov 14, 2024
11 of 12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-Status: Awaiting merge This PR is ready for merge Configuration Change This PR changes the game configuration files. Please run via the host. SQL Change This PR modifies the game database. This PR must go through the host. Testmerge Requested This PR has a pending testmerge request Tweak This PR tweaks something ingame
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants