PyvesB / advanced-achievements

:fireworks: Popular plugin that adds unique and challenging achievements to Minecraft servers.
https://www.spigotmc.org/resources/83466
GNU General Public License v3.0
199 stars 215 forks source link

[3.0] Main GUI #71

Closed Platinteufel closed 7 years ago

Platinteufel commented 8 years ago

As you already know I'm missing the achievement information in the main gui since 3.0. I have to admit that it is clearer this way, but I've thought about a compromise. ;-)

Here's my category Items broken.

aach 1

If you click on it, you can see that there are 4 values/achievements to reach (in my case 1, 10, 100 and 1000).

aach 3

And now the tradeoff. I think it's still a compact main gui if there will be shown how many achievements you can reach in this category and how many you've recieved yet. I thought about sth. like this:

aach 2

Based on the symbol you can see at the first view if you completed this category or if sth. missing here.

I would really welcome this change, but ofc it's your decision whether you will implement it.

Cheers ;-)

PyvesB commented 8 years ago

Hello,

I do like the idea, but this would be heavy on the database. As I might have already mentioned, one of the objectives of rebuilding the /aach list command was to make it lighter. I you assume that the achievements are more or less uniformly distributed among the 36 categories, each time the player accesses a category, the workload is 36 times lighter than with the old /aach list. If I were to indicate the amount of received achievements in the main GUI, I would have to query for all the achievements again, which would be much heavier.

What I do now is go through the config and check for each achievement in the database. An alternative approach would consist in doing a big database query when /aach list is typed, cache the result, and use it in the main GUI as well as the different categories. I would go through the config as before, but parse and search through the data I cached. Nevertheless, this would be more complicated to design and would bring heavier in-memory operations.

As a starting point, maybe I can just display the number of achievements in each category without any statistics specific to the player. For instance in "Items zerstört", just say "4 achievements in total". This would be simple and would not (or barely) impact performance. :-)

Cheers,

Pyves

Platinteufel commented 8 years ago

And commands like /aach top or /aach stats are not that heavy? They also need to go through database, don't they? That doesn't make sense for me. ^^ I haven't noticed any performance problems in 2.5 with the old /aach list. And if it would be configurable users with long achievement lists could disable it for better performance. But well, you know best what can be achieved. ^^

Well, something like "4 achievements in total" and "Click me for more information" would be better than nothing, also if it's not that comfortable like the achievement progress per category. As i said in another issue it was awesome to have an overview about your achievements in only one GUI. :/

PyvesB commented 8 years ago

The advantage of /aach top and /aach stats is that I issue a single SQL request to the database, and I can directly display it without doing any post-processing. ;-)

Platinteufel commented 8 years ago

Okay, thank you for the explanation. :) It's your decision, but at least an information about the total achievements per category would be awesome! ;-)

Platinteufel commented 8 years ago

Any update here? :P

PyvesB commented 8 years ago

Currently on standby, I have a lot of work at the moment and am only focusing on critical fixes. ;-)

PyvesB commented 3 years ago

The database statistics are now cached, so I'll soon be adding the number of achievements received in addition to the total. 😉