Help find a new gamemode sorting algorithm!

I know this might not be easy, but is it possible to write an algorithm for trending gamemodes? Maybe get data from a server to find out what gamemodes had a significant increase in players over a short period of time?

[editline]15th September 2014 4:11PM[/editline]
No comments? Can I at least get a disagree or dumb rating if this is a stupid idea? :v:

That’s exactly what my “fullness” solution does.

Brilliant

Filtered out passworded servers and servers with maxplayers < 4.

Lines 158-234


function GetGamemode( name, type )
{
	if ( !ServerTypes[type] ) return;

	if ( ServerTypes[type].gamemodes[name] ) return ServerTypes[type].gamemodes[name]

	ServerTypes[type].gamemodes[name] = 
	{
		name:			name,
		servers:		[],
		num_servers:	0,
		num_players:	0,
		fullness: 		0,
		OrderBy:		'recommended',
		info:			GetGamemodeInfo( name )
	};

	ServerTypes[type].list.push( ServerTypes[type].gamemodes[name] )

	return ServerTypes[type].gamemodes[name];
}

function AddServer( type, id, ping, name, desc, map, players, maxplayers, botplayers, pass, lastplayed, address, gamemode, workshopid )
{
	if ( id != RequestNum[ type ] ) return;

	if ( !gamemode ) gamemode = desc;
	if ( maxplayers <= 1 ) return;

	var data =
	{
		ping:			parseInt( ping ),
		name:			name,
		desc:			desc,
		map:			map,
		players:		parseInt( players ) - parseInt( botplayers ),
		maxplayers:		parseInt( maxplayers ),
		botplayers:		parseInt( botplayers ),
		fullness: 		( parseInt( players ) - parseInt( botplayers) ) / parseInt( maxplayers ),
		pass:			pass,
		lastplayed:		parseInt( lastplayed ),
		address:		address,
		gamemode:		gamemode,
		password:		'',
		workshopid:		workshopid
	};

	data.hasmap = DoWeHaveMap( data.map );

	data.recommended = data.ping;
	if ( !data.hasmap ) data.recommended += 20; // We don't have that map
	if ( data.players == 0 ) data.recommended += 100; // Server is empty
	if ( data.players == data.maxplayers ) data.recommended += 75; // Server is full
	if ( data.pass ) data.recommended += 300; // If we can't join it, don't put it to the top

	data.listen = data.desc.indexOf('[L]') >= 0;
	if ( data.listen ) data.desc = data.desc.substr( 4 );

	if ( !(data.maxplayers < 4 || data.pass) )
	{

		var gm = GetGamemode( data.gamemode, type );
		gm.servers.push( data );

		UpdateGamemodeInfo( data )

		gm.num_servers += 1;
		gm.num_players += data.players

		gm.element_class = "";
		if ( gm.num_players == 0 ) gm.element_class = "noplayers";
		if ( gm.num_players > 50 ) gm.element_class = "lotsofplayers";
		var empty = 0
		if ( gm.num_players == 0 ) empty = 500;

		gm.order = gm.fullness / gm.num_servers - empty

		UpdateDigest( Scope, 50 );
	}
}

I had an idea for a different server browser, but I don’t imagine that will be too helpful
I think there should just be a separate category for “new” gamemodes, as well as them being in the full list. That way anyone who wants to try something new can filter exclusively to the newer gamemodes. I don’t think that can be done with just an algorithm, or even with the current master server though.

So every new modified DarkRP gamemode would show up there, still drowning out actually good gamemodes. No thanks.

Ooh. How about a section/filter/preference for listen servers? Those are fun.

How about stopping every gamemode with RP in its name from showing up?

http://puu.sh/bCsGY/41b9a272c3.png

And that’s why the old browser is still suprior to the new system :slight_smile:

i personally would love, if the tag system could be used again in some sort. Maybe for an Category system? So i could add under do not include things like “minigame, rp, dm” to find an server, fitting for my wishes?

How about a randomize button on the top of the browser where when you click it it shows a list of all found gamemodes which you can filter out, then you can sort by player count (like 0-10, 11-15, etc) and click randomize and it will join a random server with a random gamemode. It would ofc have to avoid locked servers, and maybe a maximum ping option too.

Nobody has submitted their own sorters. So I submitted a pull request of my own.