PlayMap System: An overview of a new map selection system

Introduction to PlayMap:

PlayMap is a new map selection system that is meant to be an alternative to map rotations and map voting, but still includes map rotations and voting as supplemental systems. PlayMap is intended to increase the variety of quality maps that are selected for game play, and prevent the selection from becoming stale and too repetitive. This system is also meant to give each individual player more control over the map selection process while keeping the process fair to each other individual player.

These purposes are achieved by allowing players to freely choose from a selection that is controlled by a combination of the previous choices of players, the current state of the server, and settings specified by the server owner. PlayMap is based on the mymap command described at this link: Sticky: Using the 'mymap' command .

The general functionality consists of a PlayMap queue that takes priority over the map rotation while there are still maps listed in that queue. Through PlayMap, you can only select maps from the play pool, which is a subset of the map list. Next map votes take priority over the PlayMap queue and allows for the selection of maps in the map list but not in the play pool.

Any player can add a map to the queue, however, once a player adds a map to the queue, they can’t add another map to the queue, until their added choice is no longer on the queue. The order of the queue is generally determined by a first come first serve basis (however that order can change based on the state of the server as described below). No map can exist in the queue more than twice.

The PlayMap system will include many cvars for server owners to adjust the system, and already includes a cvar to disable/enable PlayMap as a whole.

This system is still a work in progress and not all of the features/enhancements discussed here have bee implemented and tested on test7341 yet. Suggestions and constructive criticisms are welcome.


Rules:

  • If a nextmap vote fails, that particular map can’t be called again in another nextmap vote for 30 minutes.

  • Generally, the order of the maps in the playmap queue is determined by a first come first serve basis.

  • No map can be in the queue more than once at the same time.

  • When a map in the playmap queue is loaded, that map is then removed from the playmap queue

  • Each player can have at most one map in the queue at any time.

  • If a player disconnects from the server, and has a map in the playmap queue, that map is removed from the queue.

  • A player that has a map in the playmap queue, can change their chosen map by using /playmap to add another map, however, that map change would result in the placement of that map at the end of the playmap queue.

  • The next map available in the playmap queue is evaluated at the end of the match to check if the current number of connected players fall into the range required by that map. If that check fails, then the first subsequent map that satisfies that requirement is moved ahead to the current playmap queue slot. Any and all players that have maps in the queue that fail the range requirements during this check will be notified at the beginning of the next map.

  • If no subsequent map in the playmap queue has requirements that allows for the current number of connected players, then the playmap queue is suspended temporarily to allow the next map in the rotation to be loaded, after that rotation map is loaded, the playmap queue is unsuspended allowing it to be checked once again at the end of that map if the number of connected players satisfy the range requirements.

  • /callvote map would be disabled by default. This should be controlled by a cvar.

  • All votes would be disabled for the first 60 seconds a map is loaded, and for the first 60 seconds after warmup ends, and then would be re-enabled after that time. There should be one cvar that allows for adjusting the length of this delay.

  • /listmaps will list all of the maps available on the server. Maps in that list that are in the playmap pool but not in the playmap queue will be colored cyan, maps in the playmap queue would be colored
    blue, the current map being played & the last map played would be colored red, all other maps in that list will be colored white.

  • /callvote nextmap can only be applied to maps that are not in the playmap queue, and if /callvote nextmap is attempted on a map in the playmap queue, an error message will be returned saying “‘NameOfMapHere’ is currently in the playmap queue, type /adminhelp playmap for more information”.

  • Likewise, if /playmap is attempted on a map that is not in the playmap pool, an error message will be returned saying that that map is not in the playmap pool and can only be used by nextmap votes, and the message would indicate use /adminhelp callvote for more information.

  • If /callvote nextmap is used on a map that is in the playmap pool but not in the playmap queue, the map would be allowed to be voted but a reminder message would be shown in the voting prompt saying “This map is in the playmap pool, use /adminhelp playmap for more information”.

  • Otherwise, if either /callvote nextmap or /playmap is attempted on a map that is not listed in /listmaps, an error will return saying that that map can’t be found on the server.

  • Nextmap votes for the current map as well as for the previous map would require a threshold of 100% yes to pass.


The /playmap user command:

  • /playmap would be a command that would be flagged to admin levels (for example if the server owner only wants registered players to use /playmap).

  • If /playmap is entered without any arguments,

    • first the maps that are in the playmap pool that can currently be chosen to be added to the playmap queue are listed.

    • Then below that, the maps that are currently in the playmap queue are listed.

    • Below that, if the current map and/or the previous map is/are in the playmap pool, it/they is/are listed as recent maps. Each of those above lists would include list titles that would be printed to make it clear which list is for which purpose.

  • /playmap NameOfMapHere will

    • add a map from the playmap pool

    • that is not currently in the playmap queue,

    • that is not the current map, and

    • that is not the previous map.

    • that the adding player does not have another map in the queue.

    • An error message will be displayed if a map in the playmap pool is attempted by /playmap that is in the playmap queue saying “‘NameOfMapHere’ is currently in the playmap queue, type /adminhelp playmap for more information”.

    • Also, an error message will be displayed if a map in the playmap pool is attempted by /playmap that is the current maps and/or was the previous map saying"‘NameOfMapHere’ has been played recently, type /adminhelp playmap for more information"

  • If a “non-recent” “non-queued” map from the playmap pool that is added with /playmap has a “number of connected clients range” that the current number of connected clients do not satisfy, the map would still be added to the playmap queue, but a warning message would be shown that indicates if the number of players on the server does not satisfy the requirements for that map when its queue slot is evaluated, that map may be delayed in the playmap queue until the range is satisfied. The message would also indicate the minimum and the maximum. If a minimum was not defined, 1 player would be shown as the minimum in that message, or if a maximum was not defined, the maximimum number of players allowed on the server would be shown as the maximum in that message.


The /playpool admin command:

  • /playpool will be an admin command that would be used to adjust the playmap pool.

  • Entering /playpool without any arguments will list all of the maps that are only in the playmap pool, will show the number of clients range requirements for each map that has such a restriction specified, and will indicate to use /adminhelp playpool for more information.

  • /playpool add MapNameGoesHere will add a map listed in /listmaps that is not in the playmap pool (otherwise an error will be returned).

  • /playpool remove MapNameGoesHere will remove a map that is currently in the playmap pool (if the specified map is not in the playmap pool an error will return), from the playmap pool and returns that map to be available for /callvote nextmap.

  • /playpool clear removes all maps from the playmap pool, and returns them all to be available for /callvote nextmap.

  • /playpool reload loads the playmap pool from the saved playmap pool file. Any map in the playmap pool file that is not currently available on the server will not be added to the playmap pool, would be skipped, and a warning would be given that that/those map(s) are not currently available on the server, however, maps in that file that are available on the server would still be loaded. Before loading the playmap pool file, the file would be checked that it is properly formated, if it isn’t properly formatted the file will not load and an error would be given.

  • /playpool save would save the current playmap pool to the playmap pool file.

  • /playpool max MapNameGoesHere ValueGoesHere specifies the maximum number of clients for that map which must be an integer greater than zero and less than or equal to the maximum number of connected clients the server allows.

  • /playpool min MapNameGoesHere ValueGoesHere specifies the minimum number of clients for that map which must be an integer greater than zero and less than or equal to the maximum number of connected clients the server allows.

2 Likes

3 posts were merged into an existing topic: Debates and Observations of Game Concepts

Very nice, however there is one thing that I think you should adjust:

Some people spam nextmap votes, trying to get a specific map to be played next. However, I think a 30 minute interval is a bit of overkill. Even 5 minutes would reduce the annoyance down to almost nothing, and the spammer would likely get bored waiting 5 minutes between votes. Depending on how tenacious they are, however, 5 minutes might not be long enough.

Out of curiosity (sarcasm off), what do people do if, for whatever reason, a bad map does come up?

I see a potential, though minor, issue with this: suppose a player joins the server and wants to play a particular map that was just played?

– rlb

A cvar could be created for this delay for fine tuning. But the idea is that if a nextmap vote fails with the voting enhancements, subsequent next map votes should consider a different possible map that the current players online may prefer more than in a recent failed vote.

The other thing is that nextmap votes are meant to override the PlayMap queue so to speak (nextmap votes postpones the queue by one map, it doen’t replace the next map in the queue), which should not be an overly common occurrence.

If for whatever reason an actual majority of the players playing on the server wants to no longer play the current map, a draw vote is still an option.

As mentioned, one of the purposes of PlayMap is to avoid too much repetition and encourage variety. So if a map you really like isn’t an option at that moment, you would have to consider what other map that is an option would be something you would really like to play. If you are considering maps on the maplist but not in the playpool, you would not only have to consider which of those maps you might be really interested in playing, but also which of those would pass a next map vote presented to the players currently playing.

Ofc if the server really really wants an encore of a map that was just played, there is this option:

The following major features and enhancemnets of PlayMap have been implemented on the test7341 server today:

  • The PlayMap pool has been activated.
  • A player’s PlayMap queue is cleared when that player leaves.
  • Players can change their PlayMap queue entry.
  • Debug statements/cvar added, bugs fixed.