gamefreedomgit / Frostmourne

3 stars 1 forks source link

Retrieving item info + unordered lists #1966

Open sputnikk opened 2 weeks ago

sputnikk commented 2 weeks ago

Description: I believe all the issues I will describe stem from an inefficient/bottlenecked/buggy way the server transmits cache info to the client. I also mention my internet connection being top tier, so no issues come from data transmission on my part. These bugs happen on: fresh open of client and login, relog between characters, swap between accounts.

  1. Retrieving item info: This big issue here mainly stems from 3.5 patched client having cache writing disabled. For some reason patch 3.0 had it enabled, but later when patch 3.5 was released, cache was disabled again. However, using a vanilla 3.3.5 client with cache enabled makes this better but doesn't fix it completely, showing an underlying server issue when it comes to transmitting cache elements to the client properly.

2.Related to 1: Ordered lists such as Profession tabs, friends list, become unordered and you are unable to use any function such as order,search, or even create item(in case of profession) until the list fixes itself after a reload and/or waiting 1-10min. Even after the list fixes itself, some of the items required to create the item(reagents) from profession will not show because of the retrieving item info bug

https://vimeo.com/1012022145?share=copy#t=0 - this video shows most of the bugs i describe (except friends list, but same thing happens there)

Fixes: Now the first thing to do to improve this issue would be to re-enable cache writing in the whitemane client. This has been done before, all you need to do is using a hex editor on wow.exe change at OFFSET 61BE58 from 7C 7C to 43 61 This can be done dyi by any player right now as a temporary fix to slightly improve some of these issues.

BUT, this is now proven to not solve the underlying issues! I believe a rework of how the server handles transmission of cache information needs to happen from the devs server-side. I know that this will probably imply a lot of effort but improving this system will be a must long-term, especially if the plan is to continue with the no-cache writing client model, since data will not be pre-stored and needs to be communicated with client as fast as possible for no errors to appear client-side.

Riztazz commented 2 weeks ago

As far as 3.5 client goes, that's a known issue and client patch is coming. As far as everything else goes regarding vanilla client, it is not server. The data is cached at start-up and sent out right away, even when requested many times a second (which client does). I cannot figure how the client uses the data it received but it seems to be periodic refresh. In short, server is not bottlenecked, does not delay sending query data, to me it smells like client just slowly chugging through the data

sputnikk commented 2 weeks ago

I understand, but it doesn't make sense why this issue is so prevalent on this server only then. These bugs existed even on beta, before the custom client was implemented(I remember being annoyed at the unordered profession lists on ptr, but there were more important bugs back then). I don't know the coding behind this system, but there must be a problem if these bugs happen even with fully populated cache, even on unmodified 3.3.5 client.

I've played on a server that had custom ideas similar to whitemane a while ago. They also had a nocache launcher and custom patches, but I've never had these errors there. That server was running azeroth core, but I don't know how modified it was from stock. Perhaps you can compare trinity code vs azeroth regarding this function since its open source.

Riztazz commented 1 week ago

They are the same. My only guess is that you guys have too many spells that can show the same profession in spell book and that's when client jerks Could you maybe take a screenshot of each page in your spell book? In the general tab, i don't need class stuff.

The way wow works is a bit different, when you open the tab, that's when the query happens and the server sends the data in the same order that server received the query packets. I've tried optimizing it with a different multi_item_response packet but to no avail. Server is not bottlenecked, packets come out almost instantly, so that's just something else;p

sputnikk commented 1 week ago

https://imgur.com/a/c97uAoy Don't think the multiple spell for same profession thing causes it. On the warrior you can see I have no extra spells but same issue. Also it seems that when you open alchemy for example, any other spell like potion mastery is also highlighted and opened they are technically regarded as same spell.

But regardless, now that I've been using a client with cache writing enabled for a few days and it probably got pretty well populated between my own characters' professions I can say that this issue is pretty much never happening. I've been trying to replicate it as I'm typing to no avail. So overall I'm guessing after client patch 3.6+ fixes cache writing most things that stem from "retrieving item info" will be fixed in a few days, if not I will re-address at the time.

sputnikk commented 1 week ago

https://www.mediafire.com/file/fqys8v25u7dndzn/wow.exe/file -fixed download link This is basically whitemane patch 3.5 client wow.exe but with enabled cache write that I use. Feel free to use this to mitigate these bugs if you don't know how to fix your own like I mentioned in OP. If you don't trust the source just wait for official whitemane 3.6+ patch ig.

Riztazz commented 1 week ago

I do know how to edit the client, the custom client as you said has cache disabled but the patch will come out soon enough to fix it so it will be in the same situation as vanilla 3.3.5a client. I don't think there is any issue with vanilla client, i've partially reversed the tradeskill code, checked how server interacts and how client sends the data. When you open the tradeskill window and you have all the recipes, you usually send circa 200 item query opcodes which server responds to instantly and yet.. client waits with populating tradeskill window till cache timer expires and it is flushed to disk There is many functions involved in function so i couldn't trace all of them sadly.

I've seen TC do something like https://github.com/TrinityCore/TrinityCore/commit/5da217877be7f22db3bfc8ee06ca1ffad172d281 which was eventually reverted, but it gives me a few ideas to test if there are issues once new patch is out and the issue persist. Because i think it's just normal behavior of the client when it needs to parse through a lot of item data opcodes, those packets are quite big. So if you receive 200 of them at the same time, the client needs some time to populate everything everywhere. When you receive those packets, many internal client systems may use the item cache data for their purposes, not just tradeskill window.

I think it's just intended behavior and how the client was designed.