Voting

#1
The multi-voting system has been pretty successful at mixing up map orders since being imported to siege. However, I have received several complaints about its first-past-the-post nature, and encouragement to add a "second choice" ability. To solve this, I have coded a multi-round voting system (also known as "exhaustive" or "runoff" voting).

How it works:
  • 1. Vote for a map from the available choices.
  • 2. Is there is a majority vote for one map (50%+1)? If yes, it wins.
  • 3. Is there a 50-50 tie between exactly two maps? If yes, RNG picks the winner.
  • 4.
    • Old FPTP system: the map with the highest number of votes wins.
    • New system: remove all maps with zero votes, and remove one map that is in/tied for last place. Go back to step 1.

Consider the following scenario:
  • Hoth: 2 votes
  • Nar: 1 vote
  • Cargo: 1 vote
  • Urban: 1 vote
  • Bespin: 1 vote
Under the FPTP system, Hoth would win, despite the fact that a majority of players (4/6) did not vote for it. Under the new system, however, it proceeds differently. A random 1-vote map is removed, and that guy can re-vote. Repeat as needed until step 2 or step 3 is satisfied.


Won't this take a long time?
I made each round of voting last 15 seconds (instead of the normal 30), so it could actually end up being shorter, depending on how many rounds there are.

Will this require more effort?
The new system fully supports abstention at any and all rounds of voting, so you can be as lazy as you want. So let's say your attitude is "I only have a burning desire to play map X; I don't care between the other maps." In this case, you can simply /vote x and then go AFK without ever re-voting.

Why not vote for your entire list of preferences at once, like "/vote hncub"?
Two reasons:
  • 1. This system is a bit easier of a user experience; you don't have to hold a list of 5 ordered maps in your brain. You just /vote x for one map at a time when it tells you to.
  • 2. That would be pretty complicated and a lot more work to code. Maybe in the future.
cron