Can/should I treat the ID on the card as something different from the GAME code ID?
Piece labels and card IDs are in two separate namespaces. So, they don't have to coincide. However, it is sometimes practical to use the same names in two different namespaces. For example, I used to use function and subroutine names that matched piece labels, because this let me more quickly call the right function or subroutine without using a bunch of if-then statements. Since the cards in your game match only pieces, and each piece is going to require a unique notation, it does make sense to let them match up.
Since piece notation should be lowercase for one side and uppercase for the other, this restricts you from using mixed case piece notation. But since your cards do not represent pieces on one side or the other, you could still use mixed case IDs that otherwise match the piece notation but add some clarification on whether neighboring letters mean two different things or mean one thing together. For example, you might use C for the Camel, Cn for the Cannon, and CNZ (Camel+Knight+Zebra) for the Buffalo.
I recommend starting by coming up with a piece notation that makes sense and isn't too cryptic or confusing, then decide whether you want to use it for the IDs on your cards.
Piece labels and card IDs are in two separate namespaces. So, they don't have to coincide. However, it is sometimes practical to use the same names in two different namespaces. For example, I used to use function and subroutine names that matched piece labels, because this let me more quickly call the right function or subroutine without using a bunch of if-then statements. Since the cards in your game match only pieces, and each piece is going to require a unique notation, it does make sense to let them match up.
Since piece notation should be lowercase for one side and uppercase for the other, this restricts you from using mixed case piece notation. But since your cards do not represent pieces on one side or the other, you could still use mixed case IDs that otherwise match the piece notation but add some clarification on whether neighboring letters mean two different things or mean one thing together. For example, you might use C for the Camel, Cn for the Cannon, and CNZ (Camel+Knight+Zebra) for the Buffalo.
I recommend starting by coming up with a piece notation that makes sense and isn't too cryptic or confusing, then decide whether you want to use it for the IDs on your cards.