{"id":3506,"date":"2009-05-31T07:49:07","date_gmt":"2009-05-31T11:49:07","guid":{"rendered":"http:\/\/www.shamusyoung.com\/twentysidedtale\/?p=3506"},"modified":"2009-05-31T07:58:11","modified_gmt":"2009-05-31T11:58:11","slug":"twenty-sided-server-map-rotation","status":"publish","type":"post","link":"https:\/\/www.shamusyoung.com\/twentysidedtale\/?p=3506","title":{"rendered":"Twenty Sided Server: Map Rotation"},"content":{"rendered":"<p>There are varying opinions on what maps should be in the rotation on our <a href=\"?p=3500\">Team Fortress 2 server<\/a>.  Strong opinions in some cases.  There are maps some people hate.  Maps some people love.  Maps to which which some people are ambivalent or indifferent.  The problem:  How to arrange the map list so that the maximum number of people get the maximum number of maps that they love while (more importantly) minimizing the number of people who end up playing a map they hate.  Oh, and the map list must meet some minimum level of complexity and variety, rather than just taking one popular map and repeating it endlessly.  <\/p>\n<p>Clearly this is an <a href=\"http:\/\/en.wikipedia.org\/wiki\/NP-complete\">NP-Complete<\/a> problem.  Luckily, we&#8217;re only dealing with a list of 13 potential maps.  Unluckily, we&#8217;re dealing with hundreds and hundreds of people with varying tastes.    I&#8217;m not sure if I should optimize for maximum happiness or maximum fairness.  (Always a problem in any social system.)  To wit:  Do I throw in maps to satisfy a small minority of users with very unpopular tastes, or do I simply &#8220;sacrifice&#8221; those few in order to improve the overall happiness of the player base?  Hmm.<\/p>\n<p>Coding the proper algorithm is going to take weeks of research and testing.  I&#8217;ll need to put all of the users into a database along with their preferences, and sort through different map lists and calculate how much each map is loved and hated.  Then I&#8217;ll need to sort through millions of possible map lists and find the permutation that has the maximum number of satisfied players.  <\/p>\n<p>Or maybe I should just take an inaccurate and highly unscientific poll and then eyeball the results? You know what?  That sounds pretty good:<\/p>\n<p>[poll id=&#8221;4&#8243;]<\/p>\n<p>[poll id=&#8221;5&#8243;]<\/p>\n<p><strong>What about arena maps?<\/strong><\/p>\n<p>Fie on arena. It has its place and its fans, but the whole idea of arena runs counter to my vision of a fun and newbie-friendly server. <\/p>\n<p><strong>What about payload maps?<\/strong><\/p>\n<p>Payload maps are a given.  All of the payload maps are in rotation.  Every other alternating map is payload.  The others are capture point or capture the flag.  <\/p>\n<p>There are three standard payload maps (Badwater, Goldrush, and HooDoo) plus that crazy dual-payload cart going in both directions. (Pipeline.)  I think a good map list will look something like this:<\/p>\n<p>1. Payload Badwater<br \/>\n2. (Map #1)<br \/>\n3. Payload Goldrush<br \/>\n4. (Map #2)<br \/>\n5. Payload HooDoo<br \/>\n6. (Map #3)<br \/>\n7. Payload Badwater<br \/>\n8. (Map #4)<br \/>\n9. Payload Goldrush<br \/>\n10. (Map #5)<br \/>\n11. Payload HooDoo<br \/>\n12. (Map #6)<br \/>\n13. Payload Pipeline<br \/>\n14. (Map #7)<\/p>\n<p>Maps #1 through #7 will be filled in using whatever knowledge I can glean from the polls above.  This gives us a list of 11 unique maps, which should give us a nice variety without completely overwhelming newcomers.  <\/p>\n","protected":false},"excerpt":{"rendered":"<p>There are varying opinions on what maps should be in the rotation on our Team Fortress 2 server. Strong opinions in some cases. There are maps some people hate. Maps some people love. Maps to which which some people are ambivalent or indifferent. The problem: How to arrange the map list so that the maximum [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[120],"tags":[173],"class_list":["post-3506","post","type-post","status-publish","format-standard","hentry","category-videogames","tag-team-fortress-2"],"_links":{"self":[{"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/posts\/3506","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3506"}],"version-history":[{"count":0,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=\/wp\/v2\/posts\/3506\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3506"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3506"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.shamusyoung.com\/twentysidedtale\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3506"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}