Hey!
Before you think "oh my god how long is this", I will sum up my suggestion in a short paragraph below. The text following that is my detailed suggestion, for people who manage to stay awake to read it.
Summary:
Maps could be processed before they are selected as the next map during round intervals. Through some calculations revolving around the size of the map, the space in the map, and the current players on the server, a value can be formulated which symbolises the difficulty of the next map. This value could be used in different ways. Firstly, it can be used to determine whether a map should be chosen, e.g. if a map is extremely big/spacey and the server player count is tiny, the map can not be put in for rotation. Secondly, it can be used to enhance the rewards/karma system - players who survive higher difficulty values would gain more from it. Lastly, a rating can be given to all players before the map changes. e.g. a rating from 1 - 10 for how hard the map is, will be shown as the players change map, so they know what to expect. Below is my actual concept, but if you're too bored already, this basically sums it up :)
Detailed Concept:
So, to expand on the title, by map 'processing' I am referring to the checking of the sizes of the maps, the content of the maps, and maybe pre-defined data for the maps (e.g. a difficulty rating for each map can be assigned by human-eye, which can also be used in the forumla). The purpose of this is to make sure large maps and/or very difficult maps (hard to infect people) are chosen only when there are a certain amount of players online which combats the extremely tedious long rounds where minimal people are caught, ultimately discouraging some new players from the server. It can also be used to create a 'difficulty value' for a map before it is played, which can be viewed by the players - i.e. before the map rotates, the difficulty of the next map can be a global message to give them an idea of how they might need to play. The difficulty may change, as it is proportionate to the number of current players.
I think this would be a great little feature, and you could even incorporate it into the rewards system. By this i mean, if a difficulty rating for a map is extremely high, and a player survives, they might get slightly more karma than usual (I don't really know the workings of karma so I'm unsure if this is plausible).
If you're wondering, how do you get the 'difficulty value', it should be calculated on map selection using a constant mathematical formula. For example, the main factor is going to be the map volume, or the map area (either/or). You could also take into consideration the amount of solid blocks or the amount of air blocks in the map, and turn this into a percentage of the total blocks in the map - allowing the server to comprehend how much space there is in a map for players to run and hide. Lastly, the solid blocks/air blocks can be taken into consideration only from the true ground level and above (i.e. above the adminium layer some maps have). This is all possible via code and some hard thinking :) It is important that the difficulty value is compared with the current amount of players, as this plays a major part in whether a map will be difficult/boring - more players makes it less difficult to get the game going.
Below is a very improvised formula that I made the other day elsewhere, it is only here as an example and only takes into account the solid blocks and the map's volume. It is just to help you understand what I mean by this unnecessarily long post (sorry about that).
I am open to constructive criticism and any support/agreements, so hit me with your best shot. Well this is far too long xD. Wow.. its 2013? I should get some sleep. Bye!
Before you think "oh my god how long is this", I will sum up my suggestion in a short paragraph below. The text following that is my detailed suggestion, for people who manage to stay awake to read it.
Summary:
Maps could be processed before they are selected as the next map during round intervals. Through some calculations revolving around the size of the map, the space in the map, and the current players on the server, a value can be formulated which symbolises the difficulty of the next map. This value could be used in different ways. Firstly, it can be used to determine whether a map should be chosen, e.g. if a map is extremely big/spacey and the server player count is tiny, the map can not be put in for rotation. Secondly, it can be used to enhance the rewards/karma system - players who survive higher difficulty values would gain more from it. Lastly, a rating can be given to all players before the map changes. e.g. a rating from 1 - 10 for how hard the map is, will be shown as the players change map, so they know what to expect. Below is my actual concept, but if you're too bored already, this basically sums it up :)
Detailed Concept:
So, to expand on the title, by map 'processing' I am referring to the checking of the sizes of the maps, the content of the maps, and maybe pre-defined data for the maps (e.g. a difficulty rating for each map can be assigned by human-eye, which can also be used in the forumla). The purpose of this is to make sure large maps and/or very difficult maps (hard to infect people) are chosen only when there are a certain amount of players online which combats the extremely tedious long rounds where minimal people are caught, ultimately discouraging some new players from the server. It can also be used to create a 'difficulty value' for a map before it is played, which can be viewed by the players - i.e. before the map rotates, the difficulty of the next map can be a global message to give them an idea of how they might need to play. The difficulty may change, as it is proportionate to the number of current players.
I think this would be a great little feature, and you could even incorporate it into the rewards system. By this i mean, if a difficulty rating for a map is extremely high, and a player survives, they might get slightly more karma than usual (I don't really know the workings of karma so I'm unsure if this is plausible).
If you're wondering, how do you get the 'difficulty value', it should be calculated on map selection using a constant mathematical formula. For example, the main factor is going to be the map volume, or the map area (either/or). You could also take into consideration the amount of solid blocks or the amount of air blocks in the map, and turn this into a percentage of the total blocks in the map - allowing the server to comprehend how much space there is in a map for players to run and hide. Lastly, the solid blocks/air blocks can be taken into consideration only from the true ground level and above (i.e. above the adminium layer some maps have). This is all possible via code and some hard thinking :) It is important that the difficulty value is compared with the current amount of players, as this plays a major part in whether a map will be difficult/boring - more players makes it less difficult to get the game going.
Below is a very improvised formula that I made the other day elsewhere, it is only here as an example and only takes into account the solid blocks and the map's volume. It is just to help you understand what I mean by this unnecessarily long post (sorry about that).
And finally, I know that the whole idea of this is a lot of trial and error for the devs, to perfect their forumla for a value that hasn't been needed all this time for the zombie survival, so please feel free to criticise it. But would its incorporation make the server more enjoyable? That is what would need to be weighed up! Adittionally, mathematics can't solve everything, I understand the 'difficulty of a map' (to infect people) isn't just correlated to the map's size and other factors I spoke about; which is a limiting factor on my concept.You could base it on the map volume, the total blocks in the map that are air, and the round players.
For example, you could create a small boundary of numbers using this data, and then base whether a map is a good choice.
For example, where f(x) is your comparable value, you can use the forumla f(x) = [log((mapVolume + mapAirBlocks)) / 1000]^2
Some examples:
64 x 64 x 64 map, (30 x 30 x 30) Air Blocks: f(x) = 6.06
64 x 64 x 64 map, (50 x 50 x 50) Air Blocks: f(x) = 6.70
64 x 128 x 64 map, (30 x 30 x 30) Air Blocks: f(x) = 7.52
64 x 128 x 64 map, (50 x 50 x 50) Air Blocks: f(x) = 7.91
128 x 64 x 128 map, (50 x 50 x 50) Air Blocks: f(x) = 9.42
128 x 64 x 128 map, (90 x 90 x 90) Air Blocks: f(x) = 10.56
128 x 128 x 128 map, (50 x 50 x 50) Air Blocks: f(x) = 11.2
128 x 128 x 128 map, (90 x 90 x 90) Air Blocks: f(x) = 11.9
So using my formula, you would get a value, maybe between 5 - 15, depending on how big your maps get. You can compare this with the player count to see if the map is unsuitable. The value symbolises not only the size of the map, but how much space there is. The bigger the value a map has, the bigger it is/more space there is relatively, which ultimately concludes that the larger the f(x) value for a map, the more unsuitable it becomes for a small amount of players (which is what <name> wants to combat).
For example;
if (Player.players.Count < 7 && Map.getFormulaValue() > 10)
{
// Map is theoretically too difficult to play with the current state of players.
}
I am open to constructive criticism and any support/agreements, so hit me with your best shot. Well this is far too long xD. Wow.. its 2013? I should get some sleep. Bye!