Partial Connection
Moderators: Community Managers, Developers
Re: Partial Connection
I think it is a fairly tricky problem, and I do not know what safeguards VG had to prevent exploits.
In original EQ, you could reconnect to a character already in the world after going linkdead. If you went LD, EQ would take over your character and attempt to play it like and NPC (very badly, I might add). However, NPCs in EQ could move through solid objects like walls. This led to an exploit in which someone could run at a wall, disconnect their ethernet cable, go LD, reconnect their cable, and find himself on the other side of the wall. To stop the exploit EQ changed to disallow reconnecting to a character in world after going LD.
In any case, the LD character would stay in the world for quite a while before being booted. This was to prevent someone from getting out of a sticky situation by forcing an LD. However, this created the situation in which you would be unable to log in to play because you already had an active character in the world. I think this would have been less annoying if there had been some kind of timer that would let you know how long you had to wait, but it was very frustrating to sit there and spam the "Play" button repeatedly trying to get back to your raid group.
VG did not try to play your character while you were LD, and I don't think VG mobs could move through walls at will anyway, so the original EQ exploit wasn't relevant to VG. If you went LD your character just stood there until you logged back in or got booted from the world. I'm not sure how long it took to get booted, but 30 seconds sounds right. It is possible it was closer to a minute.
As I said, I don't know if VG had any additional precautions against exploits, but you were generally dead when you came back if you went LD in combat (at least outside a group). You can't get out of a bad location, because you came back in the same loc as when you went LD. You couldn't get out of a bad crafting combine, as the game would fail your crafting session with the loss of all expendable materials (this happened to me multiple times). And I think if you went LD during diplo, it was the same as cancelling your diplo session. Anyway, I never heard of anyone using /quit or forced LD as a viable exploit in VG (though I am pretty naive about exploits; others might know more).
In original EQ, you could reconnect to a character already in the world after going linkdead. If you went LD, EQ would take over your character and attempt to play it like and NPC (very badly, I might add). However, NPCs in EQ could move through solid objects like walls. This led to an exploit in which someone could run at a wall, disconnect their ethernet cable, go LD, reconnect their cable, and find himself on the other side of the wall. To stop the exploit EQ changed to disallow reconnecting to a character in world after going LD.
In any case, the LD character would stay in the world for quite a while before being booted. This was to prevent someone from getting out of a sticky situation by forcing an LD. However, this created the situation in which you would be unable to log in to play because you already had an active character in the world. I think this would have been less annoying if there had been some kind of timer that would let you know how long you had to wait, but it was very frustrating to sit there and spam the "Play" button repeatedly trying to get back to your raid group.
VG did not try to play your character while you were LD, and I don't think VG mobs could move through walls at will anyway, so the original EQ exploit wasn't relevant to VG. If you went LD your character just stood there until you logged back in or got booted from the world. I'm not sure how long it took to get booted, but 30 seconds sounds right. It is possible it was closer to a minute.
As I said, I don't know if VG had any additional precautions against exploits, but you were generally dead when you came back if you went LD in combat (at least outside a group). You can't get out of a bad location, because you came back in the same loc as when you went LD. You couldn't get out of a bad crafting combine, as the game would fail your crafting session with the loss of all expendable materials (this happened to me multiple times). And I think if you went LD during diplo, it was the same as cancelling your diplo session. Anyway, I never heard of anyone using /quit or forced LD as a viable exploit in VG (though I am pretty naive about exploits; others might know more).
Re: Partial Connection
Some progress on the original purpose of this thread (Client's being randomly booted to Char Select or having Client Close). I can repeat what's happening 100% of the time, where the client is booted to Char Select, with this nifty tool (I have not gotten it to force close my client, yet).
http://jagt.github.io/clumsy/
Download, launch (no install necessary), and set the Filtering line to:
When I turned on Lag, Drop, Duplicate and Out of Order (default settings), when I switched to .speed 3000, as soon as I took off in 1 direction, the client would either close, or log to Character Select, always with the Unknown OpCode of 1024 error:
I played around with this some more, and it would only happen when there was the Drop Packets option was on. Lag, Duplicate and Out of Order did not affect anything (obviously, Tamper was fun for about 5 seconds before the client exploded and I was spammed to Tell a Dev on WS Console). It happened consistently at regular walking speed.
Could OpCode 1024 be a "Please Resend Reliable Packet Again" error?
It's also worth noting that my most recent commit, which worked for John and I testing by Force Closing the client, does NOT work at all when this dropped packet disconnect happens. Back to the drawing board on that one.
http://jagt.github.io/clumsy/
Download, launch (no install necessary), and set the Filtering line to:
Code: Select all
udp and (ip.DstAddr == YourSubnet'sIPAddressHere or ip.SrcAddr == YourSubnet'sIPAddressHere)
Code: Select all
0000: 04 00 11 00 A4
Code: Select all
0000: 04 00 11 06 2D
Could OpCode 1024 be a "Please Resend Reliable Packet Again" error?
It's also worth noting that my most recent commit, which worked for John and I testing by Force Closing the client, does NOT work at all when this dropped packet disconnect happens. Back to the drawing board on that one.
- John Adams
- Retired
- Posts: 4581
- Joined: Wed Aug 28, 2013 9:40 am
- Location: Phoenix, AZ.
- Contact:
Re: Partial Connection
[quote="Lokked"]when I switched to .speed 3000, as soon as I took off in 1 direction, the client would either close, or log to Character Select, always with the Unknown OpCode of 1024 error:[/quote]
Brilliant, Lokked Knowing the cause is 90% of the battle, even if this is still a mystery, this tell brings us one step closer.
If you can tell me "the .speed command causes issues" i can either throttle the .speed command back further, or players will just know this is the issue and to not use .speed if it's an inconvenience.
This of course does not explain why I am booted completely to desktop when just sitting on the ground in front of Tan Fen Greatcloud, chatting with those that are moving about the world at speed 3000 in other chunks (unless it is part 2 of our issue; mass disconnects).
Great tool. I love tools.
Brilliant, Lokked Knowing the cause is 90% of the battle, even if this is still a mystery, this tell brings us one step closer.
If you can tell me "the .speed command causes issues" i can either throttle the .speed command back further, or players will just know this is the issue and to not use .speed if it's an inconvenience.
This of course does not explain why I am booted completely to desktop when just sitting on the ground in front of Tan Fen Greatcloud, chatting with those that are moving about the world at speed 3000 in other chunks (unless it is part 2 of our issue; mass disconnects).
Great tool. I love tools.
Re: Partial Connection
I should have amended my original post: with the Drop Packets option, I would experience the symptoms outlined above regardless of speed.
I will look further, but I believe if the client receives a non-Open packet on an unused channel, it crashes the client with the "Received non-Control Packet on an unused Channel" error. This could happen if the Open control packet is dropped and the server doesn't realize this.
I will look further, but I believe if the client receives a non-Open packet on an unused channel, it crashes the client with the "Received non-Control Packet on an unused Channel" error. This could happen if the Open control packet is dropped and the server doesn't realize this.
- John Adams
- Retired
- Posts: 4581
- Joined: Wed Aug 28, 2013 9:40 am
- Location: Phoenix, AZ.
- Contact:
Re: Partial Connection
The rapid-reconnect issue does seem to be solved with Lokked's new code. I can disconnect and come back and still have all my channels. I have not yet determined if in-game loss of connection is still an issue, so that one is pending.
A new issue has come up though, and I believe it is because when someone crashes then re-launches the client and sits at Char Select - not chosing to enter world - their "character" still shows in-world. I see Hirshana in /who, in an Unknown Zone, though their character is in chunk 22 (not an invalid id). The log shows Character Select polling World for character data and that's all - not entering world.
Action:
Here's what I need you to do (Lokked?): Change WorldServer so when a client is at Select and is asking the World for all characters for account_id, world needs to destroy any world character objects associated with that account_id that are active. Be sure world does a SaveCharacter() before destroying the object, so current state is preserved when they return. Thank you in advance.
A new issue has come up though, and I believe it is because when someone crashes then re-launches the client and sits at Char Select - not chosing to enter world - their "character" still shows in-world. I see Hirshana in /who, in an Unknown Zone, though their character is in chunk 22 (not an invalid id). The log shows Character Select polling World for character data and that's all - not entering world.
Action:
Here's what I need you to do (Lokked?): Change WorldServer so when a client is at Select and is asking the World for all characters for account_id, world needs to destroy any world character objects associated with that account_id that are active. Be sure world does a SaveCharacter() before destroying the object, so current state is preserved when they return. Thank you in advance.
Re: Partial Connection
[quote="John Adams"] I have not yet determined if in-game loss of connection is still an issue, so that one is pending.
[/quote]
Still appears to be happening to me.
[/quote]
Still appears to be happening to me.
- John Adams
- Retired
- Posts: 4581
- Joined: Wed Aug 28, 2013 9:40 am
- Location: Phoenix, AZ.
- Contact:
Re: Partial Connection
Confirm what Source just said. After being kicked to Select a few times, my .speed command echoes to Console as if it's working, but my speed will not change. This is still an issue.
Re: Partial Connection
I don't know where to stick this, so feel free to move as appropriate...
I was logged in two accounts and went AFK a few mins. Looked at the screen and one of my chars was back at the character select screen. I selected a different char from my list and for a little while had two characters online from the same account.
After a short while, the original char I was logged in with disappeared.
I was logged in two accounts and went AFK a few mins. Looked at the screen and one of my chars was back at the character select screen. I selected a different char from my list and for a little while had two characters online from the same account.
After a short while, the original char I was logged in with disappeared.
Haiku is easy -
But sometimes it makes no sense.
Refridgerator.
But sometimes it makes no sense.
Refridgerator.
Re: Partial Connection
Thanks Moldew. An example of one of the character objects not being destroyed properly. We're working on it!
Re: Partial Connection
Got it.
Assuming this is the same issue - when you /camp and stay at the character select screen, the char will stay shown as online indefinitely if you do a /who. If you create a new char, both will show up in the /who for a little while.
Same issue?
Assuming this is the same issue - when you /camp and stay at the character select screen, the char will stay shown as online indefinitely if you do a /who. If you create a new char, both will show up in the /who for a little while.
Same issue?
Haiku is easy -
But sometimes it makes no sense.
Refridgerator.
But sometimes it makes no sense.
Refridgerator.