I am implementing a before-match setup in following way:

  1. Users request a multiplayer match (click "New Game" button or similar)
  2. After enough users request the match – connection is established
  3. Users are then moved into Select level view
  4. On that view, there is "Become Master" button, which an user can use to become Master
  5. The Master has ability to select level to play
  6. After clicking "Become Master" – the users vote – simple popup appears "Accept User X becoming Master?"
  7. If > 50% agrees, user X becomes master.
  8. Master then selects level he wants. After 10 seconds, game starts – all users are moved to In-game view, to play selected level.

Question: I am wondering if I am not doing this too complicated? Shouldn't I randomly choose the master, or somehow make selection mechanism simpler?


There are several potential problems with your protocol: First, if several players want to become Master, there can be several polls, which might be annoying for some players. Second, and more important, if no player gets >50% of the votes, your protocol does not yield a Master at all.

I would suggest to give your players a couple of seconds to decide whether or not they want to be the Master. Then let them vote for any of the contenders. The player with the most votes becomes the Master. If there is a tie, I would recommend to choose a player randomly, but you can also have another poll as a tie-breaker.


Why not just have users vote on the level or other selectable options instead of the master?

Many times it might be hard to get over 50% of the players to vote on anything; so there may never be a master in most games.

What you should have is the ability to vote on a level and the level or options with the most votes will be played regardless of what percentage of votes have been cast.

If there is a tie then choose randomly between the tied options.

  • \$\begingroup\$ Voting on options seems to be more complex. With the master approach, whole level selection code is fully reused, and no other code is needed – if only Master is selected (to be precise, code needed is: a) sending selected level to players, b) sending and displaying current proposal – the 10 sec before match starts) \$\endgroup\$
    – AllCoder
    Aug 26 '12 at 19:01
  • 1
    \$\begingroup\$ If you can write code to send a selected master player to users, display that, and get an answer back, then you have all the code you need to negotiate a level or any other option. There's no reason you'd need to rewrite all of that for every individual option. \$\endgroup\$ Aug 26 '12 at 19:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.