11-9-2022

Discussion in 'Changelog' started by robregen, Nov 9, 2022.

  1. Haynar

    Haynar Administrator

    Messages:
    3,637
    Maybe we have it all wrong. I know visually, when you /corpse, back in the day, the corpse would pop to your location.

    We move it to the last location player was at. Maybe it should be moving the corpse, on the next position update from the client, if the client is moving. Then it would move to where the player is. That would not have the corpse move to some location behind the moving client.

    Then it would look correct too.

    If the client is not moving, move the corpse to the last loc client was at.

    So two concepts. Moving client, it queue's the /corpse to move, when it receives next update from the client. Sttanding still client, moves to current client location.

    Then it would visually resemble what people remember.
     
    iraxion, Walex, Cadsuane and 3 others like this.
  2. Ravenwing

    Ravenwing I Feel Loved

    Messages:
    3,166
    If the devs are convinced that the 50-unit limit is AKurate, it's not unreasonable to insist on that limit to make it harder to drag corpses out from under the feet of hostile NPCs, and I'm sure somewhere in the game there's a wall-gap between 51 and 100 units that shouldn't be dragged through.

    It's also extremely clear that whatever the limit, dragging a corpse in a straight line should be much more feasible than it currently is on TAKP. Otherwise, every single AK log of a player trying to drag a corpse with SoE on would look like this:

    [Tue Nov 15 14:16:57 2022] Your body pulses with an avian spirit.
    [Tue Nov 15 14:16:59 2022] Summoning Coriander's corpse...
    [Tue Nov 15 14:16:59 2022] Summoning Coriander's corpse...
    [Tue Nov 15 14:16:59 2022] Summoning Coriander's corpse...
    [Tue Nov 15 14:17:00 2022] Summoning Coriander's corpse...
    [Tue Nov 15 14:17:00 2022] Summoning Coriander's corpse...
    [Tue Nov 15 14:17:00 2022] Summoning Coriander's corpse...
    [Tue Nov 15 14:17:01 2022] Summoning Coriander's corpse...
    [Tue Nov 15 14:17:01 2022] The corpse is too far away to summon.
    [Tue Nov 15 14:17:01 2022] Summoning Coriander's corpse...
    [Tue Nov 15 14:17:01 2022] The corpse is too far away to summon.
    [Tue Nov 15 14:17:01 2022] Summoning Coriander's corpse...
    [Tue Nov 15 14:17:01 2022] The corpse is too far away to summon.

    They don't. In fact, logs don't generally show people spamming /corpse multiple times per second, and they still seem to drag just fine.

    I'm looking forward to seeing how Solar's forthcoming changes work out.
     
    jbry2 likes this.
  3. Tuen

    Tuen People Like Me

    Messages:
    585
    It’s cool no one liked doing inner ac anyway :p
     
  4. Ravenwing

    Ravenwing I Feel Loved

    Messages:
    3,166
    That's a very interesting point. I just tried it, and the drag spot we used on AK works within the 50 unit limit by a hair's breadth; the positioning is very tight.

    I suppose I could be muddling my TAKP memories with my AK memories, but I don't remember it needing such precision.
     
  5. Mokli

    Mokli I Feel Loved

    Messages:
    2,455
    Is it possible this harsh distance limitation was more of a PC live thing and not an AK thing? I haven't looked at everything linked in this thread, but finding posts "not long after PoP" may not apply to AK since AK got its source from live basically before PoP was complete. It was pretty common that Hobart didn't actually do many code changes, but rather just database changes. Lot's of old AKers in this thread are saying it doesn't feel quite right.
     
  6. Torven

    Torven I Feel Loved

    Messages:
    2,742
    I just checked Acrylia Caverns and from the NW corner with the skeletons, 50 units covers the inner AC hallway such that you could be against the wall farthest from the corpse and still get it. Doesn't look very tight to me but I don't know where you dragged from.

    I'm more confident that the range was less than 100 than I am of it being 50. But the following fits less at a range larger than 50:

    * Many old posts use the 50 number. The 1999 era posts (most of them are from 1999) even mention a Sony patch note/post. I've not found any posts that gave a number other than 50. If Sony raised it from 50 before 2004 then they seemingly did not mention it. Granted I doubt these users ever measured it.

    * In an AK log I found a raid /corpsing through the PoEarthA door which is fairly easy to do at 50 units and somehow some of them still died too far from it. This door is 11 units thick. The wall itself is 22 units thick; you needn't even be at the door.

    * I had to inch up to /corpse up the PoNightmare ledge and this just isn't required at 75 units and anything beyond 75 units would be dangerous because you'd be too close to a horse (or even in aggro range of one). Almost every member in my group I got 'too far' messages when trying to drag up. 50 units makes the most sense here because you kind of have to go down the slope a little bit at 50; even at like 65 units you don't really have to if the corpse is against the wall.

    * I found Utdaan in a log telling his guild that corpse range was pretty far and that he was able to drag a corpse which was 'near LIS's platform' in Seru's room 'from the pillar'. That is rather ambiguous and there are a lot of pillars in the room but standing from a pillar next to a door to Seru's location is a little bit more than 100 units. You can drag a corpse lying on the glass 'moat' while standing on the lip of the pillar at 50 units. At 75 units you can drag a corpse actually on the platform, above the little steps.

    We're not going to find anything conclusive but the evidence points toward 50 being more likely than not. 75 seems unlikely and anything between seems to be a weird value to have set it at. But I'm all ears if people have anecdotes to share.
     
    Cadsuane and Break like this.
  7. Break

    Break People Like Me

    Messages:
    610
    I'm glad that the running while dragging aspect is being actively looked into because I do recall being able to run with a corpse fully sowed on AK (almost always using Bih'Li or clicky sow boots). I did have issues with a hotkey that attempted to drag multiple corpses. That could have been due to any number of reasons including my slow mac mini with only 4 gigs of ram.

    Ravenwing is talking about DC with the rez portion. There were some intense R&F threads back in the day regarding a specific VT wing mob. Basically, you could rez through the floor at the same point where you'd normally keep a coth bot. Our normal procedure was to run an SoS rogue up there who would start to tank the mob while the mage summoned up an enchanter, bard, or tank. Occasionally you'd get an unmezzable mob (Eom?) that would rock the rogue's world before the mage could summon up a warrior. Once we realized that you could heal and rez through the floor, it became our MO to heal the rogue or drag a warrior's naked corpse up to divine rez and have buffs casting to land as soon as the warrior accepted the rez. I never really thought of that as an exploit, but I can see the argument. It was right on the edge of being an exploit, and it could easily lead to one. We did the other thing that was definitely an exploit at least once on accident and at least once on purpose. It was a method that was also used outside of guild raids by a small group as well.

    That's a long winded anecdote (since Torven asked for those) that leads to me to believe that you could NOT directly drag corpses up to that spot. I think we still used a rogue to drag those naked corpses the long way. If we knew we could heal and rez that distance, we probably would have attempted to drag them. Does anyone know the distance between floors there? I believe the mobs were Diabo Xi Va Temarial and Thall Xundraux Diabo.
     
  8. Walex

    Walex I Feel Loved

    Messages:
    663
    From the sound of it, you're describing DXVT and DXX. I just pulled it up on a map and dropped some pins around and the /corpse range between the DXX safe area and the DXVT trap mob area is slightly more than 100 units (it's hard to know exact locs needed without actually being able to log in and test). It looks like the range is anywhere from 110 to 120 units. Long enough for buffs to land as you described, but too far for /corpse to work.
     
  9. Auyster

    Auyster People Like Me

    Messages:
    752
    I got no issues with the corpse range changes. Just annoyed that it compounded a bug that was uncommon with 100 range, and very prevalent with 50 range.

    Even with 100 range, I could Selos outrun spamming /corpse with a bard.
     
  10. necra

    necra People Like Me

    Messages:
    606
    I dont think you could drag corpses to dxvt from the dxx spot on takp even before the changes
     
  11. solar

    solar Administrator Staff Member

    Messages:
    1,194
    Let me explain the technical problems with this. When you spawn, the server loads your position from the database and sends it to your game client, then you spawn there. From then on, movement happens on the client, and the client sends a stream of position updates to the server. There is an interval to these updates, 1 second if you're moving straight, 150 ms if you're making heading changes. This is why you see characters ghost and snap back to their location when they stop moving, there is a delay before the client tells the server that you're done moving, a delay to the message arriving at the server, delay to processing the messages the server is handling from all clients, and then the reverse of this as the server distributes the movement data to all of the clients who have to wait to receive it and process it. This is obvious but I think it needs repeating, the server can not know where you are until some time after you move there. When you see a player move, it is after several round trips of client <-> server interactions, so it's always delayed. There are several hundreds of milliseconds of delay that are intentionally built into this to reduce the amount of data that is being processed and make this game work on the networks of the late 1990s. With selos, I can move about 78 units between updates. This makes it impossible to move continuously while dragging with a 50 range limit.

    The way /corpse works, there is no range check or any client <-> server delay interaction. It is simply a message to the server sent immediately when you use it, and the server simply does corpse.location = player.location after validating that the player is in range. The server does summon the corpse to your location every time you press it, I was able to get 6-7 times per second by spamming the button rapidly, however it summons it to the same exact spot every time, the last spot you were before you moved. At some point your position is updated, a second later, and you've already moved out of range so the next /corpse fails. It still works this way on live EQ from what I can tell, but the range has been extended so much that players can't outrun it within the update interval unless there are network problems. The easiest thing that would make this work reliably while running is to make the range excessively large so that you never outrun it, but we have some evidence in this thread that the range was limited, probably to 50. We also have testimony from players that it was possible to drag while moving with selos. It doesn't seem like it's possible for both of those things to be true at the same time. You can't move the corpse faster than the rate of position updates.

    I don't think people are maliciously lying, so I implemented a workaround to address this, but I'm still curious what the problem is and hopefully it gets figured out eventually. I considered that the rate of updates could possibly be adjusted by parameters sent from the server but I found no way to do this. This delay logic appears to be hardcoded in the game and we just try to emulate the server side to be the same as the old server was. I also tried to find a way to interrogate the client for its position while looking for a workaround and I didn't find anything that made this faster than 1 second. This wouldn't work anyway, because it would happen after the /corpse command, not before it. I also tried modifying the game client code to send updates more frequently and this did make it possible to drag smoothly even with less than 50 range. So if I were working at Sony and trying to implement 50 range while also caring about dragging it at high speed, I would have modified the way the client sends the messages, not messed around with some unreliable magic on the server end, but who knows what they did on the server. It is not possible for the server to know where you are until after the client tells it about the player's movements. Given these constraints and my knowledge/skills, I can't see any way to make this work on the server without extending the range so that a player traveling nearly 100 units between updates can summon that distant corpse. The solution from Sony was ultimately /corpsedrag which moves the corpse to where you are, each time your position is updated. Spamming /corpse is essentially the manual version of this and it doesn't work if you can move out of range between updates.
     
  12. showstring

    showstring I Feel Loved

    Messages:
    3,332
    as an aside, I don't think I've seen this ghosting problem on other servers. anyone else?
    it's evident when you zone to a new zone, you'll see your char run off, and then snap back. seems odd
     
  13. necra

    necra People Like Me

    Messages:
    606
    Sounds like revert to old method while you investigate ;)
     
    showstring likes this.
  14. iraxion

    iraxion Well-Known Member

    Messages:
    102
    I may be overlooking something (it's an interesting problem to think about, because you have to think in different time frames - your client, server, my client with network delay and jitter in between) but I disagree from a technical point of view.

    I can see you zooming by in a smooth motion when you run past with selos at 78 UPS (Units Per Second Bard Speed(tm) :)). On my screen, you don't warp from update to update at 1-second intervals. Of course, that is an illusion created by my client, as it does not actually receive all your positions in between. And sometimes the result is off by a bit, so you ghost a bit from my point of view, or I get to see a jerky or sudden motion.

    The server could conceivably do the same. Or at least something sufficiently close (ignoring geometry / collisions). That's what I tried to say further up in this thread when I asked if you could predict the position.

    (By the way, the issue applies to other things as well. Spell and projectile range checks for example. I don't see a real issue there - in the sense that something would need fixing - but the technical problem is the same.)

    Not trying to say that you should do this; just that it is technically possible. Did they do that back in the days? I have no idea. Is it worth implementing here as a fix for dragging while running? I can't tell. I do think that Haynar's idea is better
    because it's simpler and more local. Wouldn't even need a real queue to implement that (but yes, conceptually it queues the motion).
     
  15. Amirite

    Amirite Well-Known Member

    Messages:
    137

    you're relying on players to die in the right spot. and for PoEa, the gator most likely got them way before the door.

    just throwing that out there!
     
  16. Ravenwing

    Ravenwing I Feel Loved

    Messages:
    3,166
    I believe we used the SW corner, where the distance is *exactly* 50 units: 217.55 to 167.88, according to /loc. Yes, looking at a map, I now see that the NW corner is actually closer, but as you yourself have often observed, we're pretty dumb ;)

    Anyway, maybe I misremember the corner or it was in fact that tight. It's been such a long time; many things are possible!

    Thanks for the technical explanation!

    We all know that even without maliciously lying, we often misremember things, and old memories are filtered through more recent experiences on TAKP, Live, or other emulated projects.

    That said, I'm faintly surprised that the post-patch state of corpse dragging on TAKP doesn't seem to strike you all as, well, glaringly and unambiguously wrong.

    I don't have a lot of bard logs, but Torven did share his with me a while back, and when I open it, I see five instances of him dragging a corpse with Selo's for more the a few seconds. The drags are all pretty short, being between 20 and 40 seconds, but four of them are successful. In one, he loses the corpse briefly at the 16 second mark, picks it up again, and finishes the drag.

    That seems like it squares with what most people, myself included, are saying in this thread: you could and did lose corpses at Selo's speed, but it was also possible not to lose them. This, by the way, also squares with my experience of Selo's dragging on TAKP with the previous 100-unit limit.

    Since the patch, I can't drag while running in a straight line with Selo's at all. I lose the corpse within the first few seconds every time.

    What's more, while I can just barely drag a corpse successfully at SoW speed (+55%). At FoE speed (+65%), I lose the corpse within a few (<10) seconds every single time, no matter how hard I mash the button.

    Looking at logs, I can't even find an example of someone losing a corpse at FoE speed that doesn't have a multi-second gap in /corpse commands. There may be one, but if so, it wasn't a common thing.

    With that in mind, it seems odd to me that "corpse dragging doesn't work at FoE speed" with a 50-unit limitation isn't dispositive: I would think that this obvious (to me? maybe you disagree?) malfunction would outweigh the other evidence we've seen in this thread, unless some kind of technical explanation for how the 50-unit limit and reliably functional corpse dragging at +65% speed could coexist.
     
    showstring likes this.
  17. Torven

    Torven I Feel Loved

    Messages:
    2,742
    sorry, I meant earth B
     
  18. showstring

    showstring I Feel Loved

    Messages:
    3,332
    what exploit are we trying to prevent with x,y limits, versus the z-limit?

    will the devs be content with just the z-limit being applied
     
  19. Cadsuane

    Cadsuane People Like Me

    Messages:
    815
    That explains exactly what I always suspected, and the reason then when agro kiting, I would always tap left or right after stopping, before begginning a spell cast, to force a position update and prevent an "interruption" due to "movement"
     
    Break likes this.
  20. solar

    solar Administrator Staff Member

    Messages:
    1,194
    It's possible, but this is not reliable to do and considering how much focus was put on reducing work and data processing, seems unlikely to me. This and the 'queue' suggestion are just roundabout ways of saying to allow the range limit to be exceeded while the player is moving, where 'player is moving' is some computation that is made when the /corpse command is received. This is what I ended up implementing already but simply extending the range would be a lot simpler, and this whole discussion started because of the range being made shorter. I think the problem is solved now, will see how the feedback is from players after patch.
     
    Palarran likes this.
  21. Torven

    Torven I Feel Loved

    Messages:
    2,742
    Frosst's logs have a lot of corpse drags with out-of-range interruptions, and he was machine gunning /corpse in them. Logs don't show if you're continuously running in a straight line or not. That said we are working on the assumption that it was possible, albeit not reliable, and Solar put in a workaround.

    Logs have hundreds of 'out of range' messages just from players running up and attempting to grab a corpse because the player did not estimate the distance correctly before starting to drag. 100 units is half of spell range.

    The evidence is fairly conclusive to me that corpse range was under 100 units. It's entirely possible that Sony put in some kind of hackish solution to allow people to drag easier, or we're just not implementing /corpse correctly. I think it's likely that Sony had zone specific Z axis limits, either hardcoded or in some zone data table field. Zone specific X/Y ranges could also have been possible although I think that is less likely. We won't be able to get this perfect without looking at Sony's code. Replicating a server that hasn't been running for 8 years is obviously very difficult, particularly when the remaining sources of information (forums) have been going offline.
     
  22. kai4785

    kai4785 People Like Me

    Messages:
    320
    I can attest, after being killed mid-air during a gflux, and then rezzing the corpse (with out dragging) caused me to fall and die (again) :) WW dragons are the best.

    I don't see this specific question being asked, so I want to ask it.

    If the xy
    If we corpse it where you "might be between updates", then it won't take long before we find the way to "trick" the server into pushing a corpse through a wall, or locked door, that you run directly towards.
     
    Pithy likes this.
  23. kai4785

    kai4785 People Like Me

    Messages:
    320
    Shoot, I cut that bit about the question out cause i was on page 2. Apparently it put it back in when I click the "reply" button to iraxion. Ignore that bit (can't edit)