TLDR, see update/conclusion
the grid values are not drawn on role ratings, but rather skill ratings
the grid values are drawn based on the adjusted role ratings. by adjusted i mean after they've been compared to all other unit's values.
mini-update:
you know what, I'm confusing gridview role rating values with gridview labor drawn values as well. What i'm referencing is what is drawn when seeing a labor and how it fits into the optimization plan. However, the way squares are drawn for role ratings also still ARE NOT COMPARABLE with each other, and this discussion addresses that (at least for purposes of the labor optimizer).
could you explain like I'm five? I don't know what you mean by "they've been compared to all other unit's values"? Am I wrong is believing it's based on a skill only role? I.e. a role that matches a skill to a specific labor (ex... for the carpenter labor, the value drawn in the grid, is based on a role that contains only the carpentry skill?). If this is not the case, I don't understand what other values within the unit the square drawn would be based on. What are these "other [unit's] values"?
I also think these values should be available to use with scripts.
this already exists to some extent. when you call d.get_role_rating the second argument is a boolean flag that indicates whether or not you want the raw role rating, or the adjusted value.
oh that's nice. That means if I wanted, I could script some of this stuff together (maybe) using the script editor. However, I would have to have a way to allow the grid view to draw just a value that is outputted by the script, and not necessarily ran through a CDF. However, another issue would be the inability to run a CDF over just a specific subset of data (i.e. say I wanted to CDF run through just 3-5 roles values), instead i'd have to calculate all involved roles each time for a specific role's script I wanted outputted if I did it a script route.
because the grid currently draws 0-100 values, drawing the raw role ratings isn't very helpful. it's basically a sea of red because the role ratings are compared to the potential maximum values in everything, so nearly every role rating has a very low rating.
I agree, I believe you. I have seen the raw role ratings drawn. I've tested it. It's because dwarf's couldn't ever really reach 100%.
My proposal instead, to avoid (long calculations of all values displayed), as well as to avoid MOSTLY RED VALUES; is two fold:
Is to allow for just specific roles to be added to the grid view that are flagged for calculation with method A. Say I have 4 roles only listed in a grid view, Carpenter, Mason, Farming, and Fishing; these 4 have a special flag set on them to make them pool their raw role rating values into one list, the primary key being their raw role rating value. Say you have 10 dwarf's. That's 10 dwarf's x 4 role's worth of values, for a list that has 40 entries. These 40 entries are the values that are ran through a CDF, one sdev for 40 entries.
This would give you a range from 0 to 100. The sort/order operations would still be the same for each column.
That's the beauty of it. This way not a lot of values are calculated, and only a specific set of columns in a grid view would have this applied. That way I could use a spacer in a grid view to section of say a "Labor Optimization Order" section of a grid view, and include just the role's in my labor optimizer.
this would allow for a much cleaner "range" of values (the 100% would be the highest raw value of the 40 values [in the example I just provided of 4 roles x 10 dwarfs], and a player can control it. This means it will not include every role rating in it's CDF calculation (which would be dumb, because role's that are never even used would have an affect on the grid view's drawn with my proposed methods), but only those the player has marked. It also means it would scale some values at 100% and some at 0%. Instead of using red to black values, one could use a increasing black square, or just leave the drawing method as is (in relation to this method).
A. this can be done, the biggest issue is that the role ratings become much more polarized. almost no units end up in the 'middle ground' where nothing is drawn for the rating. they're either very well suited for the role, or very badly suited.
In your provided picture, I see a lot of units that have no squares drawn. To me, that would tell me that they are in the median range of all the role ratings for these roles. However, given no context (such as say 30 roles in a labor optimization plan), I wouldn't really care to see a specific role compared to every other role, but only those that I'm visually looking at (i.e. such as in a gridview together).
Which picture are you referencing to A? Not default (i.e. 1st pic), but the 2nd pic right? I think I see what your saying. I like that you took the effort to draw it out.
I can see why using it as a default view would be dumb, but I think it would be useful in planning out an optimization plan. Look at Spinner. Say if that were an important role to me, such as Mining is, and I noticed it was all red. I would compare that to say... Hive Keeper, which I didn't think was an important role (I think providing averages at the top of a role using this drawing method should be displayed, because that would truly help me in setting priorities). I could set a very high priority for Spinner, and a very low priority for Hive Keeper, if I saw the averages listed at the top, I could "target a new average" % that I would hope to draw (hence, why drawing optimization plan values would be useful as well, OR AT LEAST OPTIMIZATION VALUES ran through a CDF. That way I could see a range from 0 to 100%, and I could see the order of how everyone would be "optimized".
B. this would probably be better for the drawing, as you'd get the middle range back, but again, you're not going to have the transparency as to what the raw role ratings are in the optimizer. the downside is that there will be a bit of a performance hit to calculate all ratings a second time.
[/url]
**as you can see in the linked images, the sorting for the global vs global adjusted remains the same, it's more to have clearer drawings.
Yes, you wouldn't get the transparency of using raw values.
I think the middle range would be found if only applying the scale to a small number of roles, that a user could define.
However, you are right about the transparency, so... Since raw values are so ugly...
I propose maybe a "hover your cursor over said grid square", and see the raw role rating and/or labor optimization output value (i.e. raw * priority). That way a player can see the highest raw/opt value for a given square (say if sorting), and lowest raw/opt value for a given column, maybe even the average raw listed above the top of the column. That way a player can compare roles to each other that way.
C. this is much more difficult to do, because every role for every dwarf has to be recalculated every time you change optimization plans.
First, my note on what roles would be calculated would be set by a player (essentially I propose having this as a gridview flag, that way it's not redrawn based on optimization plan, but instead a player would have to build a grid view, based on an optimization plan.
Or maybe better yet, the grid view would be drawn based on the selected optimization plan selected. This idea has a lot of potential. If one wants the transparency of the optimization plan, I would propose instead of Option A, a CDF of global raw values (i.e. all roles on a screen), do a CDF of all global optimization values. That way a player can set all priorities to the same value, and see how the order is preserved when running the optimization plan.).
However...
In direct reference to Option C.
Option C wasn't as important, as this is just a way to draw it as I currently understand the way roles are calculated (i.e. most comparable to the way the gridviews are currently drawn), but if one wanted to get a view of how they are currently drawn, given a gridview that is specially flagged to draw them as Option A. I would think allowing for this Option C (i.e. global redrawn local, or as you listed, pic 3) to draw the grid view would make logical sense, as it would use the values that Option A outputted, so if a switch were needed to do a per role CDF vs a global, I would think it would allow for
quicker calculation using Option A's outputted values (to address your calculation concerns). As you have pointed out, the sorting is the same (per role, i.e. column) as Option A.
I compared it with the default way it's drawn (i.e. last pic and first pic), Dostust for Mining is the only one in the 1st pic that has a diamond (i.e. best fit for position). On the way it's drawn in the 3rd pic, he has a diamond as well, but so do a lot of other people. Which I found to be weird.
NOTE: I LOVE THESE PICS, BUT THE ORDER isn't the same between them. If you could output something similar, but each pic sorted by Mining, the order would be the same across all pics, and would give a better comparison of how the values are drawn different between them.
for the optimization plan it might be possible to add another column to show something that could give you an idea of the prioritized ratings.
for example showing a column that has the average role rating * priority for the role selected. it wouldn't be precise, but it would give you something of an idea of what the priority would look like.
another thing that could be done with all these different role ratings would be to add a right click sort menu to role columns to choose to sort by the raw value or whatever, although i'm not sure how different the ordering would be.
oh man, you are a genius.
say average raw rating (per role basis) listed above the role in the gridview? Or maybe even in the optimization plan itself, a list of the average raw role rating for a role. That would help a lot, and would save a lot of time. It wouldn't be as nice or extensive as a grid view layout, with the average role rating listed at the top of an Option A drawn grid view, but it would allow for proper targetting of priorities in a labor optimization plan.
I don't think the ordering would be different.
Update/Conclusion:I think at the very least. If I hovered my mouse cursor over a dwarf, I should be able to see a raw role rating value and/or labor optimization value. Also,
Average raw * priority value for a role could be listed at the top of the column and/or next to each labor in the optimization plan as well would be nice. That at the very least, would give me an idea of how roles compare to each other for purposes of setting priorities.
More extensive approach:
I think a better idea would be to allow for specific roles to be flagged in a grid view (or a gridview is drawn based on a selected optimization plan), and those values are all compared to each other based on raw rating * priority, and then ran through a CDF function. I.e. 4 roles x 10 dwarf's = 40 values with 1 SDEV.
If he wanted, he could set all priorities to the same value to get an idea of how the raw role ratings would look if ran through a CDF. This way a player can see how his values in the labor optimization plan affect the ordering of the labor optimizer.
There is a limitation with setting up a grid view that had flags for roles that were all to be fed through a CDF vs using a labor optimization plan to draw a grid view. That is with when I want to show two roles compared to each other, but necessarily for an optimization plan (therefore no need to link to one).
Say, I could have a military gridview and specify a melee and a ranged dwarf role that would be specifically ran through a CDF and would only compare those two roles with each other. Again, this would be the raw role rating of a role. However, if linked with an optimization plan, it would be nice to allow for the raw rating to be multiplied by a priority (if so desired); however, it would have to be linked to a optimization plan.
Added option:
The ability to sort the gridview columns horizontally by the average (raw * priority) of each role. (i.e. shuffle the columns around so the highest average is listed on the left, and the lowest average is listed on the right. Gives a player a sense of what values are going to be filled/picked 1st when an optimization plan is applied).
Note:
If the grid view is going to be drawn based on the optimization plan selected, I would recommend including the value of the roles that are listed as "None (Use Labor's Skill)"