In its current state, the card engine exists as a base for which a user interface would be build to allow players to play these games on a local machine. Further work must be done to create a user interface, and to allow networked play. Ideally, different user interfaces would be compatible in network play. The current base still requires more testing and some implementation in certain parts, as well as increasing efficiency. For example, while all of the pieces allowing a game state to be recorded accurately exist, the means to effect game state must still be implemented.
The card engine is designed in an object-based manner. Each part of a game is abstracted into its own class: cards have a class, zones have a class, etc. This allows for the pieces of the game to be highly independent, and thus able to be highly fluid for the purposes of recreating the environments of several games.
In order to set up a game, the card engine reads in a file containing the varying pieces of the game definition. In order for getting the code complete, no error checking was performed at this time. Each piece of setup is delegated to the component that needs that piece; The cost class deals with parsing the cost section, the card class deals with the card definition, and so on. This allows for changes in how these parse or need information to be centralized to the piece that needs it.