NeoAnderson wrote:1. Take a snapshoot of the current state of the game (cards in play, cards in hand, cards in library, cards into graveyard, cards exiled..and also of life points of players).
This likely isn't possible purely because the state of cards on the battlefield includes effects that have been used on the card that are still affecting it (example
Sensei Golden-Tail, how would you store if the ability had been used on another card, you can't go by counters because in this case the counters are meaningless).
Cards in zones can be read and saved in a Data Chest for later retrieval (using something like LinkedDC() or my ObjectDC functions. Counters on cards in zones (battlefield and exile) could be stored (along with their types), Cards parenting other cards could be detected and stored. Storing tokens could be a problem though as they cease to exist if they leave the battlefield.
NOTE: For cards that have internal states it is impossible to store those states properly.
NeoAnderson wrote:2.
Restore last saved snapshoot.
Anyone could tell me if is possible to code? Also if there is another card already do something similar?
This would likely have problems with restoring the proper order to some zones. It would also be impossible to set internal states for cards (can't access EffectDC() or LinkedDC() from another card). You also can't restore effects that had been applied to the card (example
Sensei Golden-Tail, how would you re-apply the effects without access to the actual ability).
There are cards that do something similar like
Shahrazad (would need to take a snapshot, remove all cards except those in the libraries, play the subgame, then restore from the snapshot, and shuffle libraries), but they are also not possible to code.