DarcyMardin wrote: »For people who are looking for a reliable way to back up and save for posterity your character-specific data before Monday:
LibAchievementsArchive
@code65536 , thanks so much for making this library. One question -- I have more than one account. Can I use this library to store the achievement data for all my characters across all 4 accounts, or should I somehow separate them? Thanks!
For people who are looking for a reliable way to back up and save for posterity your character-specific data before Monday:
LibAchievementsArchive
@DarcyMardin I personally play on multiple accounts, on multiple servers, so you can rest assured that the library can handle multiple accounts.
For people who are looking for a reliable way to back up and save for posterity your character-specific data before Monday:
LibAchievementsArchive
For people who are looking for a reliable way to back up and save for posterity your character-specific data before Monday:
LibAchievementsArchive
SilverBride wrote: »The closer this gets the less I am playing. I tried to come up with ways to adapt and make this work but I don't think it's possible. I will install LibAchievementsArchive in hope that it can help some day, but for now I don't even want to play any more.
silvereyes wrote: »Also just released.
Character Zone Tracker addon
Install that on live and log in to each of your characters in order to preserve character completion for delves, world bosses and world events (e.g. dolmens, geysers).
Make sure you install the LibSavedVars dependency, or the addon won't load.
I also find it amusing that instead of data being eliminated, it will simply be transferred to addons. Will that negate any potential performance benefits? I’m not a professional coder, so I’m not sure how that works. Does it only impact the client, or do the data calls add to the server load?
For people who are looking for a reliable way to back up and save for posterity your character-specific data before Monday:
LibAchievementsArchive
silvereyes wrote: »Also just released.
Character Zone Tracker addon
Install that on live and log in to each of your characters in order to preserve character completion for delves, world bosses and world events (e.g. dolmens, geysers).
Make sure you install the LibSavedVars dependency, or the addon won't load.
Features
- Backs up zone completion for delves, world bosses and world events (dolmens, geysers, etc.) on live (Update 32).
- Tracks character zone completion for delves, world bosses and world events once Update 33 is released.
- Shows completion popup announcements for delves, world bosses and world events on individual characters once Update 33 is released.
- Adds tools to reset delves, world bosses or world events. (Keyboard only)
- Adds tools to set a character to load delve, world boss and world event completion from the account (Keyboard only)
Known Issues / Planned Fixes
- Compass shows account-wide icons. This is not intentional.
- No text localization for non-English languages, yet.
- Multi-boss delves in Cyrodiil, Craglorn and Hew's Bane report delve completion after only a single boss kill. This is not intentional.
Limitations
- A game client crash will wipe your progress. To ensure your progress is saved, either relog, or do a /reloadui periodically.
- Progress is tracked in the local SavedVariables folder. Back up your files, preferably to the cloud, to prevent data loss if your storage device fails.
I also find it amusing that instead of data being eliminated, it will simply be transferred to addons. Will that negate any potential performance benefits? I’m not a professional coder, so I’m not sure how that works. Does it only impact the client, or do the data calls add to the server load?
It's effectively transferring the work from the server to the client. That said, any performance impact is negligible. While writing LibAchievementsArchive, I had taken some measurements to see how long it took to fully back up a character's achievement data...
The entire process of reading, processing, and encoding all of the data for all 3219 achievements for a character (which includes associated progress data; e.g., "Humanoid Slayer" is a single achievement with three separate requirements of killing 1000 humanoids, 500 goblins, and 100 giants) took something on the order of 30ms (0.03s).
On the server side of things, each achievement costs ZOS just 128 bits (16 bytes): their APIs reveal that they have a 64-bit field into which the various progress data is packed, and another 64-bit field for the timestamp. Multiply that by 3219 achievements (the highest valid achievement ID this patch), and we're looking at around 50KB of achievement data per character.
The impact on the client is trivial, but that also suggests a somewhat limited impact for leaving it on the server.
aaaaI also find it amusing that instead of data being eliminated, it will simply be transferred to addons. Will that negate any potential performance benefits? I’m not a professional coder, so I’m not sure how that works. Does it only impact the client, or do the data calls add to the server load?
It's effectively transferring the work from the server to the client. That said, any performance impact is negligible. While writing LibAchievementsArchive, I had taken some measurements to see how long it took to fully back up a character's achievement data...
The entire process of reading, processing, and encoding all of the data for all 3219 achievements for a character (which includes associated progress data; e.g., "Humanoid Slayer" is a single achievement with three separate requirements of killing 1000 humanoids, 500 goblins, and 100 giants) took something on the order of 30ms (0.03s).
On the server side of things, each achievement costs ZOS just 128 bits (16 bytes): their APIs reveal that they have a 64-bit field into which the various progress data is packed, and another 64-bit field for the timestamp. Multiply that by 3219 achievements (the highest valid achievement ID this patch), and we're looking at around 50KB of achievement data per character.
The impact on the client is trivial, but that also suggests a somewhat limited impact for leaving it on the server.
you are neglecting it's database stuff.
One 4k movie is a lot less of an issue than equivalent byte database table with super small data per entry...
a 10GB database with 300M 32byte entries will behave quite different than a 10GB one with 300k 32kbyte entries.
and you forgot to count charid plus achieveid in your space sumup.
Just to go into this in further detail, because I also wanted to address this:On the server side of things, each achievement costs ZOS just 128 bits (16 bytes): their APIs reveal that they have a 64-bit field into which the various progress data is packed, and another 64-bit field for the timestamp. Multiply that by 3219 achievements (the highest valid achievement ID this patch), and we're looking at around 50kB of achievement data per character.
50kB should be considered a worst-case scenario. If what is being said is an accurate representation of how ZOS is dealing with the data on the server side (and… honestly, who knows)… then this is less than 1MB per account (assuming maximum of 18 characters being 900kB), and if we assume 1MB (rounding up)… now multiply that by all the accounts and work out an average. ZOS's last statement about accounts was somewhere just over 19 million, collectively, if I recall.Thanks for the explanation!
And their servers must be on life support if scavenging just 50kb per character is going to make or break performant-ness!
Isn't it interesting that people who are are against this change are for the most part passionate about it, writing detailed, multi-paragraphed explanations as to why it disrupts how they approach the game, yet those in favor usually write brief, vague remarks supporting it?
I'm genuinely curious why that is.
silvereyes wrote: »I whipped up a quick integration into the Quest Journal for that library into Update 33, so that any completed achievements in the archive are displayed as character-specific, even achievement links.
Character Achievements addon
silvereyes wrote: »
50kB should be considered a worst-case scenario. If what is being said is an accurate representation of how ZOS is dealing with the data on the server side (and… honestly, who knows)… then this is less than 1MB per account (assuming maximum of 18 characters being 900kB), and if we assume 1MB (rounding up)… now multiply that by all the accounts and work out an average. ZOS's last statement about accounts was somewhere just over 19 million, collectively, if I recall.On the server side of things, each achievement costs ZOS just 128 bits (16 bytes): their APIs reveal that they have a 64-bit field into which the various progress data is packed, and another 64-bit field for the timestamp. Multiply that by 3219 achievements (the highest valid achievement ID this patch), and we're looking at around 50kB of achievement data per character.
This is… 19TB (again, rounding up here, 900kB would end up being more around 17TB). That's immense and, quite frankly, nonsensical. 50kB per character is the absolute worst-case scenario. It's split over three platforms, divided separately over North America and EU: PC-EU/NA, PS-EU/NA, Xbox-EU/NA. So, divide by six. Each platform and region would therefore have 3.2TB. This obviously isn't entirely accurate as certain platforms/servers will have varying numbers of players and you can't divide them evenly, and not everyone has 18 characters. But we don't have those numbers, so we can only work with what we have.
[... much snippage...]
I don't think that the "performance issue" is related to the size of the database used to store this data.
The better word is "homogenization". It appears to be for more than combat skills. I am thinking that this word represents the shining light leading them from the darkness they are in. It is the theme for 2021 and 2022. This light might be salvation, or they may end up wishing Carol Anne was there to warn them from going into the light.Now, even this isn't accurate given the… hybridisation, for lack of a better word
It really isn't. Not for a data-driven software service catering to a theoretical 19 million people (which, let's be honest, most are going to be in cold storage)Just to go into this in further detail, because I also wanted to address this:On the server side of things, each achievement costs ZOS just 128 bits (16 bytes): their APIs reveal that they have a 64-bit field into which the various progress data is packed, and another 64-bit field for the timestamp. Multiply that by 3219 achievements (the highest valid achievement ID this patch), and we're looking at around 50kB of achievement data per character.50kB should be considered a worst-case scenario. If what is being said is an accurate representation of how ZOS is dealing with the data on the server side (and… honestly, who knows)… then this is less than 1MB per account (assuming maximum of 18 characters being 900kB), and if we assume 1MB (rounding up)… now multiply that by all the accounts and work out an average. ZOS's last statement about accounts was somewhere just over 19 million, collectively, if I recall.Thanks for the explanation!
And their servers must be on life support if scavenging just 50kb per character is going to make or break performant-ness!
This is… 19TB (again, rounding up here, 900kB would end up being more around 17TB). That's immense and, quite frankly, nonsensical.
aaaaI also find it amusing that instead of data being eliminated, it will simply be transferred to addons. Will that negate any potential performance benefits? I’m not a professional coder, so I’m not sure how that works. Does it only impact the client, or do the data calls add to the server load?
It's effectively transferring the work from the server to the client. That said, any performance impact is negligible. While writing LibAchievementsArchive, I had taken some measurements to see how long it took to fully back up a character's achievement data...
The entire process of reading, processing, and encoding all of the data for all 3219 achievements for a character (which includes associated progress data; e.g., "Humanoid Slayer" is a single achievement with three separate requirements of killing 1000 humanoids, 500 goblins, and 100 giants) took something on the order of 30ms (0.03s).
On the server side of things, each achievement costs ZOS just 128 bits (16 bytes): their APIs reveal that they have a 64-bit field into which the various progress data is packed, and another 64-bit field for the timestamp. Multiply that by 3219 achievements (the highest valid achievement ID this patch), and we're looking at around 50KB of achievement data per character.
The impact on the client is trivial, but that also suggests a somewhat limited impact for leaving it on the server.
you are neglecting it's database stuff.
One 4k movie is a lot less of an issue than equivalent byte database table with super small data per entry...
a 10GB database with 300M 32byte entries will behave quite different than a 10GB one with 300k 32kbyte entries.
and you forgot to count charid plus achieveid in your space sumup.
We don't know how things work exactly on the backend, but there's no evidence to suggest that all of the characters' achievements in the game are just dumped into a flat database.
Yes, but could fixing that be done within the time constraints they seem to be operating under?And if they did drop the ball, then fixing that would yield far more dividends than whatever they're doing in this patch.
Agreed. The client is interacting with a cache.Accessing achievement information does not incur any server hits (it would simply be impossible for me to query all 3219 achievements in a fraction of my ping time if any part of that required a server hit), which means that all of the achievement data is transferred to the client when the character is loaded
Not sure I follow. How is the fact that there is a cache indicative in any way of the backing database architecture?all achievement queries happen locally on the client. Which would suggest that achievements are stored as a blob and not individual database entries.
They never promised any performance benefits to the player. They threw in some theoretical "may" verbiage about load screens and database-heavy operations, but almost as a side-effect, not their motivation for the change. They called out that the "most important" bit was preserving their ability to add "more content and achievements in the future".I have been skeptical--and remain so--of any purported performance benefits of AwA. After all, if there really was a significant gain, wouldn't ZOS have stated that from the get-go instead of pulling the performance card late in the game only in the face of controversy?
DarcyMardin wrote: »For people who are looking for a reliable way to back up and save for posterity your character-specific data before Monday:
LibAchievementsArchive
@code65536 , thanks so much for making this library. One question -- I have more than one account. Can I use this library to store the achievement data for all my characters across all 4 accounts, or should I somehow separate them? Thanks!
At quick glance into the saved variables file, it saves Server/account/character name, so you can use it for all your accounts on either server.
(But Code can confirm)
After logging through all 18 characters... the stored data (in this addon)
131 KB... I use like 50x that data to stream a single song to my phone over a wireless network
I struggle mightily to understand how this is going to save the game and fix performance issues. But I'm not a database engineer, just somebody who understands numbers and relative size.
silvereyes wrote: »It really isn't. Not for a data-driven software service catering to a theoretical 19 million people (which, let's be honest, most are going to be in cold storage)Just to go into this in further detail, because I also wanted to address this:On the server side of things, each achievement costs ZOS just 128 bits (16 bytes): their APIs reveal that they have a 64-bit field into which the various progress data is packed, and another 64-bit field for the timestamp. Multiply that by 3219 achievements (the highest valid achievement ID this patch), and we're looking at around 50kB of achievement data per character.50kB should be considered a worst-case scenario. If what is being said is an accurate representation of how ZOS is dealing with the data on the server side (and… honestly, who knows)… then this is less than 1MB per account (assuming maximum of 18 characters being 900kB), and if we assume 1MB (rounding up)… now multiply that by all the accounts and work out an average. ZOS's last statement about accounts was somewhere just over 19 million, collectively, if I recall.Thanks for the explanation!
And their servers must be on life support if scavenging just 50kb per character is going to make or break performant-ness!
This is… 19TB (again, rounding up here, 900kB would end up being more around 17TB). That's immense and, quite frankly, nonsensical.aaaaI also find it amusing that instead of data being eliminated, it will simply be transferred to addons. Will that negate any potential performance benefits? I’m not a professional coder, so I’m not sure how that works. Does it only impact the client, or do the data calls add to the server load?
It's effectively transferring the work from the server to the client. That said, any performance impact is negligible. While writing LibAchievementsArchive, I had taken some measurements to see how long it took to fully back up a character's achievement data...
The entire process of reading, processing, and encoding all of the data for all 3219 achievements for a character (which includes associated progress data; e.g., "Humanoid Slayer" is a single achievement with three separate requirements of killing 1000 humanoids, 500 goblins, and 100 giants) took something on the order of 30ms (0.03s).
On the server side of things, each achievement costs ZOS just 128 bits (16 bytes): their APIs reveal that they have a 64-bit field into which the various progress data is packed, and another 64-bit field for the timestamp. Multiply that by 3219 achievements (the highest valid achievement ID this patch), and we're looking at around 50KB of achievement data per character.
The impact on the client is trivial, but that also suggests a somewhat limited impact for leaving it on the server.
you are neglecting it's database stuff.
One 4k movie is a lot less of an issue than equivalent byte database table with super small data per entry...
a 10GB database with 300M 32byte entries will behave quite different than a 10GB one with 300k 32kbyte entries.
and you forgot to count charid plus achieveid in your space sumup.
We don't know how things work exactly on the backend, but there's no evidence to suggest that all of the characters' achievements in the game are just dumped into a flat database.
Perhaps not a flat database, but character loads do seem to take longer on older characters with more achievements (and other progression) than brand new character loads. If both had a fixed width binary object with all the data connected to the main character record, they should theoretically take the same amount of time to load.
Also, remember what they said: "By reducing the amount of data we have to store, the database doesn’t have to work as hard so the time it takes to search...." (emphasis mine).
This means that achievements must be in a separate data store that, at the very least, has to do a lookup. Even if it's just by character id and not achievement id too, switching to a lookup by account id could still cut the index size significantly.Yes, but could fixing that be done within the time constraints they seem to be operating under?And if they did drop the ball, then fixing that would yield far more dividends than whatever they're doing in this patch.Agreed. The client is interacting with a cache.Accessing achievement information does not incur any server hits (it would simply be impossible for me to query all 3219 achievements in a fraction of my ping time if any part of that required a server hit), which means that all of the achievement data is transferred to the client when the character is loadedNot sure I follow. How is the fact that there is a cache indicative in any way of the backing database architecture?all achievement queries happen locally on the client. Which would suggest that achievements are stored as a blob and not individual database entries.They never promised any performance benefits to the player. They threw in some theoretical "may" verbiage about load screens and database-heavy operations, but almost as a side-effect, not their motivation for the change. They called out that the "most important" bit was preserving their ability to add "more content and achievements in the future".I have been skeptical--and remain so--of any purported performance benefits of AwA. After all, if there really was a significant gain, wouldn't ZOS have stated that from the get-go instead of pulling the performance card late in the game only in the face of controversy?
I'm not going to white-night their solution, but there are a lot of factors that go into such decisions, and we are missing most of that information. Without all the facts, it's really hard to say that this wasn't the best of many bad options. I reserve judgement on the technical side of things, even if I can think of many ways to address the technical side differently.DarcyMardin wrote: »For people who are looking for a reliable way to back up and save for posterity your character-specific data before Monday:
LibAchievementsArchive
@code65536 , thanks so much for making this library. One question -- I have more than one account. Can I use this library to store the achievement data for all my characters across all 4 accounts, or should I somehow separate them? Thanks!
At quick glance into the saved variables file, it saves Server/account/character name, so you can use it for all your accounts on either server.
(But Code can confirm)
After logging through all 18 characters... the stored data (in this addon)
131 KB... I use like 50x that data to stream a single song to my phone over a wireless network
I struggle mightily to understand how this is going to save the game and fix performance issues. But I'm not a database engineer, just somebody who understands numbers and relative size.
Also this is in lua, which is basically plain text. A database can store this in a fraction of the space, with redundancy.silvereyes wrote: »It really isn't. Not for a data-driven software service catering to a theoretical 19 million people (which, let's be honest, most are going to be in cold storage)Just to go into this in further detail, because I also wanted to address this:On the server side of things, each achievement costs ZOS just 128 bits (16 bytes): their APIs reveal that they have a 64-bit field into which the various progress data is packed, and another 64-bit field for the timestamp. Multiply that by 3219 achievements (the highest valid achievement ID this patch), and we're looking at around 50kB of achievement data per character.50kB should be considered a worst-case scenario. If what is being said is an accurate representation of how ZOS is dealing with the data on the server side (and… honestly, who knows)… then this is less than 1MB per account (assuming maximum of 18 characters being 900kB), and if we assume 1MB (rounding up)… now multiply that by all the accounts and work out an average. ZOS's last statement about accounts was somewhere just over 19 million, collectively, if I recall.Thanks for the explanation!
And their servers must be on life support if scavenging just 50kb per character is going to make or break performant-ness!
This is… 19TB (again, rounding up here, 900kB would end up being more around 17TB). That's immense and, quite frankly, nonsensical.aaaaI also find it amusing that instead of data being eliminated, it will simply be transferred to addons. Will that negate any potential performance benefits? I’m not a professional coder, so I’m not sure how that works. Does it only impact the client, or do the data calls add to the server load?
It's effectively transferring the work from the server to the client. That said, any performance impact is negligible. While writing LibAchievementsArchive, I had taken some measurements to see how long it took to fully back up a character's achievement data...
The entire process of reading, processing, and encoding all of the data for all 3219 achievements for a character (which includes associated progress data; e.g., "Humanoid Slayer" is a single achievement with three separate requirements of killing 1000 humanoids, 500 goblins, and 100 giants) took something on the order of 30ms (0.03s).
On the server side of things, each achievement costs ZOS just 128 bits (16 bytes): their APIs reveal that they have a 64-bit field into which the various progress data is packed, and another 64-bit field for the timestamp. Multiply that by 3219 achievements (the highest valid achievement ID this patch), and we're looking at around 50KB of achievement data per character.
The impact on the client is trivial, but that also suggests a somewhat limited impact for leaving it on the server.
you are neglecting it's database stuff.
One 4k movie is a lot less of an issue than equivalent byte database table with super small data per entry...
a 10GB database with 300M 32byte entries will behave quite different than a 10GB one with 300k 32kbyte entries.
and you forgot to count charid plus achieveid in your space sumup.
We don't know how things work exactly on the backend, but there's no evidence to suggest that all of the characters' achievements in the game are just dumped into a flat database.
Perhaps not a flat database, but character loads do seem to take longer on older characters with more achievements (and other progression) than brand new character loads. If both had a fixed width binary object with all the data connected to the main character record, they should theoretically take the same amount of time to load.
Also, remember what they said: "By reducing the amount of data we have to store, the database doesn’t have to work as hard so the time it takes to search...." (emphasis mine).
This means that achievements must be in a separate data store that, at the very least, has to do a lookup. Even if it's just by character id and not achievement id too, switching to a lookup by account id could still cut the index size significantly.Yes, but could fixing that be done within the time constraints they seem to be operating under?And if they did drop the ball, then fixing that would yield far more dividends than whatever they're doing in this patch.Agreed. The client is interacting with a cache.Accessing achievement information does not incur any server hits (it would simply be impossible for me to query all 3219 achievements in a fraction of my ping time if any part of that required a server hit), which means that all of the achievement data is transferred to the client when the character is loadedNot sure I follow. How is the fact that there is a cache indicative in any way of the backing database architecture?all achievement queries happen locally on the client. Which would suggest that achievements are stored as a blob and not individual database entries.They never promised any performance benefits to the player. They threw in some theoretical "may" verbiage about load screens and database-heavy operations, but almost as a side-effect, not their motivation for the change. They called out that the "most important" bit was preserving their ability to add "more content and achievements in the future".I have been skeptical--and remain so--of any purported performance benefits of AwA. After all, if there really was a significant gain, wouldn't ZOS have stated that from the get-go instead of pulling the performance card late in the game only in the face of controversy?
They're probably trying to improve performance impacts for themselves, not for us. Like, for example, players logging in and out of toons for daily writs and random normal dungeons. If this loading is causing a bandwidth issue, I understand what they are trying to do, but it's really a fundamental game design issue that encourages this behavior in first place, and their "solution" is just awful decision making.
silvereyes wrote: »
<snip> Still, the end result on the community is heartbreaking, and it deserves some introspection from ZOS to figure out how they arrived at this point. Even if all their decisions were the best they could have made under the circumstances, perhaps there's something they can do as a company to ensure similar circumstances don't lead to future no-win scenarios like this.
I really wish that there had been someone in power that had insisted that ripping out character progression tracking and journal was a red line not to cross - for the identity of the game if nothing else - and they needed to shift project timelines or content releases or whatever else was needed to regroup and find a different technical solution. If that's the sort of thing that just can't happen for whatever reason, maybe the best question for them to ask at this point is, why not? <snip>
silvereyes wrote: »I'm not going to white-knight the decisions that have been made. I will just say that I don't personally see any reason to second-guessI'm not going to white-night their solution, but there are a lot of factors that go into such decisions, and we are missing most of that information. Without all the facts, it's really hard to say that this wasn't the best of many bad options. I reserve judgement on the technical side of things, even if I can think of many ways to address the technical side differently.DarcyMardin wrote: »For people who are looking for a reliable way to back up and save for posterity your character-specific data before Monday:
LibAchievementsArchive
@code65536 , thanks so much for making this library. One question -- I have more than one account. Can I use this library to store the achievement data for all my characters across all 4 accounts, or should I somehow separate them? Thanks!
At quick glance into the saved variables file, it saves Server/account/character name, so you can use it for all your accounts on either server.
(But Code can confirm)
After logging through all 18 characters... the stored data (in this addon)
131 KB... I use like 50x that data to stream a single song to my phone over a wireless network
I struggle mightily to understand how this is going to save the game and fix performance issues. But I'm not a database engineer, just somebody who understands numbers and relative size.
Also this is in lua, which is basically plain text. A database can store this in a fraction of the space, with redundancy.silvereyes wrote: »It really isn't. Not for a data-driven software service catering to a theoretical 19 million people (which, let's be honest, most are going to be in cold storage)Just to go into this in further detail, because I also wanted to address this:On the server side of things, each achievement costs ZOS just 128 bits (16 bytes): their APIs reveal that they have a 64-bit field into which the various progress data is packed, and another 64-bit field for the timestamp. Multiply that by 3219 achievements (the highest valid achievement ID this patch), and we're looking at around 50kB of achievement data per character.50kB should be considered a worst-case scenario. If what is being said is an accurate representation of how ZOS is dealing with the data on the server side (and… honestly, who knows)… then this is less than 1MB per account (assuming maximum of 18 characters being 900kB), and if we assume 1MB (rounding up)… now multiply that by all the accounts and work out an average. ZOS's last statement about accounts was somewhere just over 19 million, collectively, if I recall.Thanks for the explanation!
And their servers must be on life support if scavenging just 50kb per character is going to make or break performant-ness!
This is… 19TB (again, rounding up here, 900kB would end up being more around 17TB). That's immense and, quite frankly, nonsensical.aaaaI also find it amusing that instead of data being eliminated, it will simply be transferred to addons. Will that negate any potential performance benefits? I’m not a professional coder, so I’m not sure how that works. Does it only impact the client, or do the data calls add to the server load?
It's effectively transferring the work from the server to the client. That said, any performance impact is negligible. While writing LibAchievementsArchive, I had taken some measurements to see how long it took to fully back up a character's achievement data...
The entire process of reading, processing, and encoding all of the data for all 3219 achievements for a character (which includes associated progress data; e.g., "Humanoid Slayer" is a single achievement with three separate requirements of killing 1000 humanoids, 500 goblins, and 100 giants) took something on the order of 30ms (0.03s).
On the server side of things, each achievement costs ZOS just 128 bits (16 bytes): their APIs reveal that they have a 64-bit field into which the various progress data is packed, and another 64-bit field for the timestamp. Multiply that by 3219 achievements (the highest valid achievement ID this patch), and we're looking at around 50KB of achievement data per character.
The impact on the client is trivial, but that also suggests a somewhat limited impact for leaving it on the server.
you are neglecting it's database stuff.
One 4k movie is a lot less of an issue than equivalent byte database table with super small data per entry...
a 10GB database with 300M 32byte entries will behave quite different than a 10GB one with 300k 32kbyte entries.
and you forgot to count charid plus achieveid in your space sumup.
We don't know how things work exactly on the backend, but there's no evidence to suggest that all of the characters' achievements in the game are just dumped into a flat database.
Perhaps not a flat database, but character loads do seem to take longer on older characters with more achievements (and other progression) than brand new character loads. If both had a fixed width binary object with all the data connected to the main character record, they should theoretically take the same amount of time to load.
Also, remember what they said: "By reducing the amount of data we have to store, the database doesn’t have to work as hard so the time it takes to search...." (emphasis mine).
This means that achievements must be in a separate data store that, at the very least, has to do a lookup. Even if it's just by character id and not achievement id too, switching to a lookup by account id could still cut the index size significantly.Yes, but could fixing that be done within the time constraints they seem to be operating under?And if they did drop the ball, then fixing that would yield far more dividends than whatever they're doing in this patch.Agreed. The client is interacting with a cache.Accessing achievement information does not incur any server hits (it would simply be impossible for me to query all 3219 achievements in a fraction of my ping time if any part of that required a server hit), which means that all of the achievement data is transferred to the client when the character is loadedNot sure I follow. How is the fact that there is a cache indicative in any way of the backing database architecture?all achievement queries happen locally on the client. Which would suggest that achievements are stored as a blob and not individual database entries.They never promised any performance benefits to the player. They threw in some theoretical "may" verbiage about load screens and database-heavy operations, but almost as a side-effect, not their motivation for the change. They called out that the "most important" bit was preserving their ability to add "more content and achievements in the future".I have been skeptical--and remain so--of any purported performance benefits of AwA. After all, if there really was a significant gain, wouldn't ZOS have stated that from the get-go instead of pulling the performance card late in the game only in the face of controversy?
They're probably trying to improve performance impacts for themselves, not for us. Like, for example, players logging in and out of toons for daily writs and random normal dungeons. If this loading is causing a bandwidth issue, I understand what they are trying to do, but it's really a fundamental game design issue that encourages this behavior in first place, and their "solution" is just awful decision making.
Still, the end result on the community is heartbreaking, and it deserves some introspection from ZOS to figure out how they arrived at this point. Even if all their decisions were the best they could have made under the circumstances, perhaps there's something they can do as a company to ensure similar circumstances don't lead to future no-win scenarios like this.
I really wish that there had been someone in power that had insisted that ripping out character progression tracking and journal was a red line not to cross - for the identity of the game if nothing else - and they needed to shift project timelines or content releases or whatever else was needed to regroup and find a different technical solution. If that's the sort of thing that just can't happen for whatever reason, maybe the best question for them to ask at this point is, why not?
I don't have an EU account, so I'm wondering if any EU folks have checked to see what effect the two day PTS maintenance has on account wide achievements? Did they roll it back, fix the bugged quests, fix the map autocompletion issues, etc?