
Draco18s |
4 people marked this as a favorite. |

I had quite a lot of time waiting on things to compile yesterday and built a tool to compare the probability of success and failure across classes and levels in PF2.
I'm nowhere near done, but if folks wanted to assist in data entry, that would be very helpful. If not, I'll get through it eventually; its a lot of looking at a monster entry in the bestiary, comparing to the monster design guidelines, finding the closest value (extreme, high, low, etc) and plugging them into a serialized Unity asset. Tedius, but I left details on the git readme.
>The Tool<
Can currently compare a first level fighter and first level wizard against level 0, level 1, and level 2 creatures (at least...against three of each that I tried to select for variability). Encounter difficulties (trivial, moderate, etc) also work, but are going to be largely identical (as they're a 4-level range bracket group and there's not a lot to pull from). "Unknown" is an even broader bracket (as in "Ah ha! A fight! I have no idea how difficult this will be"). Below those are "level -2" through "level +2." A grey bar indicates that the statistic was not tested (this is mainly true for the level 2 creatures, none of the ones I added data for had an ability that caused a saving throw). And it'll probably error out if there's literally zero monsters/hazards to compare with (because checking for divide-by-zero was not a priority).
Other comments are also appreciated. There's still several things I know I haven't accounted for (item bonuses are TODO), or additional informational display features I have that I haven't built yet, but I literally built it in one day in the free minutes between actual work. I plan on continuing to improve it over the rest of the week.

Draco18s |

Work in progress of course, I'm wondering about the variables at play here, but I like the visualization style you've chosen for this. At a glance, you can see how strong Fighter is at First Attack vs. anything on the wizard.
Yeah, definitely came from a laying-in-bed moment that turned out quite well.
Did find an issue with the wizard incorrectly using STR for spell DCs and resolved the div-by-zero problem. Also added some more monsters (couple of level 2s and a few level 3s, so now the Level+2 bracket will work).
I'm wondering about the variables at play here
Fortunately (unfortunately?) a whole lot of the math is baked into the character progression. Stuff that "just happens." And while, sure you could build a wizard with 18 int at level 1 and then never boost it (resulting in ~2 points lower DCs at level 2), I'm more interested in the "expected" build path and trying to isolate a universal expected-odds value. Its never going to be "oh, everything's a coinflip" of course, but being able to identify trends is still useful.
Even if I don't actually know what those trends are yet. Especially because I don't know what those trends are.

Plane |

I'm not seeing the expanded levels yet. Are they "compiling?"
Good game design requires a firm understanding of the statistical spread of results. I've always wondered if Paizo had a statistician/programmer on hand with a professional calc program to show them the results of their decisions on how the game would actually play.
What do you think? Anyone from Paizo want to spill the beans?

Draco18s |

I'm not seeing the expanded levels yet. Are they "compiling?"
They're in the dropdown menu, towards the bottom. And it was more that there was no data for them than them not being there. I haven't added explicit level options ("Level 3"), just relative (but "Fighter 1 @ Difficulty Lv+2" is equivalent to "Level 3"). Sorry if my earlier post was confusing.
Good game design requires a firm understanding of the statistical spread of results. I've always wondered if Paizo had a statistician/programmer on hand with a professional calc program to show them the results of their decisions on how the game would actually play.
You aren't wrong, and they probably did. We as players don't have access to that data and its associated analysis. But the fact that people have been talking about "falling behind" on the treadmill is not something I can demonstrate being true without having data to back it up. Hence, this tool.

Unicore |

Paizo has very good mathematicians on staff and has been pretty transparent through the play test process of explaining their thought process.
The biggest change/trick to the math was boosting proficiency bonuses to +2 and scaling back item bonuses from 5 to 3. That is mostly what made every class have to have all their starting proficiencies boost at least to expert (even if they were supposed to be bad ones) and what made Legendary proficiency outside of class specialization out of the question for archetypes and Multi-class.

Draco18s |

Paizo has very good mathematicians on staff and has been pretty transparent through the play test process of explaining their thought process.
Oh I know.
I've seen most of their explanations and I'm aware of the TEML and max-magic-plus values changing.But what I don't have is an intuitive understanding of how things progress for different classes, or how things shift between classes.
I can tell you from play that it feels like every combat starts with the first enemy landing a crit on the barbarian before the barbarian even gets to act, followed by the party "swing-and-a-miss"ing.
But I can't say for sure how much of that is from luck. Sure, some of it is (my character died in the final boss fight of Plaguestone because I took a crit acid flask to the face and decided that jumping in the river was probably safer--despite my lack of athletics--and then out of 8 rolls, only one was above a ten on the d20).
The reason I figured it was safer was because I was taking 4d6 persistent and had 24 hp. There was a very real chance that (1) I'd drop to zero before it wore off and not even a hero point would save me. (2) no one had any healing left, or at least, very little. (3) I wasn't the only one suffering (after I jumped in, two other players joined me)
Then this happened:
Draco18s M. rolls a 4 for I'm Atheletable!
Draco18s M. rolls a 2 for Athletics? Althetics!
Draco18s M. rolls a 12 for Some more Althetics!
Draco18s M. rolls a 7 for Swimming? What's that!
GM: Even with the rope that's not enough to avoid being washed down river.
Then the next round:
Draco18s M. rolls a 2 for Athelletheletics?!
Draco18s M. rolls a 3 for Letics!
Draco18s M. rolls a 2 for Just keep swimming just keep swimming!
Draco18s M. rolls a 8 for And this is how you do it!
Even spent a hero point for another roll, but I don't have the result as accessible as those eight, but it was like a 7.
On my phone so I can't see this now, does it have things different to this tool ?
Displays the data differently.
And I can't get that tool to work, haven't been able to for months. It just sits there in "compiling" mode with no log output.
Draco18s |

Pushed an update. AAAA so much data.
I've rearranged the UI to make selecting classes and levels more better (as having every level of every class in one giant list would be a right pain).
But the main thing is that there's now monster and hazard data all the way up to 21 (every trap in the book, plus 3-6 monsters per level up to 15th, then 1 just to have data up to 21st).
I plan on filling in the rest of the monster data tomorow. But I've noticed a few patterns:
1) Monsters are near universally all stated out with High AC, High attacks, and never more than one saving throw below Moderate (and almost always with one above).
2) Yes, that means even enemy spell casters
3) The sorcerer got shafted, never getting a saving throw proficiency of Master (all but 3 classes have one by 10th).
4) Hazard stealth DCs are garbage above 7th level. Pharaoh's Ward has a stealth bonus of MODERATE, every hazard above that has TERRIBLE (where TERRIBLE is as much worse than LOW as LOW is from MODERATE).
5) A handful of monsters have stats that are even more extreme than that (I had to create a category above Extreme to cover things like the faerie dragon and air mephit, as well as two categories below Low)
6) At high level play, you're going to get hit more and more. The only class that "holds steady" is the Champion. Wizards (and other clothies) expect to be crit on a 15 at 15th.

Draco18s |
3 people marked this as a favorite. |

Oops, AC values for level 20 creatures is currently bad.
Fix will have to wait on the completion of an in progress feature that I'm working on (I have it working for one stat, just need to get the code over to the other stats, hopefully without having to copy-paste 5 identical lines into 30 places, but that requires some refactoring work first).
Good news is that the refactoring work I already did will make the UI even more better.

Draco18s |

Nice tool! Though there's a lot of empty space.
Making "the best" UI isn't really what I'm good at. I'm a lot more functional than form. I can find problems with an existing UI but might not know the best way to fix it.
And in some cases things end up in a weird hybrid for a while. Eg. empty space that isn't currently used, but which might find use with new controls (for example, the windows don't need to be larger to fill in the gaps, but there isn't enough free room to squish them down and fit more windows and it would be easier to expand them if a new widget is needed than to recoup the space later).
Changing the difficulty dropdown while the other stuff is already set won't reload the data, should check into that.
Half-intentional. As-is you can compare across difficulties. I certainly did think about changing it, but left it alone for now. Its not great, but it works, and uniformly enforcing the opposite leaves it less functional.
Either way, its a known issue I'm mulling over in terms of presenting more fluid controls.

AnimatedPaper |
1 person marked this as a favorite. |

ChibiNyan wrote:Nice tool! Though there's a lot of empty space.Making "the best" UI isn't really what I'm good at. I'm a lot more functional than form. I can find problems with an existing UI but might not know the best way to fix it.
My graphic designer friend of mine faked fainting spells when he saw what my excel tools looked like, so I feel your pain here.
“So many colors” he’d weep.

Temperans |
Okay GUI wise, you need the information to be more clear. The marker for "always a success" is a good start. Something that shouldn't be too hard to add is labeling nat 1, 10, and 20 so that the "always a success" marker has a point of reference.
Giving a style option so that you can have the color wheel you have, the raw numbers, and 1 set for color blind people. Alt, give the option to pick the failure and success colors. That way you don't have to deal with color blindness.
For changing difficulties, you can make a button to refresh all data (with a hover label so people know what its for). This way you are able to keep the current functionality while still making it easier to use. It will also help with the spacing.
1 final potential feature for easier data visualization is to have a section that when you click on a stat of an entry, it shows the value for every entry in relation to that entry. Ex: When you click on AC of entry 1, it shows whether the other entries are higher or lower and by how much.
Bug wise entries 2-4 have the level dropdown repeat. It goes 1 to 20 twice.

Draco18s |

Okay GUI wise, you need the information to be more clear. The marker for "always a success" is a good start. Something that shouldn't be too hard to add is labeling nat 1, 10, and 20 so that the "always a success" marker has a point of reference.
Yep, a "nat-10" notch of some sort has been on my mind.
nat-1 and nat-20 are just the far ends. 1 is always on the left.Giving a style option so that you can have the color wheel you have, the raw numbers, and 1 set for color blind people. Alt, give the option to pick the failure and success colors. That way you don't have to deal with color blindness.
Yep, known thing. Just haven't gotten to it yet. The gradient is an asset (and I've fiddled with the exact values a few times) so swapping it at runtime is totally doable. The legend in the top right was problematic and currently static (it worked in the editor, but when I built it for the web the first time it showed up as all-white).
For changing difficulties, you can make a button to refresh all data (with a hover label so people know what its for). This way you are able to keep the current functionality while still making it easier to use. It will also help with the spacing.
Button or checkbox yeah.
1 final potential feature for easier data visualization is to have a section that when you click on a stat of an entry, it shows the value for every entry in relation to that entry. Ex: When you click on AC of entry 1, it shows whether the other entries are higher or lower and by how much.
You mean, comparing the clicked slice (e.g. AC @1) with the other stats (e.g. Fort @1) or with the rest of that stat (e.g. AC @2)?
Could certainly add something like that, I'd had thoughts about a detailed breakdown, but wasn't quite sure what information would be useful to see.
Bug wise entries 2-4 have the level dropdown repeat. It goes 1 to 20 twice.
Yeah, I saw that, forgot to look into it at the time. Not sure what's up (all four use the same code; literally the same class) but on my radar. It wasn't detrimental so it wasn't addressed immediately.

Draco18s |

Filled out the monster roster. There is now 3 or more monsters of every level. Plus the sole level 25 creature (there's nothing between 21 and 25), even though I don't think its data will ever get used.
The grim reaper and lesser deaths have a aura of misfortune, which I programmed in, then gave them both a relative weight of 1/3rd, as they have a propensity of turning crit-successes into failures (and with only 3 level 21 creatures available, it was skewing the results pretty harshly). The aura is also only 20 feet, so any class that indicates it attacks with DEX (a solid indicator of ranged weapons) or a mental stat (primary spellcaster) ignores the misfortune effect.
I also completely retooled class attribute allocations to use the boost system, which will cause some 1 or 2 point shifts in a few areas, but the old system was knowingly abstract, but the boost system can be very precise.
There was also a bug in calculating skill proficiency; it was only incrementing by 1 for each TEML rank instead of the intended 2.

Draco18s |

Since the Bestiary 2 is coming out this month, if you intend to add data from that, it may be worth putting in a way to swap between it and the previous monster stat blocks. Mainly to see if paizo started to follow their own math from the GMG on monster creation.
Noted. I should be able to do that fairly easily, but won't worry about it until I have the book.

Draco18s |

Fleshed out the classes so that all levels up to 20 are now there.
Now that that's there I added a feature I'd been thinking about that cycles through levels over time. The guaranteed success mark bounces around a lot (likely due to some creature levels that lack Low stats), but there's less jiggle in the color spectrum. (Ranger's a bit intensive to calculate, so it'll lag very slightly; its the added skill check for Monster Hunter).
Added the "update difficulty" button as requested.