Help us reproduce the "phantom players" bug
Flayra
Game Director, Unknown Worlds EntertainmentSan Francisco Join Date: 2002-01-22 Member: 3Super Administrators, NS2 Developer, Subnautica Developer
Hey everyone,
We've been seeing "phantom players" in servers and really want to fix it. However, we can't even reproduce the dang thing. The problem is something like this: possibly after a game end, round reset, there are players in game that have the names of players that were just playing, but they are floating in mid-air and can't be killed. They seem to be totally inert. They take up spaces on the scoreboard and often those players will be renamed. Ie, if I was playing, suddenly we'd see a phantom player called "Flayra" and I would be renamed to "Flayra (2)".
Let's use this thread to figure out how to reproduce this...then we'll have it fixed!
Thanks,
We've been seeing "phantom players" in servers and really want to fix it. However, we can't even reproduce the dang thing. The problem is something like this: possibly after a game end, round reset, there are players in game that have the names of players that were just playing, but they are floating in mid-air and can't be killed. They seem to be totally inert. They take up spaces on the scoreboard and often those players will be renamed. Ie, if I was playing, suddenly we'd see a phantom player called "Flayra" and I would be renamed to "Flayra (2)".
Let's use this thread to figure out how to reproduce this...then we'll have it fixed!
Thanks,
Comments
Hope this helps?
If a player suddenly DC from the server there is a chance that his "player" will still remain at the server taking a slot but do nonthing,
I think also you cant kill him with all weapons.
OR
The router/firewall is being too smart for it's own good and keeps sending keepalives for non-existent connections until it times out it's own connection clientside entry...
this happened to me once:
i was playing normally and suddenly the game starts to connect/load (just as if admin changes map in NS1) so i think an admin changed map.
but it loads and connects me to the exact same game that hasn't stopped running or reset. there, almost all the other players are left standing frozen where they were when this happened. Those who reconnect get a (2) or (3) added to their name.
Not sure if it helps but I noticed that when I crashed and rejoined the same server there was a clone myself that was a "phantom" player. I think I crashed immediately when I joined the marine team although I'm not certain. If I had to guess it is the client shutting down but not telling the server it is disconnection, server sits there thinking the phantom player is still there because nothing has told it the client disconnected. Maybe after 30s-1 min if a client doesn't send anything to the server the server pings the client and if there is no response it times them out?
1. The game just restarts mid game at spawn positions, like at the beginning of a round start. (Also I was able to automatically upgrade to L2 CC, w/ exisiting upgrades)
2. The same has happened before but it restarts with all buildings/structures in existing positions.
3. As Weezl mentions.
I wanted to say maybe somehow the client receives the information of these ghosts and doesn't know to remove them from the list of entities to render, but if it's taking up slots on a server it has to be a server problem so it clearly has to do with the server not timing out clients properly.
2. Then I try to connect to another server [or just reconnect]
3. Game crashes while map is still loading [30% times]
4. After restarting a game and connecting to same server - there's a ghost
2. Then I try to connect to another server [or just reconnect]
3. Game crashes while map is still loading [30% times]
4. After restarting a game and connecting to same server - there's a ghost<!--QuoteEnd--></div><!--QuoteEEnd-->
This. The game crashes quite often when you join a server while playing/after having played on another server. Then when you connect back there, there will be a ghost.
Also happened to me once when the game 'crashed', ie the screen went black during a game and it just said "Connection problems...", then I disconnected using the console and connected back - there was a ghost.
happened here too, must be related to bsod in some way
<!--quoteo(post=1834850:date=Feb 25 2011, 12:32 AM:name=BomBom)--><div class='quotetop'>QUOTE (BomBom @ Feb 25 2011, 12:32 AM) <a href="index.php?act=findpost&pid=1834850"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->(...)then decided to use overmind to kick the 5 players i had on my server which were ghosts (...) instantly crashed the server<!--QuoteEnd--></div><!--QuoteEEnd-->
happens every time I try it, on every server [tried at least 3 different machines]. sometimes OM does not show them though
When changing team when the round hasn't begun. I join the Marines, I type "RR" in the console for the Ready Room, then I join the Aliens and the bug appears sometimes.
"The server I was playing b161 on randomly initiated a map reload for about 3-4 players. This was completely out of no where and the game was not over or anything. We then found ourselves back in the Ready Room while the game was going on fine for everyone else (they didn't get the map load screen). While we were in the RR, we could see our old names on the scoreboard still(we were still on our old teams) and our "current" selves had names like "Camron(3)". After we rejoined the teams, our old ghost selves were still spawning and were still acting as clients (taking up a server slot). When looking at the scoreboard, my name would appear on my old Alien team as "Camron", and then 3 seconds later it would move and appear on the true Marine side as "Camron(3)". After another 3 seconds it would go back to the other side and this kept repeating. This was visible to everyone and not just me. I exited the game and rejoined but the ghost clients were still there. After the game was won and everyone was transported back to the RR, the ghost clients were still there. This happened on a server named "SitYour-fAsstInternet[SP]" on 1/18/2011 around 9:30 pm. First it should be checked if the server is running "NS2-GmOvrmind" server mod as that may be at fault. Does anyone know how to contact the operator of that server? A server log would be helpful."
This is not the only way to cause the ghost players.
this happened to me once:
i was playing normally and suddenly the game starts to connect/load (just as if admin changes map in NS1) so i think an admin changed map.
but it loads and connects me to the exact same game that hasn't stopped running or reset. there, almost all the other players are left standing frozen where they were when this happened. Those who reconnect get a (2) or (3) added to their name.<!--QuoteEnd--></div><!--QuoteEEnd-->
I have experienced exactly the same thing.
I haven't seen this happen in TF2, like a previous post mentions, and I have not seen it happen in HL1 or HL@ (but I have not played either in over a year). Neither have I seen it in NS!.
Having said all that, though, if it does happen in these games, then maybe the problem has something to do with Steam?
That would be the commonality between HL1, HL2, and NS2.
[EDIT]
Forgot to mention, it's highly unlikely GmOvrmind causes this, as I can think of no logical reason for it to, and these phantom-players occur in just about every server (with or without GmOvrmind).
And, yes this does happen in servers without GmOvrmind on them so it is not related to the mod (plugin?).
Not sure if this was directed to me, but it checks for duplicate SteamIDs.
But again, I'm not sure why this thread is even here, as the problem is pretty obvious:
<u>Client crashes, therefore doesn't exit gracefully</u>; <b><- Ideally crashes shouldn't happen, but we'll let this one slide.</b>
<u>Server didn't get a disconnect-msg from the client, thinks it's still there</u>. <b><- This isn't out of the ordinary, but a TCP-connection alongside the UDP' can fix this.</b>
<u>Server pings client, doesn't recieve a ping back within a reasonable amount of time, sets ping to naught and does nothing else</u>. <b><- WRONG: kick clients that do not respond to pings.</b>
<u>The client rejoins the server, and there are now 2 instances of the same client (and SteamID).</u> <b><- WRONG: kick clients already present on the server when a new instance of them joins.</b>
Regarding the last remark, I'm not sure whether they intend to allow multiple SteamIDs on 1 server, but they really shouldn't, as Steam isn't designed to do that (which is apparent as steam doesn't allow multiple instances of it's Gldsrc\Source games) and chances are it'll screw up the ingame-overlay\friends-system and whatnot.
My mod already does the last point, and I could have it kick clients with a ping of naught as well, but I really don't want to hack together fixes for what for all intents and purposes is an engine-problem.
[Ninja EDIT again]
Above is a discription of just ONE of the causes of ghost-players, but I think it's responsible for most occurances.
That is, if this isn't already in place...
Edit: If a rejoin happens in between this interval and a duplicate player is there, verify that the STEAMID is the same. If the connection is the same, remove one player entity from the game and use the other player entity as the controlled player. If the connection is not the same, find the wrong connection and remove its entity.
OM doesn't show ghost players <b>sometimes</b> [using om_players, when ghost is shown on scoreboard]. It may mean that server doesn't recognize them as connected [not sure if its servers or OM's fault] = problem may be more complicated, i.e. few bugs independently, not only one is causing ghosts [<b>sometimes</b> OM shows them]
I'd definitely advise implementing player's strategy and working from there if you still see issues. In particular, the running of a TCP connection in conjunction with UDP should allow you to have a clean distribution mechanism for packets that *need* to arrive (reduces server cpu load for processing lost UDP messages) and for pings between client and the server.