MTG Forge has a card object which represents a real-world, cardboard card. This sound simple but it gets a little bit complicated. Let's say that I want to destroy one of your Forest's but you want to bounce it, so you have to know which specific Forest card that I am targeting. In the real world you can just point to the specific Forest, while a computerized game of Magic has to show the user. Magic Online uses nicely drawn arrows while MTG Forge just tells you the targeting card name and its unique number.
At the beginning of the game MTG Forge gives each card a unique number much like the old Shandalar game. Whenever a card is copied, the card's unique number is copied also. In MTG Forge every time a card's attributes need to be reset, like when a creature is going to the graveyard, a new copy of the card is made that has the same unique number. In MTG Forge, every time a card changes zone a new copy is made. I think that making a new copy of a card is easier than saving all of the base attributes and then resetting them, Card.reset().
The card name is important but so is the unique number. Ideally the unique number would not be shown to the user and little arrows would be drawn to show targets.
Nothing I write about it really rocket science just one guys opinion about programming Magic. Just finding the subject is the hard part, the rest is usually straightforward.