How to score a certain move in a PGN, for how well opening theory is followed I am making a bot that plays opening moves from a PGN. When the player reaches a position out of PGN, I want to give a score to the player how well he followed the PGN. What kind of statistics can I give the player for entertainment.
I am thinking:
ply The ply number that is reached.
plies to next branch Number of plies to next branch.
branches Number of branches that has been taken.
Would this be accurate, and what can I add to them?
There can't be a standard here so you can choose your scoring system in the way is makes most sense for your particular case. I'm not sure what its intent really is so it might be different from what I have in mind. We can all agree on what a 100% score would look like, but what does it really mean to have a 50% or a 75% score?
If it's intended as a training tool, I'd include the evaluation of the final position. For me it's not the same to stop following the PGN with a blunder than doing that with an interesting alternative. But maybe for your particular case it is!  It's ultimately up to you to decide. For example, I don't see why the number of branches taken should have anything to do with &quot;how well&quot; you folowed the PGN.
Some possible criteria you can use (I'm thinking of a training tool that helps me memorize an opening line here):

Number of moves played correctly.
Number of non-forced moves played correctly.
Number of moves until the &quot;end&quot; of the line.
Evaluation after deviating (compared to evaluation at the end of the line)
Mainline penalty (being a bit more lenient with errors in weird sidelines than with errors in the mainline).
Critical position bonus (selecting a few specific positions that are considered &quot;critical&quot; in a given line and give extra weight to those in the final score).
Previous success ratio (give extra weight in the final score to positions the user got wrong frequently in the past)