Here's some more info. I will use the word rating, but as Chris 23 poitned out, they do not have anything directly to do with a players rating. I believe they are more of a "chance" followed by a probabilty value. In the simeng.txt, say you have this value for assists {30, 0.50f}. In my theory, if the game calculates a 30% chance of an assist, then the team has a .5 probability of getting an assist. The probability is relative to ratings, it is not a percentage. Again, this is just a theory.
No, read again what I explained. Once a team meets the 30 condition, it gets 0.5f of assist hardcoded totals as team assists. And this condition needs to be met only -once- per whole game. I tested it out so that only one condition was met by a team per three months or so, and each time it was met they got a full amount of assists.
The system is as follows:
There are hardcoded conditions and algorithms that use simeng.txt for final results. We have no control over the algorithm, but as I explained in the original post it is a three step process.
First it takes into account a team, it's lineup and bench (all at once), and calculates the score of the game. At that point there are no blocks, assists, steals and any of that sort given out. It does however calculate certain unknown factors where shooting plays a large part in. These values are seemingly hardcoded.
This generates a result which will be averaged on the custom curve created by simeng.txt. Team perfomance is ranked from 1 to 100 in all categories, using those hardcoded values.
Then, based on assists, steals, blocks, rebounds etc curves, team ends up with a certain amount of those things.
These values are then separated between players based on their ratings.
It is -not- a percentage. It is overall perfomance rating (lower FG teams tend to be in the lower parts of assist curves compared to higher FG teams, but since it's not linear it's obvious there's more taken into account than just FG). It exists to make it so that not all teams would end up with same assists per game, and having it only depend on player passing and offensive abilities would make it so that Knicks has an amazing assist-player without results to back it up.
The float value is used as I mentioned before, because of the curve. You can have two values, {1, 0.0f} and {99, 1.0f} to get a linear result, but since we don't exactly know the algorithm, it is hard to determine the exact result.
And no 0.05f is not .5 probability. It's merely a multiplier of hardcoded total. It's used alot in simulation engines actually: engines are usually built with having constant numbers being in output, and tweaking them if necessary later on. This means that for testing purposes it's better to test five values with 100, than five values with other random numbers. Later on a multiplier is used to tweak the result.
That maybe too much of a change. I think if we can get the league leaders with around 9+ assists/game while keeping the team stats realistic, I'd be happy, not sure about the rest of the people. I would like to get the point leaders into the high twenties or maybe even into the low thirties.
I managed to achieve that without much problem, had around five players with 9+ with the exception of Gilbert Arenas with 12 assists. Seemingly the primacy I updated of him with him being one of the few great pointguards in the team had such a result. It is quite alright though.
In fact, fixing assists numbers and primacy had many guards in MVP race as well. Which was a refreshing sight to say the least. I believe it's possible to update points as well, but haven't tested it yet, it's mainly about sharing the points and game time that affects the result.