Check out this chess programming wiki article [1] for a (still fairly hand-wavy) rationale for similar piece values, and the Wikipedia article on chess piece relative values [2] for a more in-depth look at various weightings. Some modern approaches use analysis of a huge corpus of master games to come up with piece values, but many of the systems are based on intuition and empirical evidence.
> To follow on though, shoukdn't it technically be the case that piece values should in theory fluctuate based on current situation.
Yes. One common example is knights and bishops. Both are worth about 3 pawns, but knights are generally more useful in closed positions due to their ability to jump over pieces, while bishops are better in open positions since they can more attack and move long distances.
So in some sense, and I'm just brain-farting here, the value of a piece is a weighted sum of all the possible squares it could occupy during move generation. Something like a rudimentary path trace.
Now trying my best not to get distracted building chess machines. :/
Right, although I didn't mean castling into check. I meant tempting a greedy algorithm by throwing away a high value piece (which was always a weakness of early chess machines), although I realize the tree search would spot that.
Also now that I'm awake, read the article fully now.
[1] https://chessprogramming.wikispaces.com/Simplified+evaluatio... [2] https://en.wikipedia.org/wiki/Chess_piece_relative_value