<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Request: Ranking by GCL]]></title><description><![CDATA[<p>As a new player, maybe 2 weeks in and GCL 3, I find the overall rankings underwhelming. I am roughly 350 right now, with very few people above me who are also GCL 3.</p>
<p>I don't really care that people with higher GCL gather more than me.</p>
<p>I think it would be really interesting to compare myself to players at or below my GCL. If someone at my level is outperforming me, that is far more interesting a comparison than someone to whom the game artificially gives access to more resources just because they've been playing longer.</p>
<p>The overall ranking is OK, but I think you would have a nice tool for new players to see how they're really doing if you let them compare themselves to other new players as well.</p>
<p>This should be a new filter option to the ranking system basically, is my request.</p>
<p>UPDATE: Based on this thread I modified some code that was suggested and copied some other code and ended up with a basic utility that will do this which is posed here: <a href="https://gist.github.com/gamrxist/ae1c945fccdda5b32496d0939a0994b3" rel="nofollow noreferrer">https://gist.github.com/gamrxist/ae1c945fccdda5b32496d0939a0994b3</a></p>]]></description><link>http://screeps.com/forum/topic/375/request-ranking-by-gcl</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 13:28:42 GMT</lastBuildDate><atom:link href="http://screeps.com/forum/topic/375.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 19 Dec 2016 19:38:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Request: Ranking by GCL on Invalid Date]]></title><description><![CDATA[<p>As a new player, maybe 2 weeks in and GCL 3, I find the overall rankings underwhelming. I am roughly 350 right now, with very few people above me who are also GCL 3.</p>
<p>I don't really care that people with higher GCL gather more than me.</p>
<p>I think it would be really interesting to compare myself to players at or below my GCL. If someone at my level is outperforming me, that is far more interesting a comparison than someone to whom the game artificially gives access to more resources just because they've been playing longer.</p>
<p>The overall ranking is OK, but I think you would have a nice tool for new players to see how they're really doing if you let them compare themselves to other new players as well.</p>
<p>This should be a new filter option to the ranking system basically, is my request.</p>
<p>UPDATE: Based on this thread I modified some code that was suggested and copied some other code and ended up with a basic utility that will do this which is posed here: <a href="https://gist.github.com/gamrxist/ae1c945fccdda5b32496d0939a0994b3" rel="nofollow noreferrer">https://gist.github.com/gamrxist/ae1c945fccdda5b32496d0939a0994b3</a></p>]]></description><link>http://screeps.com/forum/post/1814</link><guid isPermaLink="true">http://screeps.com/forum/post/1814</guid><dc:creator><![CDATA[Xist]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Request: Ranking by GCL on Invalid Date]]></title><description><![CDATA[<p>Hello Xist,</p>
<p> </p>
<p>I did some quick script for that last day, you can tweak the parameters to get what you want.</p>
<p>It outputs a csv so you can just order by columns in xlsx to check your stats.</p>
<p>Change "min_gcl" / "max_gcl" to filter the players on gcl. And "offset" to filter on ranks.</p>
<p> </p>
<p> </p>
<pre>var https = require('https');<br>var _ = require('lodash');<br><br>function getUser(user, interval) {<br>    var query = '/api/user/stats?id=' + user._id + '&amp;interval=' + interval;<br>    var options = {<br>        hostname: 'screeps.com',<br>        port: 443,<br>        path: query,<br>        method: 'GET',<br>        headers: {<br>            'Content-Type': 'application/json; charset=utf-8',<br>        },<br>    };<br><br>    var data = '';<br>    https.request(options, function(response) {<br>        response.on('data', function (chunk) {<br>            data += chunk;<br>        });<br>        response.on('end', function() {<br>            var stats = JSON.parse(data).stats;<br>            console.log([<br>                user.username,<br>                user.gcl,<br>                stats.energyHarvested,<br>                stats.energyControl,<br>                stats.energyCreeps,<br>                stats.energyConstruction,<br>                stats.energyHarvested ? stats.energyControl / stats.energyHarvested : 0,<br>                stats.energyHarvested ? stats.energyCreeps / stats.energyHarvested : 0,<br>            ].join(','));<br>        })<br>    }).end();<br>}<br><br>function getBoard(offset, min_gcl, max_gcl, interval) {<br>    var query = '/api/leaderboard/list?limit=10&amp;mode=world&amp;offset=' + offset + '&amp;season=2016-12';<br>    var options = {<br>        hostname: 'screeps.com',<br>        port: 443,<br>        path: query,<br>        method: 'GET',<br>        headers: {<br>            'Content-Type': 'application/json; charset=utf-8',<br>        },<br>    };<br><br>    var data = '';<br>    https.request(options, function(response) {<br>        response.on('data', function (chunk) {<br>            data += chunk;<br>        });<br>        response.on('end', function() {<br>            var users = JSON.parse(data).users;<br>            _.forOwn(users, function(user) {<br>                if(min_gcl &lt; user.gcl &amp;&amp; user.gcl &lt; max_gcl) {<br>                    getUser(user, interval);<br>                }<br>            })<br>        })<br>    }).end();<br>}<br><br><br>var min_gcl = 0;<br>var max_gcl = 100000000;<br>var interval = 180; // 8 =&gt; 1hour, 180 =&gt; 24hour, 1440 =&gt; 7days<br>for(var offset = 0; offset &lt; 200; offset += 10) {<br>    getBoard(offset, min_gcl, max_gcl, interval);<br>}</pre>]]></description><link>http://screeps.com/forum/post/1815</link><guid isPermaLink="true">http://screeps.com/forum/post/1815</guid><dc:creator><![CDATA[Sparadraph]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Request: Ranking by GCL on Invalid Date]]></title><description><![CDATA[<p>This is the result for those params:</p>
<p> </p>
<pre>vestad,78831357,8627362,3507638,3318045,1201680,0.40657132504698423,0.3845955461240643<br>FuddyDuddy,74811697,7631822,3396823,3304830,724606,0.445086769581366,0.4330328983039699<br>GOREACRAFT,60886322,6739880,1803062,3450317,538992,0.2675213802026149,0.5119255832448055<br>PervyPenguin,49275720,5754190,2900487,2139450,444059,0.5040652116110174,0.3718073264873075<br>demawi,49228057,9468916,2723543,5045150,970520,0.28762986174975047,0.5328117812007204<br>Asku,81177003,7039288,2138142,4123400,392245,0.3037440718436296,0.5857694698668388<br>forkmantis,86496854,4547962,1067537,2444830,407125,0.23472865428515013,0.5375660570602833<br>Admiral,96591576,3619516,1885117,1172850,375153,0.5208201870084288,0.32403503672866757<br>cyberlink916,90873198,3346460,1594087,1031920,226085,0.47635023278329935,0.30836167173670087<br>0mni,81693912,3865576,1694845,1372380,347913,0.4384456546708692,0.35502600388661354<br>zolox,58725822,2779086,1050970,1351800,279936,0.37817109654037334,0.4864189161472513<br>Xephael,74953823,2762910,1532499,677800,184552,0.5546684473978523,0.24532105642239524<br>Sparadraph,34601412,3791556,2234191,1103840,52615,0.5892543852708493,0.2911311345526744<br>C00k1e_93,76266514,5123720,1477880,3235890,225824,0.28843886863450774,0.6315509044210066<br>rudykocur,34559374,6427024,2475420,2616900,496029,0.3851580451543358,0.4071713439999602<br>WASP103,73600072,5839594,1452356,2909943,499462,0.2487083862337005,0.4983125539207007<br>Davaned,82728171,5278194,1376287,3303370,442899,0.2607496048837917,0.6258523275196024<br>Dewey,46871738,4509950,2141878,1856750,236717,0.4749227818490227,0.4117007949090345<br>king_lispi,82021914,2764058,878785,1359050,613990,0.31793290878845526,0.4916864986190594<br>ICED_COFFEE,92953680,5907534,1075887,3130910,901480,0.18212116934070968,0.5299859467588337<br>rbryson74,73512649,2729886,1568288,965770,110483,0.5744884584924059,0.353776677853947<br>Kaldosh,43203801,2334918,1709571,395650,72810,0.7321760335909012,0.16944920549672407<br>Sanados,78104370,2994444,1474302,1258740,143016,0.4923458244669127,0.4203585039493141<br>ramoja,32290850,5862748,1506372,2560130,789549,0.256939578504824,0.4366774761596439<br>Atanner,36785208,4552596,1971677,1860590,250038,0.4330885059864745,0.40868770257672765<br>Ryleep,27475131,3249214,2170814,903410,164998,0.6681043476976278,0.2780395504882104<br>PNoob,45955510,6108146,1357731,2468950,981989,0.22228201486997856,0.40420612080981694<br>Aeries,80506581,3671886,1200157,1400850,1403391,0.3268502889250919,0.3815069422089902<br>Xanathos,91915467,3068510,1326834,1025170,723557,0.4324033488566112,0.33409374582452067<br>Disconnect,98081105,2805268,1112589,1242850,167336,0.3966070264944383,0.4430414491592247<br>Eijolend,97952011,3929974,774360,2533780,269172,0.197039471507954,0.6447320007715064<br>Zoiah,47857571,1225214,145299,692590,126007,0.11859071150019507,0.5652808407347615<br>Noxeth,72809855,2221470,947578,1004500,166440,0.4265544886944231,0.45217806227407975<br>vrs,28398452,4941660,1579932,2305503,527466,0.3197168562790641,0.466544238170979<br>TiffanyTrump,29835306,5372020,1564128,2199170,340089,0.2911619837602987,0.4093748720220699<br>rwampler,26292012,5177064,1910204,2342480,594480,0.36897438393653237,0.45247267563236615<br>ScooterV,24413751,462334,337755,124950,35740,0.7305432868878343,0.2702591632888777<br>stuy486,26296562,3685734,1794413,1371510,188113,0.48685363620923267,0.37211312590653584<br>Xoc,26478035,3767658,1864768,1564890,335015,0.4949408890085034,0.41534820835649094<br>Eugenocide,35812928,3142842,1492787,1251862,310691,0.474979970358039,0.39832164645884205<br>fsck-u,47829329,2554094,1262254,1058700,79652,0.4942081223322243,0.4145109772780485<br>mmmd,28177875,1930024,1116353,532590,352836,0.5784140508097309,0.2759499363738482</pre>]]></description><link>http://screeps.com/forum/post/1816</link><guid isPermaLink="true">http://screeps.com/forum/post/1816</guid><dc:creator><![CDATA[Sparadraph]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Request: Ranking by GCL on Invalid Date]]></title><description><![CDATA[<p>Thanks <a class="plugin-mentions-user plugin-mentions-a" href="http://screeps.com/forum/uid/247">@Sparadraph</a> for the info.</p>
<p>How does the GCL reported there match up to the GCL value reported on my overview page?</p>]]></description><link>http://screeps.com/forum/post/1817</link><guid isPermaLink="true">http://screeps.com/forum/post/1817</guid><dc:creator><![CDATA[Xist]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Request: Ranking by GCL on Invalid Date]]></title><description><![CDATA[<p>Ah, I see what you mean.</p>
<p>This is only the control points for the requested season.</p>
<p>You could use /api/user/find?username=&lt;name&gt;, that gives you a response with the total Control Point as gcl if I'm not mistaken.</p>
<p>This is just a quick script I did with my poor js understanding, feel free to tweak it to get the data you want <img
      src="http://screeps.com/forum/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=a1k070tfs06"
      class="not-responsive emoji emoji-android emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>]]></description><link>http://screeps.com/forum/post/1818</link><guid isPermaLink="true">http://screeps.com/forum/post/1818</guid><dc:creator><![CDATA[Sparadraph]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Request: Ranking by GCL on Invalid Date]]></title><description><![CDATA[<p>It seems that find?username=x reports GCL in the same way as the stats.  None of the endpoints that I can see on my overview page are reporting GCL=3, they're all reporting the high number of upgrade points.</p>
<p>I'm guessing there is an (unpublished?) algorithm that converts upgrade points into GCL.</p>
<p>I further assume that the overview page can help to glean the upgrade points, e.g. at the moment my overview says I'm 6.44M/8.68M into GCL 3.  This roughly matches with the stats API which says I have 6.54M upgradeControl points (the overview page seems to use cached data so it's a bit behind, whereas the stats API seems to update virtually every time I call it).</p>
<p>It seems then that we can get the report to produce the desired data by filtering on stats.energyControl, we just need to know all of the cutoff points for each GCL.  8.68M is the GCL 4 cutoff according to my overview page.</p>]]></description><link>http://screeps.com/forum/post/1819</link><guid isPermaLink="true">http://screeps.com/forum/post/1819</guid><dc:creator><![CDATA[Xist]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Request: Ranking by GCL on Invalid Date]]></title><description><![CDATA[<p>If you need any help calculating the GLC from stats.energyControl you can check this <a href="https://github.com/stybbe/Screeps-SC/blob/master/modules/profile.gcl.js" target="_blank" rel="nofollow noreferrer">code</a>.</p>]]></description><link>http://screeps.com/forum/post/1820</link><guid isPermaLink="true">http://screeps.com/forum/post/1820</guid><dc:creator><![CDATA[stybbe]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Request: Ranking by GCL on Invalid Date]]></title><description><![CDATA[<p>Thanks to both of you.  I modified your code <a class="plugin-mentions-user plugin-mentions-a" href="http://screeps.com/forum/uid/247">@Sparadraph</a> and added the GCL calculation from <a class="plugin-mentions-user plugin-mentions-a" href="http://screeps.com/forum/uid/15">@stybbe</a> and now I'm able to see the data I was looking for.</p>
<p>Here is the modified code:</p>
<pre>var https = require('https');<br>var _ = require('lodash');<br><br>var min_gcl = 0;<br>var max_gcl = 3;<br>var interval = 180; // 8 =&gt; 1hour, 180 =&gt; 24hour, 1440 =&gt; 7days<br>var results_per_page = 10; // Must be 10? API gives error with other values<br>var max_ranking = 500; // players with rank higher than this won't be included<br><br>var result = [];<br>var active_responses = 0;<br>var pages = [];<br><br><br>function onResponseBegin() {<br> active_responses++;<br> //console.log('&gt;&gt; response '+active_responses);<br> process.stdout.write('+');<br>}<br><br><br>function onResponseEnd() {<br> active_responses--;<br> //console.log('&lt;&lt; response '+active_responses);<br> process.stdout.write('-');<br> if (active_responses == 0) {<br> if (pages.length) {<br> //console.log('-- callback '+pages.length);<br> process.stdout.write('X');<br> let callback = pages.shift();<br> callback();<br> }<br> else {<br> endReport();<br> }<br> }<br>}<br><br><br>function endReport() {<br> process.stdout.write('\n');<br> let sorted = _.orderBy(result, ['rank']);<br> _.forEach(sorted, row =&gt; console.log(JSON.stringify(row)));<br>}<br><br><br>function getUserInfo(userId, stats) {<br> //console.log(`getUserInfo(${userId})`);<br> var query = '/api/user/find?id=' + userId;<br> var options = {<br> hostname: 'screeps.com',<br> port: 443,<br> path: query,<br> method: 'GET',<br> headers: {<br> 'Content-Type': 'application/json; charset=utf-8',<br> },<br> };<br><br> var data = '';<br> onResponseBegin();<br><br> https.request(options, function(response) {<br> response.on('data', function (chunk) {<br> data += chunk;<br> });<br> response.on('end', function() {<br> //console.log(JSON.stringify(JSON.parse(data),null,4));<br> var info = JSON.parse(data),<br> gcl = Math.floor(Math.pow(info.user.gcl/1000000,1/2.4))+1;<br> if (gcl &gt;= min_gcl &amp;&amp; gcl &lt;= max_gcl) {<br> result.push(_.merge({<br> username: info.user.username,<br> gclLevel: gcl,<br> gcl: info.user.gcl,<br> }, stats));<br> }<br> onResponseEnd();<br> });<br> }).end();<br>}<br><br><br>function getUser(userId, interval, extra) {<br> //console.log(`getUser(${userId}) `+JSON.stringify(extra));<br> var query = '/api/user/stats?id=' + userId + '&amp;interval=' + interval;<br> var options = {<br> hostname: 'screeps.com',<br> port: 443,<br> path: query,<br> method: 'GET',<br> headers: {<br> 'Content-Type': 'application/json; charset=utf-8',<br> },<br> };<br><br> var data = '';<br> onResponseBegin();<br><br> https.request(options, function(response) {<br> response.on('data', function (chunk) {<br> data += chunk;<br> });<br> response.on('end', function() {<br> //console.log(JSON.stringify(JSON.parse(data),null,4));<br> var stats = JSON.parse(data).stats;<br> getUserInfo(userId, _.merge(extra, stats));<br> onResponseEnd();<br> })<br> }).end();<br>}<br><br><br>function getBoard(offset, interval, maxOffset) {<br> var query = '/api/leaderboard/list?limit='+ results_per_page +'&amp;mode=world&amp;offset=' + offset + '&amp;season=2016-12';<br> var options = {<br> hostname: 'screeps.com',<br> port: 443,<br> path: query,<br> method: 'GET',<br> headers: {<br> 'Content-Type': 'application/json; charset=utf-8',<br> },<br> };<br><br> var data = '';<br> onResponseBegin();<br> if (offset &lt; maxOffset) {<br> pages.push(_.bind(getBoard, null, offset + results_per_page, interval, maxOffset));<br> }<br><br> https.request(options, function(response) {<br> response.on('data', function (chunk) {<br> data += chunk;<br> });<br> response.on('end', function() {<br> //console.log(JSON.stringify(JSON.parse(data),null,4));<br> var users = JSON.parse(data).users,<br> userIds = _.keys(users);<br> for (let i = 0, n = userIds.length; i &lt; n; i++) {<br> getUser(users[userIds[i&rsqb;&rsqb;._id, interval, {rank: offset+i});<br> }<br> onResponseEnd();<br> });<br> }).end();<br>}<br><br><br>getBoard(0, interval, max_ranking);</pre>
<p> </p>
<p>And some sample output:</p>
<p> </p>
<pre>{"username":"Sheeo","gclLevel":3,"gcl":13940772,"rank":299,"creepsProduced":4056,"creepsLost":514,"energyConstruction":229926,"energyHarvested":2440138,"energyControl":842438,"energyCre<br>eps":1119574}<br>{"username":"Cookie_93","gclLevel":3,"gcl":13160598,"rank":312,"creepsLost":1437,"creepsProduced":2598,"energyHarvested":351988,"energyControl":183161,"energyCreeps":210540,"energyConst<br>ruction":12014}<br>{"username":"Dreconus","gclLevel":3,"gcl":13111983,"rank":317,"creepsProduced":5207,"energyControl":852961,"energyCreeps":399700,"energyHarvested":1320768,"energyConstruction":97901}<br>{"username":"AdaIsDead","gclLevel":3,"gcl":13460123,"rank":318,"creepsLost":51,"creepsProduced":12211,"energyControl":757253,"energyCreeps":829560,"energyHarvested":1950776,"energyConst<br>ruction":398040}<br>{"username":"Xist","gclLevel":3,"gcl":12688833,"rank":319,"creepsLost":504,"creepsProduced":13594,"energyConstruction":302867,"energyControl":909569,"energyCreeps":1130200,"energyHarves<br>ted":2504260}<br>{"username":"nxxcxx","gclLevel":3,"gcl":12971281,"rank":327,"creepsProduced":2963,"energyHarvested":881074,"energyControl":474144,"energyCreeps":198450,"energyConstruction":129917}<br>{"username":"Ranamar","gclLevel":3,"gcl":12861738,"rank":328,"creepsLost":33,"energyConstruction":168275,"energyHarvested":1459402,"energyControl":627356,"energyCreeps":568800,"creepsPr<br>oduced":7978}</pre>
<p> </p>
<p>I am now quite confused about how the overall ranking is put together though, because it shows me in 5th place ranking-wise over the past 24 hours, even though I have harvested more energy and upgraded my controller more than the 4 people ranked better than me.</p>
<p>I'm upgrading faster than they are in both the 24 hour and the 7 day stats reports, yet I'm ranked lower than they are in the ranks.</p>
<p>What else does the ranking system look at that cannot be seen in the stats?  I thought it was a ranking of controller upgrade speed.</p>
<p> </p>]]></description><link>http://screeps.com/forum/post/1821</link><guid isPermaLink="true">http://screeps.com/forum/post/1821</guid><dc:creator><![CDATA[Xist]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Request: Ranking by GCL on Invalid Date]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="http://screeps.com/forum/uid/102">@Xist</a> , cool work! Can you put that on the github?</p>]]></description><link>http://screeps.com/forum/post/1822</link><guid isPermaLink="true">http://screeps.com/forum/post/1822</guid><dc:creator><![CDATA[akuukis]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Request: Ranking by GCL on Invalid Date]]></title><description><![CDATA[<p>Sorry, the formatting was pretty messed up when I posted here.</p>
<p>I made a gist on github, and updated the OP.</p>
<p><a href="https://gist.github.com/gamrxist/ae1c945fccdda5b32496d0939a0994b3" rel="nofollow noreferrer">https://gist.github.com/gamrxist/ae1c945fccdda5b32496d0939a0994b3</a></p>]]></description><link>http://screeps.com/forum/post/1823</link><guid isPermaLink="true">http://screeps.com/forum/post/1823</guid><dc:creator><![CDATA[Xist]]></dc:creator><pubDate>Invalid Date</pubDate></item></channel></rss>