Even though I consider MTG Forge to be an outstanding success, there are many areas that could be improved. For example, when an error occurs it is not displayed to the user. This wasn't done on purpose and is more of an accident. The error is displayed on the "command prompt" which is very visible when I am programming but is usually hidden when the user runs the program. Ideally the error message should be written to a file and displayed to the user. If MTG Forge had an Internet connection, the error message could be automatically forwarded to the developer (me).Furthermore, MTG Forge stores all of the card information in one method. Yes, the guts of all 1,500 cards is stuffed into one very long method, I use nested brackets to give each card its own namespace. This was done as a quick-and-dirty way to create new card objects. A better solution would have been to put each card in a separate file. If these card files were read at runtime, adding new cards would be easy versus compiling the whole project.
Currently MTG Forge stores all of the deck files in one master file. While this scheme simplifies some of the programming, it makes life more difficult for the user. Typically users make new decks and tweak preexisting ones and every time the user upgrades to a newer version, they have to save their "master deck file". I think it would be better if the decks were stored in separate files.
The deck files should also be plaintext in order to allow the user to easily cut-and-paste the deck contents when posting the deck to a forum. While MTG Forge doesn't support separate deck files, individual decks can be imported and exported, a binary file and a text file of the deck's contents is created. (You can view decks that people have posted here.)
The user interface could also be improved and although MTG Forge version 2.0 is still being built, it uses an abstract user interface. This will easily let allow another "front-end" to be written. MTG Forge's "rules engine" handles all of the mouse input and menus, so the user interface is only responsible for displaying life points and cards.
p.s.
Best Island ever, the Japanese get all the good card art, lol.
p.s.s.
The simplest videogame libraries I have found for Java are Fly, Ucigame, and GTGE (the link is currently down but it used to work). LWJGL seems popular but I don't understand it. LWJGL seems to require a working knowledge of OpenGL.
//example of nested brackets from CardFactory
getCard(String cardName)
{
{
//create Wrath of God
}
{
//create Giant Growth
}
{
//create Eager Cadet
}
}//getCard()







