I have - once again - died because of something, my client died, the network did something, the server lost it for a moment; whatever, I didn't die because I was overpowered, but for some stupid reason this morning (7:20-ish GMT), and it annoys me. I lost about a million exp and dropped from lvl 17 to 16.
This is the kind of things that sour the game, and I think there should be a way to at least get restored to the level one has lost. I mean, being killed fair and square is sort of OK, that's part of it, but....
Is it possible to be restored to my previous level? If this is something is not done, at least I'd like to hear the arguments.
When things go wrong...
Moderators: Board moderators, Metalforge staff
At present it is very hard to determine if a player died fairly or from some accidental cause. However I think some improvements could be made to the server to minimise acccidental deaths. Usually when the client drops connection without closing it the server still thinks that the client is still connected for some time, and things may happen to the player while he/she are not in control of themselves. The server can send ping packets (in-game, not ICMP pings) to which the client has to reply in a short time limit not to get disconnected. This would however be a bit problemattic on slow and laggy connections.
Upon dying there could be a server option set to backup the player file before applying the death code to it. along with a dm "restore" command, which restores a player to state before last death. Of course to prevent item duplication and similar bugs only stats and experience would need to be backed up. Also even with such an option present there would still be a question of how to use it? Any player would then be able to go up to a DM and say "my death was a horible accident, please restore me!"
Dying is part of the game. Accidents happen in real life, as they do in the game...
Upon dying there could be a server option set to backup the player file before applying the death code to it. along with a dm "restore" command, which restores a player to state before last death. Of course to prevent item duplication and similar bugs only stats and experience would need to be backed up. Also even with such an option present there would still be a question of how to use it? Any player would then be able to go up to a DM and say "my death was a horible accident, please restore me!"
Dying is part of the game. Accidents happen in real life, as they do in the game...
I am inclined to agree with Casper, it is presently almost not possible to tell an accidental death from a death in battle.
I know well that it is very frustrating to die for whatever reason but this is part of the game and I enjoy the gaming process as well as the result(higher xp).
Your ultimate goal is to become invincible and unbeatable, while the ultimate goal for monster is to do ..well...what the monsters usually do, kill you!
As far as dms go: if there is ever a feature to restore players to previous state, it will propably be a policy issues to not do so just like it is now to not award xp on metalforge.
I know well that it is very frustrating to die for whatever reason but this is part of the game and I enjoy the gaming process as well as the result(higher xp).

Your ultimate goal is to become invincible and unbeatable, while the ultimate goal for monster is to do ..well...what the monsters usually do, kill you!

As far as dms go: if there is ever a feature to restore players to previous state, it will propably be a policy issues to not do so just like it is now to not award xp on metalforge.
Yes, I think this is where the problem lies: the connection has to drop. Unfortunately it seems that the only way to do this is to reboot, because of the way TCP/IP is implemented ( as far as I remember, a TCP connection doesn't timeout for 2 hours!). But I think it would be reasonable to implement a heartbeat in the client; I don't think it will cause any problems in reality - it doesn't have to be faster than most people tend to use teir keyboard. Once per second, I'd say. If the server pushes you off after missing 5 heartbeats, your lvl 15 character isn't killed stupidly by a flock of mice.Usually when the client drops connection without closing it ...
The only way I can see to make this work is to allow users to set their own timeout time for missing heartbeats, as what is too long for fast connections is far too short for a slow connection.
With a command like
timeout 10
you will say that if your client does not reply to 5 heartbeats within 10 seconds of the most recent heartbeat (ie does not reply to any of 5 consecutive heartbeats within 10 seconds of it being sent) do a save & drop.
0 would then mean never drop me, and fast connection users may want to set a timeout of of 1-2.
With a command like
timeout 10
you will say that if your client does not reply to 5 heartbeats within 10 seconds of the most recent heartbeat (ie does not reply to any of 5 consecutive heartbeats within 10 seconds of it being sent) do a save & drop.
0 would then mean never drop me, and fast connection users may want to set a timeout of of 1-2.
-
- Forum Fanatic
- Posts: 852
- Joined: Sun Jun 13, 2004 2:07 am
- Location: Hemel Hempstead
I think the same thing should happen, as happens when they get disconnected and the server detects it.
(isn't this just improving server detection?)
I would think the above notes could be improved bandwidth wise,
by the server pinging the users, much like irc.
If they recieve a message from the user, update the users active time.
If too much time goes by when they havn't recieved a message, send a "ping",
which asks the client to say they're still alive.
After a bit of that, log them out just as if they dropped connection.
(isn't this just improving server detection?)
I would think the above notes could be improved bandwidth wise,
by the server pinging the users, much like irc.
If they recieve a message from the user, update the users active time.
If too much time goes by when they havn't recieved a message, send a "ping",
which asks the client to say they're still alive.
After a bit of that, log them out just as if they dropped connection.
Treating it as the client is disconnecting normally seems good. However I'm not sure if the way it is doing it now is a good way, as if you wait two hours you get a free trip home.leaf wrote:In this case, where does the server "push" the player off to?jan wrote:... the server pushes you off after missing 5 heartbeats...
Do they get a free trip back to their bed of reality?
Are they temporarily removed from the game until they re-establish their connection?
Or, something else?
In play terms a user disconnecting without logging off is equivalent to them passing out. Therefore an interesting place to take them would be to a hospital, where they recieve rest and nourishment. Unfortunately placing it somewhere unreachable would be a huge inconvenience to players that pass out often. On the other hand, as Leaf suggests giving a free trip to Scorn (or elsewhere) is a cheat.
Ideally the server should detect where the player was (depending on the map in the directory tree perhaps?) and place the player into a regional hospital... and charge the money for running it out of the taxes... but that's for another thread alltogether.
As for the default timeout 60 seconds to reply seems sufficient. I know IP specifies it to be 120 sec, but even on slow connections one rarely gets ping times above 30-40 seconds.