Pathfinder: Kingmaker

Pathfinder: Kingmaker

Vis statistikk:
MaddMann 4. juli 2020 kl. 18.33
The RNG makes no sense
I exported the last 600 rolls for player controlled characters. Here are the percentages... RNG is broken.
1=9%
2=5%
3=6%
4=5%
5=5%
6=8%
7=6%
8=6%
9=6%
10=5%
11=4%
12=8%
13=6%
14=4%
15=4%
16=6%
17=4%
18=1%
19=1%
20=1%

I thought this was supposed to be an RPG, not a slot machine.
< >
Viser 1630 av 128 kommentarer
thorsson64 5. juli 2020 kl. 11.32 
This is a d20 ruleset, so yes, all numbers 1-20 should have equal probability (e.g. to hit). They don't. Things like damage are different.
Sist redigert av thorsson64; 5. juli 2020 kl. 11.32
Dixon Sider 5. juli 2020 kl. 11.32 
Opprinnelig skrevet av Gorwe:
Opprinnelig skrevet av Dixon Sider:
are you talking about 1 dice or multiple die? Because if you are talking about only 1 then all numbers should have the exact same probability if you are going for realism.

Yes, yes, yes. You are right. Every side of a die should be of equal weight otherwise it's a...LOADED die!

What I was referring to was that the numbers 7-13 are the "core" of a 20 digit system(where 10 is the literal median / core). This don't have to mean anything.
I know if you are rolling like 2D10, the number will be like 7-13 50% of the time or something like that.
Dixon Sider 5. juli 2020 kl. 11.33 
Opprinnelig skrevet av Gorwe:
Edit: Doesn't change the fact that the rng system is...wonky.
I think the dice bias is tied to a difficulty setting. We might be able to test it if Maddman uploads his script.
Martialis 5. juli 2020 kl. 12.53 
600 isn't really a big sample size when you are talking about a d20. Talk to me when it is 6000 or sixty thousand, or six million.
Dixon Sider 5. juli 2020 kl. 12.55 
Opprinnelig skrevet av Martialis:
600 isn't really a big sample size when you are talking about a d20. Talk to me when it is 6000 or sixty thousand, or six million.
It could be true still. Open sourcing the script could help us figure out exactly how it works in game. I am curious.
Sist redigert av Dixon Sider; 5. juli 2020 kl. 12.55
InEffect 5. juli 2020 kl. 12.59 
equal chance != equal outcome. It will average out more the more you roll. 600 rolls is pretty low to determine any pattern. You can just throw dice yourself and you won't get anywhere near even pattern on 600 rolls. What you seem to want is autocorrecting system that compensates for bad luck with fudging rolls like new xcoms do, for example. It's not the case with PK. And besides the rolls don't matter in PK. They only affect how long the fight might be since RNG is not a part of the game past level 4 and even that is true only for unfair.
Sist redigert av InEffect; 5. juli 2020 kl. 13.04
Tuidjy 5. juli 2020 kl. 13.06 
If the data is correct, thought I will not believe it until I see the script and run it myself, the game's RNG is completely busted. These three 1% in 18, 19, and 20 are extremely unlikely even with just 600 trials. How unlikely? About 1 in 10,000.

But I am a programmer, and I gave up on writing something that logs actual rolls in Kingmaker. The game makes it too hard. I did write a logger that only counts failures/successes against known challenges, and it performed as expected. (It was much easier to write than the claimed general logger, due to how you would have to drill into all sort of different rolls, and have specific patterns for each kind of roll - skill check, attack roll, DC, yada, yada. I'm not saying that it is impossible, I did something much harder for Drox operative, I'm just saying that it is a lot of work.)

So, basely, there are two possibilities for me. The OP lies, or the RNG is busted.

I'm not going to swing either way, until I can run his program for myself.

----------------

This said, if the RGN is broken, it is a complete shame. You can easily mess up an RNG, but you have to be either doing it deliberately, or be completely ignorant. I've found three games which had busted RNGs, and here is how that had happened:
- one was using the mouse inputs to 'randomize'.
- one was displaying the wrong estimates, because it was using an offset normal distribution, but showing the estimates as if the results were evenly distributed.
- one was constantly resetting the seed.
Sist redigert av Tuidjy; 5. juli 2020 kl. 13.16
king_of_jamaica 5. juli 2020 kl. 13.11 
While I wouldn't doubt that the RNG is completely busted, as RNG in games seems to almost always be weighted and not truly random, 600 rolls isn't enough to test the validity of the system.
thorsson64 5. juli 2020 kl. 16.03 
Opprinnelig skrevet av king_of_jamaica:
While I wouldn't doubt that the RNG is completely busted, as RNG in games seems to almost always be weighted and not truly random, 600 rolls isn't enough to test the validity of the system.

This is just plain wrong. 600 rolls might be enough, or it might not. If you rolled 600 1s then it would clearly be enough to show it was broken with a very high degree of confidence. The question here is what level of confidence is there that it's broken?
Dixon Sider 5. juli 2020 kl. 16.10 
The more the better. 600 should be enough for a big picture. I am with Tuidjy. Wait until the OP posts the script so we can get more precise experiments, and more data.
MaddMann 5. juli 2020 kl. 16.53 
Not going to bother uploading it. Believe or not, your choice, doesn't bother me either way. Right now I have it running in a container, so compressing it to work in an easy to use method would require me to make an app, which I am not going to do. In order to use my script in it's current state you need to be at least somewhat experienced with C#, Cheat Engine (which in it of itself is a pain because almost every anti-virus app in existence will flag it as a virus due to code injection), and visual studio. (If any of you are skilled programmers, that alone should be enough to say F that, the work has already been done) If you are skilled with C#, visual studio, and cheat engine I gave all the items in the description of how I made it. You have to manually set up which key words for it to parse, which values to parse, and where to dump values.

If I get super board, I will dump my scripts on github, but again, as I am running on a linux OS, you will have to completely re-tweak it in order to use on your local system. Not worth my time to compile and upload.
Dixon Sider 5. juli 2020 kl. 16.54 
Opprinnelig skrevet av MaddMann:
Not going to bother uploading it.
It could help people to make some pretty cool mods. I always wanted to make a parser for this game so I could monitor DPS. You should open source it.
Sist redigert av Dixon Sider; 5. juli 2020 kl. 16.55
MaddMann 5. juli 2020 kl. 16.57 
Also to note, I still play the game. I did all this as a bit of an experiment, because I am a big tabletop gaming nerd and was rather appalled by just how often I failed things like lock picking or somehow missing more then 4 times in a row at level 15 with weapon specializations. I wanted to try and compare it to real world rolls. (This covid-19 boredom is really getting to me) I had no intention of this becoming such a popular subject. What I can tell, is that I am not the only one who noticed it based on how many people are replying here. That alone without hard data like I have gathered should be enough to realize, something is wrong.
Dixon Sider 5. juli 2020 kl. 17.04 
Opprinnelig skrevet av MaddMann:
Also to note, I still play the game. I did all this as a bit of an experiment, because I am a big tabletop gaming nerd and was rather appalled by just how often I failed things like lock picking or somehow missing more then 4 times in a row at level 15 with weapon specializations. I wanted to try and compare it to real world rolls. (This covid-19 boredom is really getting to me) I had no intention of this becoming such a popular subject. What I can tell, is that I am not the only one who noticed it based on how many people are replying here. That alone without hard data like I have gathered should be enough to realize, something is wrong.
I have tested it quite a few times before and found myself getting 20's about 5% of the time on unfair. Dont know how many times I tested it, but it certainly seemed far away from 1%. We could also figure out if it was difficulty related or not. Allowing other people to use this script you wrote would help a lot. I know getting access to the embedded values like hit roll would have been quite the headache. You have a pretty incredible thing done that could be the groundwork for some pretty spectacular mods.
Sist redigert av Dixon Sider; 5. juli 2020 kl. 17.07
Tuidjy 5. juli 2020 kl. 20.01 
I have tested it on Challenging and Unfair, and I was testing only successes and failures. Every time, out of 4 tests, with about 100 trials each, the failures and tests matched the expectations reasonably well, never being off by more than 5-7%.

In comparison, what MaddMann claims is so unlikely after 600 tires that there about a 1 in 10000 chances he is saying the truth AND the random number generator is working correctly.

I do not want you to present me with a self-installing package. Just show us the code that drills down to the actual rolls, as opposed to skimming the log that gets displayed on the screen, which is all my code did. Just embed the data structure you NEED in order to differentiate between the different in-game events that result in a dice rolls.

Something like the one below, which was needed for implementing a MUCH simpler data mining utility, for a game that does not come anywhere close in complexity to a full Pathfinder implementation. Note that it is just one data structure for one part of the first stage - the part where the program determines HOW it will be drilling down into the log entry to get the relevant actors and parameters, and the whole thing below is just about entries concerning race events (there were also events concerning single planets, ships, crew members, etc.)

So, code or get the fиск out!

Code that show us how you drill into the rolls, which are usually not displayed in the log.

#define RACE_ACTION_CLUES { {L" Bounty Hunter has been destroyed.", EVENT_HITMAN_DIED},\ {L" Lord added to shipyard", EVENT_IRRELEVANT},\ {L" achievement unlocked!", EVENT_IRRELEVANT},\ {L" added to shipyard", EVENT_IRRELEVANT},\ {L" and ", EVENT_TREATY},\ {L" cancelled Free Info Pact with ", EVENT_CANCELLED_FREE_INFO},\ {L" cancelled Trade Pact with ", EVENT_CANCELLED_TRADE_INFO},\ {L" cancelled their Non-aggression Pact with ", EVENT_CANCELLED_NONAGGRESSION},\ {L" declares War on ", EVENT_TREATY_WAR},\ {L" destroys ", EVENT_RACE_WAS_DEFEATED_BY_RACE},\ {L" had a technology breakthrough researching ", EVENT_RACE_RESEARCHED},\ {L" had a technology setback ", EVENT_RACE_LOST_RESEARCH},\ {L" has been hacked ", EVENT_IRRELEVANT},\ {L" has been resurrected ", EVENT_SHIP_WAS_CLONED},\ {L" has cancelled their Alliance with ", EVENT_CANCELLED_ALLIANCE},\ {L" has cancelled their Mutual Protection Pact with ", EVENT_CANCELLED_PROTECTION},\ {L" has cancelled their Non-aggression Pact with ", EVENT_CANCELLED_NONAGGRESSION},\ {L" has colonized ", EVENT_PLANET_COLONIZED},\ {L" has destroyed ", EVENT_RACE_DESTROYED_TARGET},\ {L" has died in ", EVENT_SHIP_DIED},\ {L" has sabotaged ", EVENT_SABOTAGE_KNOWN_SUCCESS},\ {L" has sent a Bounty Hunter after ", EVENT_HITMAN_HIRED},\ {L" have been destroyed", EVENT_RACE_WAS_DEFEATED},\ {L" have captured the planet ", EVENT_RACE_LOST_PLANET},\ {L" honors Alliance with ", EVENT_HONORED_ALLIANCE},\ {L" honors Mutual Protection Pact with ", EVENT_HONORED_PROTECTION},\ {L" is almost done ", EVENT_RACE_HAS_QUEST},\ {L" is almost ready to ", EVENT_RACE_HAS_QUEST},\ {L" is attacking ", EVENT_RACE_ATTACKING},\ {L" is close to ", EVENT_RACE_HAS_QUEST},\ {L" is now tech level ", EVENT_RACE_LEVELED},\ {L" needs ", EVENT_RACE_HAS_QUEST},\ {L" paid ", EVENT_BRIBE},\ {L" received ", EVENT_KARMA_REINFORCEMENT},\ {L" rejects peace treaty from ", EVENT_PEACE_REJECTED},\ {L" spread Propaganda has caused problems on ", EVENT_PROPAGANDA_KNOWN_SUCCESS},\ {L" started a Rumor that has harmed ", EVENT_INFLAME_KNOWN_SUCCESS},\ {L" started a Rumor that has improved ", EVENT_PREDISPOSE_KNOWN_SUCCESS},\ {L" stole Unknown Technology from ", EVENT_ESPIONAGE_KNOWN_SUCCESS},\ {L" tried to sabotage ", EVENT_SABOTAGE_KNOWN_FAILURE},\ {L" tried to spread Propaganda on ", EVENT_PROPAGANDA_KNOWN_FAILURE},\ {L" tried to start a Rumor about ", EVENT_RUMOR_KNOWN_FAILURE},\ {L" used a Doomsday weapon (", EVENT_SHIP_USED_FORBIDDEN_WEAPON},\ {L" wants to ", EVENT_RACE_HAS_QUEST},\ {L" wants you to ", EVENT_RACE_HAS_QUEST},\ {L" was killed by ", EVENT_SHIP_WAS_KILLED},\ {L"'s Espionage on ", EVENT_ESPIONAGE_KNOWN_FAILURE}\
Sist redigert av Tuidjy; 5. juli 2020 kl. 21.35
< >
Viser 1630 av 128 kommentarer
Per side: 1530 50

Dato lagt ut: 4. juli 2020 kl. 18.33
Innlegg: 128