How to populate empty servers and improve server browsing
BCSeph
Join Date: 2005-02-24 Member: 42384Members, Constellation
<div class="IPBDescription">a temporary lobby system</div>I know I'm with a lot of you when I say I often spend a good amount of time simply browsing the server list (in any game) looking for a good populated server. Generally, you want to join a nearly full server. This often leaves people staring at the screen waiting for 32/32 to become 31/32. At that point, 9 people click join and the one with the fastest pc/net combo wins. All the while, there's 100s of empty servers running good maps and plugins, but have no players simple because no one wants to join an empty server and wait.
But what if one of those empty servers with good ping/maps/plugins could instantly be populated to its capacity?
What I am proposing is a lobby "matchmaking" type system in which players who don't feel like browsing for servers can start or join a lobby. This lobby can be made public/private just like in L4D. It can have options for filtering out servers to find as well, similar to when just regularly browsing the server list.
The lobby will be listed in a master lobby list, just like the server list, if the lobby is public. That way, anyone can browse the lobbies, see how many players are in it/what type of game its going to start.
When the "host" player of the lobby clicks to find a server for the lobby, it will browse the available servers with enough open spots to accommodate the entire lobby as well at meet the lobby filter options.
For instance, say you start a lobby with a max player count of 16. When it fills up with 16 people, the host clicks start. The computer then searches all servers. It finds a good server with good ping based on a regional average calculated from predefined regions each player is in(US WEST, UK, etc). The server also has 10/32 players on it. The lobby decides it is suitable, and joins all 16 players to the server, leaving it with 26/32 players.
So essentially, this is like L4D's matchmaking system, which is a hybrid of 3rd party servers and matchmaking, except this has more of a slant towards 3rd party servers.
The lobby system is, of course, optional. There will still be the good ole server list where you can refresh-spam full servers to your heart's content.
This will also help small groups of friends play together, as 3 or 4 people could make a private lobby, and it would automatically locate a server they want that can fit all of them.
The requirements of this type of system as as follows:
--Servers define what "region" they are in, like sv_region in source (so uk players in a lobby dont get joined to a us server, etc)
--Players define their region as well (or maybe an automated ip lookup or something)
--The server that runs the master server list for NS2 also runs the lobby list and performs searches for servers
.....Technically not required, but this will speed up server searches. Since the master server list server already
.....had the list of servers in its RAM or database or whatever, it can quickly perform a search of the list to match parameters of a lobby.
.....as opposed to the client retrieving the server list and running a search of his own machine.
.....This will require the devs to have a more beefy machine running the master server list, but I think it is worth it.
--a cvar like allow_lobby_connect so servers can choose whether or not to allow lobbies to join them
Lobbies can be named like servers, and can have option set like region: US, so when a non-us player joins, it will warn them that they may experience higher pings. Essentially, the lobby list is exactly like the server list, except it joins public lobbies.
PROS:
--Helps populate empty or not near full servers
--Helps people sort through a possibly confusing and long server list
--Devs can easily implement an "instant action" button once they design the lobby/server finding system.
--Helps small groups of players find a server they all can play on.
--Adds another social aspect to the game
CONS:
--Could be seen as a time waster, leading more players messing around with lobbies rather than just joining a server and playing
--Devs will have to spend time coding this
--Might require a more beefy "master server list" server
Now I'm just throwing this out there, and is not really part of my main idea, but what if the lobby, instead of a screen with a list of players and a chat box etc, was an actual readyroom?
Imagine, you start a lobby, your computer joins a UW hosted "readyroom server" that doesn't require many resources. You appear in-game in a readyroom. As players join the lobby, they join and run around with you. When the lobby joins a server, it could automatically join you to a team or throw you in the readyroom again.
Of course this may be just a waste of time for the devs since it isnt practical in any way, and I would rather them work on the actual NS2 gameplay.
Well what do you guys think? C/D?
But what if one of those empty servers with good ping/maps/plugins could instantly be populated to its capacity?
What I am proposing is a lobby "matchmaking" type system in which players who don't feel like browsing for servers can start or join a lobby. This lobby can be made public/private just like in L4D. It can have options for filtering out servers to find as well, similar to when just regularly browsing the server list.
The lobby will be listed in a master lobby list, just like the server list, if the lobby is public. That way, anyone can browse the lobbies, see how many players are in it/what type of game its going to start.
When the "host" player of the lobby clicks to find a server for the lobby, it will browse the available servers with enough open spots to accommodate the entire lobby as well at meet the lobby filter options.
For instance, say you start a lobby with a max player count of 16. When it fills up with 16 people, the host clicks start. The computer then searches all servers. It finds a good server with good ping based on a regional average calculated from predefined regions each player is in(US WEST, UK, etc). The server also has 10/32 players on it. The lobby decides it is suitable, and joins all 16 players to the server, leaving it with 26/32 players.
So essentially, this is like L4D's matchmaking system, which is a hybrid of 3rd party servers and matchmaking, except this has more of a slant towards 3rd party servers.
The lobby system is, of course, optional. There will still be the good ole server list where you can refresh-spam full servers to your heart's content.
This will also help small groups of friends play together, as 3 or 4 people could make a private lobby, and it would automatically locate a server they want that can fit all of them.
The requirements of this type of system as as follows:
--Servers define what "region" they are in, like sv_region in source (so uk players in a lobby dont get joined to a us server, etc)
--Players define their region as well (or maybe an automated ip lookup or something)
--The server that runs the master server list for NS2 also runs the lobby list and performs searches for servers
.....Technically not required, but this will speed up server searches. Since the master server list server already
.....had the list of servers in its RAM or database or whatever, it can quickly perform a search of the list to match parameters of a lobby.
.....as opposed to the client retrieving the server list and running a search of his own machine.
.....This will require the devs to have a more beefy machine running the master server list, but I think it is worth it.
--a cvar like allow_lobby_connect so servers can choose whether or not to allow lobbies to join them
Lobbies can be named like servers, and can have option set like region: US, so when a non-us player joins, it will warn them that they may experience higher pings. Essentially, the lobby list is exactly like the server list, except it joins public lobbies.
PROS:
--Helps populate empty or not near full servers
--Helps people sort through a possibly confusing and long server list
--Devs can easily implement an "instant action" button once they design the lobby/server finding system.
--Helps small groups of players find a server they all can play on.
--Adds another social aspect to the game
CONS:
--Could be seen as a time waster, leading more players messing around with lobbies rather than just joining a server and playing
--Devs will have to spend time coding this
--Might require a more beefy "master server list" server
Now I'm just throwing this out there, and is not really part of my main idea, but what if the lobby, instead of a screen with a list of players and a chat box etc, was an actual readyroom?
Imagine, you start a lobby, your computer joins a UW hosted "readyroom server" that doesn't require many resources. You appear in-game in a readyroom. As players join the lobby, they join and run around with you. When the lobby joins a server, it could automatically join you to a team or throw you in the readyroom again.
Of course this may be just a waste of time for the devs since it isnt practical in any way, and I would rather them work on the actual NS2 gameplay.
Well what do you guys think? C/D?
Comments
The real problem I have are servers that show 30/31 - with the last slot used to allow players with reserved slots to join.
Normally if the server showed 30/30 (and players with reserved slots could join anyway) I could set the steam browser to watch the server and auto-join/notify me when the slot opens up, and then play on a less populated server until then.
Instead I'm stuck watching it manually because the auto-joiner will pick it up as 30/31 and attempt to connect me resulting in an instant kick.
Normally if the server showed 30/30 (and players with reserved slots could join anyway) I could set the steam browser to watch the server and auto-join/notify me when the slot opens up, and then play on a less populated server until then.
Instead I'm stuck watching it manually because the auto-joiner will pick it up as 30/31 and attempt to connect me resulting in an instant kick.<!--QuoteEnd--></div><!--QuoteEEnd-->
Source fixes this quite nicely. There's a sv_visiblemaxplayers setting, which.. amazingly dictates the visible amount of max players on the server. Reserved slot plugins typically lower this to the slot count without reserved slots, making autojoin work again. Of course, this requires slightly intelligent reserved slot holders, as it means you need to use the connect command in console, rather then the server browser.
There might be a cleaner way around this, maybe a "Force Join" button in the server list that attempts to connect regardless of if the server says it's full.
Since the lobby system is based on populating empty servers, I would recommend just having lobbies promote enough people to join (i.e. either 5v5 or 6v6) then other people will join.
The problem with allowing large amounts of people in the lobby is that not everyone is going to want to wait around to connect to a server, especially when there are going to be servers available that will have spots available for a few people to join. I would recommend making the lobby again a 12 person max, as once players see a server starting to fill up, they will more than likely attempt to join. Remember, the lobby system will be different from l4d as you pretty much need all 8 players to join a game in VS mode to make it fun. With this sytem, you only need about 10-12 people to start a game effectively, and players will join after that.
EDIT:
Or maybe say two lobbies click start at the same time, and if there is the opportunity for both to join the same server, then they can combine. Thus, you could have the max players in a lobby be 16, and if you combine with another 16 player lobby upon connecting to a server, then the server gets its full 32.
In any case, consider a scenario with 6 people in the same geographic group, each waiting for a slot in a 32 player server, with other 32 player servers empty. Inefficient.
But if they were all to enter a lobby made by one of those six people, they could group up and join a server with all six of them. Joining an empty server takes initiative and patience, and you have to assume that players aren't going to have initiative or be patient. Creating a lobby also takes initiative, but just consider the two situations: You have a lobby that's 1/12 full, or you have a server that's 1/32 full. Which one are you (as a 'second' player) more likely to join? A server that you have no way of knowing is going to start any time soon? Or a lobby where the GOAL is to find a game to accommodate a number of players? In consideration of the 'second' player's options, which option is the 'first' player going to choose: join an empty server or create a new lobby?
Scenario: A lone player opens a private/public lobby.
1. He hits start game right away, the system finds him the most full and lowest ping server within his specifications (no time spent browsing server list, aka a quick join)
2. He hits start game right away. The system finds another lobby with 10 players searching for a server and decides to group them together and join a server.
3. (Public lobby) He waits for a few min as the lobby becomes almost full then starts the game.
4. (Private lobby) He invites a few friends from his friends list and they join a game together.
In all of these cases, the player joins a game within his preferred specifications that is populated. In the first two outcomes, he spends no time waiting for server slots to open. In the second two, he may or may not wait longer than the time he would have spent browsing servers, but at least he was guaranteed a good game (with his friends in the last case).
I thought of some options lobbies could allow when setting up:
Lobby Settings:
Name: (default to player name)
Max players 2-16
Preferred map: (default blank)
Private/Public (Public lists the lobby in master lobby list)
Prefer (empty/most full) servers
When a player is browsing the lobby list, it could look something like this:
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->Region | US | UK | etc... | All |
Name | Players ^ | Region | Preferred map |
---------------------------------------------------------------------------------------------
Joe12332 | 10/16 | US | ns_nancy |
Loldude | 7/8 | US | |
JOIN ME111 | 4/8 | US | ns_bast |
combat players | 1/12 | US | co_ |<!--c2--></div><!--ec2-->
Something like that. <b>The point is to make lobby browsing simpler than server browsing. If you want to pick exactly how you want to play, you use the server browser. If you just want to play anything, use the lobby system. </b>
Also, if the devs plan on implementing a "Quick Play" feature in NS2, it would essentially be the same as creating a 1-man lobby and hitting start right away, thus, by creating this lobby system, they also solve the problem of how to do a quick join.
Did you know that ETQW has something similar?
If you load up the game, it says "There are (X) other people looking to join a server right now!" at the server screen.
So we could have something like that (so you know you're not alone), or just have a simple 'Wait for others to wait too' button - when X amount of people click it, it connects them to a random local server. If no one else (or not enough) people click it, nothing happens.