I've started building a deck editor program. Its goal is to replace programs such as MTGO and MWS for deck building by simplying being more powerful and easier to use.
I started making decks with MTGO. It has a pretty nice interface for searching, which is even pretty powerful. Eg, did you know it supports "and" (&), "or" (|), and "not" (~) operators? However, its a 300mb+ download and you have to be online to get card art. My major qualm with it is the deck editor's usability, you can't size the deck list or sideboard larger without minimizing the card pool, you can't manually sort the cards in the deck.
I then moved to MWS. MWS does much of what I want, but does so through a clunky interface. It also contains some annoying bugs. Even though I purchased MWS, it has not seen a new release in over a year. I finally gave up, and Nate's Deck Builder is the result.
You will need Java 1.5 to run it. Check out the help menu for some tips on using it. You'll get an error if you try to run two instances of the program, but go File->New Window and you can open any number of decks at once. Major features its missing is the ability to constrain on card edition, it only opens CSV decklists (soon to support MWS and MTGO formats), and it does not yet display full card images. Nearly everything else is working though!
Let me know what you think, if you have any ideas for how to improve it, ideas on new features that you'd like, etc. This is v0.8 but is only its second release (the first was v0.2). I consider it roughly 80% of the way to a v1.0. What I'm saying is, it may have some bugs and not all the functionality is there. However, developement is fast and I expect a v1.0 soon (in a week or so).
It is written 100% in Java using Swing. This means it will work on Linux and Macs. It comes with a native launcher (EXE) for Windows, but will easily run on other OSes. Open the file in /misc/ with a text editor to see what the command line should look like.
Even if Java 1.5 doesn't come in a Debian package, you can still install it. Google for "java 1.5 debian" (without quotes) and there is a lot of information. Try this article... http://www.debian-administration.org/articles/142
New version, 0.9.9. http://rapidshare.de/files/35538073/deckbuilder-0.9.9.zip.html
Lots of new stuff, most notably the deck information section, standalone rules viewer, editions support, and deck legality validation. Should work on all platforms where Java 1.5 is available. I've tested it on WinXP, WinServer2003, and Mac OSX 10.4. Heres a new screenshot...
Note the selected preset is T1, which makes the 3xBurning Wish get highlighted because it is a restricted card in T1.
New version, 1.0-RC2... http://rapidshare.de/files/35782920/deckbuilder-1.0-RC2.zip.html
It now has FULL support for sets AND picture numbers (I called them "Art #" so the column name is small), including opening and saving files. The set and picture number can be changed on the fly while the cards are in your deck. The complexity with all this new stuff is pretty high, so please test thoroughly. Also new is the "Mana Produced" column that allows you to sort and look up all cards that produce a given type of mana. See the help. It includes maitai's updated TS rulings. It now has an MRU list. Rules viewer has a home button. Various polishing with the table selections. Theres a "Link selections with card pool" toggle button. Selections are always linked the other way. You'll see, it ended up quite intuitive. Things work a little differently when "Show only unique cards" is checked/unchecked, so be sure to test both. Card image display now uses editions and picture numbers as well as all set abbreviations. Check the log if your pictures are not showing. Probably some things I missed too.
I feel this thing is pretty feature complete, atleast for now. In the future I'd like to come back and add deck "buckets", card ratings and flags, and other features. For now, no more features! Let's get down and test this thing, hammer out the bugs until its solid, and then we can add more features.
I think this program is going to focus on just building decks. A playable area is a whole project by itself. The deck builder currently has support to save decks in MTGO, MWS, and CSV formats. Apprentice format could be added.
It means that it can't find the image at the path "/legality/illegal t1.png" in the file deckbuilder.jar. This file is a zip file and if you open it you'll find that the image is indeed there. So I'm not sure why that would occur? Did you just unzip it and double click the deckbuilder.exe? Try double clicking the deckbuilder.jar?
Lordpenguin, all the cards are stored in a CSV file. It would easy to make an application that can transmogrify that data. I could see some usefulness in taking a deck and easily saving it in whatever text format. I will change the saving mechanism to use a templating engine called StringTemplate. This will allow anyone to easily write their own template to save off decks.
One thing possibly worth noting, I believe the current performance with large decks is poor. Eg, select all 13k cards in the card pool table and hit add to deck. It will appear to hang, but should finish eventually. I ran out of patience after a few minutes. My point is, there will need to be some extra work if you would want the deck saving mechanism to save ALL cards.
FoxBat, I will add Apprentice support.
Galvatron, I don't have a blackberry to test on. They run J2ME? What is the screen resolution? That may be the largest problem, since the app may be unusable at very low resolution.
Go to www.blacberry.com you can download developer tools an simulators that will emulat the behvor of varioous models including the new 8100 perlI'm posting on an 8700G
New version, 1.0-RC4... http://rapidshare.de/files/36308435/deckbuilder-1.0-RC4.zip.html
Contains many fixes and minor improvements, discussed here and at this link... http://www.mwsdata.com/forum/viewtopic.php?t=804&start=90
New version supports Apprentice decklist open and save. It also now uses a templating engine called StringTemplate... http://www.stringtemplate.org/doc/doc.html
...to do all file saving. Look at the *.st text files in /template/. You can add files to this directory and then save in whatever format you like. Use the StringTemplate docs and existing *.st files as examples. I can help you create your *.st file if you give me an example of what you need.
Galvatron, I downloaded the JDE from that site and I'll check it out in depth later. Thanks!
Zirilian, very strange. After some thinking and much staring, I believe I may have found the problem. Should be fixed in RC5+.
<edit> Ok, here is v1.0-RC6... http://rapidshare.de/files/36398120/deckbuilder-1.0-RC6.zip.html
Includes a few necessary fixes. I feel pretty good about this one. If it goes without any major bugs being reported for a couple days, I'll mark it as v1.0 final. Yay!
I got the following error when attempting to save a deck:
Illegal cards: Sprout, Deathspore Thallid, Thallid Shell-Dweller, Verdant Embrace, Thallid Germinator, Herd Gnarr, Dread Return, Might of Old Krosa, Strength in Numbers, Pendelhaven Elder, Krosan Grip, Wormwood Dryad, Fallen Ideal, Savage Thallid, Sporesower Thallid, Assassinate, Sudden Death, Feebleness, Thelon of Havenwood
java.lang.NullPointerException
at mtg.deckbuilder.DeckBuilder$53.actionPerformed(DeckBuilder.java:2606)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
If it helps, none of those cards were in the deck.
Edit: changed the ordering of the cards and attempted to save again, got the following error message:
java.lang.NullPointerException
at mtg.deckbuilder.DeckBuilder$53.actionPerformed(DeckBuilder.java:2606)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
At first glance, it appears the Illegal Cards message went away and nothing else.
Oh, I get it. You have to Save As... first. That's a little clunky, but I can get used to it.
Feuerdrache, turned out to be a bug. If you hit save and haven't saved the file, it should pop up with the save as dialog, not an error. Will be fixed in the next version.
Sorry for so many updates in one day, but I want to get the latest out there quickly so it can be tested thoroughly.
Galvatron, it turns out that blackberries don't have support for Swing, which means reimplementing the entrie UI in whatever they do support. This is maybe 75% of the work to build the entire deck builder. Unfortunately this is too much work for me to tackle. It would be much simpler to implement just the rules viewer for the blackberry.
I shouldn't have, but I decided to put the ratings and flags into v1.0. The reason is I am going to stop development on the deck builder for a while after v1.0. So here is a v1.0-RC9...
It has ratings, flags, saves the selected sets between application runs, shows card rarity by coloring the card edition, and has proper sorting of rarity, flags, and ratings columns. It should be as solid as RC8, but I'll give it a little while before stamping it v1.0 final.
Lordpenguin, you can just install over an existing version. However, you don't need to keep any of the old files except for the "cardsdb" directory, which stores your card ratings and flags.
Lord Tirian, I know many releases can be annoying, but I had to hammer this thing out so the wife wouldn't complain that I spend more time with the computer than her, etc. Thanks for the testing!
This looks like a cool program, I'll try to download it (dial-up)
also, it would be easier to figure which is the newest by changing the link in the first post
Private Mod Note
():
Rollback Post to RevisionRollBack
Magic Rules Advisor
"I'd rather have a bottle in front of me than a frontal lobotomy."
-Tom Waits
New version, 1.1... http://www.slightlymagic.net/prog.shtml
Added font settings for card information (I was going cross-eyed making decks). Fixes some minor but important bugs that were in v1.0. The application is now very solid.
Private Mod Note
():
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
I started making decks with MTGO. It has a pretty nice interface for searching, which is even pretty powerful. Eg, did you know it supports "and" (&), "or" (|), and "not" (~) operators? However, its a 300mb+ download and you have to be online to get card art. My major qualm with it is the deck editor's usability, you can't size the deck list or sideboard larger without minimizing the card pool, you can't manually sort the cards in the deck.
I then moved to MWS. MWS does much of what I want, but does so through a clunky interface. It also contains some annoying bugs. Even though I purchased MWS, it has not seen a new release in over a year. I finally gave up, and Nate's Deck Builder is the result.
Screenshots:
Latest version, 1.1...
http://www.slightlymagic.net/prog.shtml
You will need Java 1.5 to run it. Check out the help menu for some tips on using it. You'll get an error if you try to run two instances of the program, but go File->New Window and you can open any number of decks at once. Major features its missing is the ability to constrain on card edition, it only opens CSV decklists (soon to support MWS and MTGO formats), and it does not yet display full card images. Nearly everything else is working though!
Let me know what you think, if you have any ideas for how to improve it, ideas on new features that you'd like, etc. This is v0.8 but is only its second release (the first was v0.2). I consider it roughly 80% of the way to a v1.0. What I'm saying is, it may have some bugs and not all the functionality is there. However, developement is fast and I expect a v1.0 soon (in a week or so).
It is written 100% in Java using Swing. This means it will work on Linux and Macs. It comes with a native launcher (EXE) for Windows, but will easily run on other OSes. Open the file in /misc/ with a text editor to see what the command line should look like.
http://rapidshare.de/files/35176616/deckbuilder-0.9.1.zip.html
[KalmWave] [Last.FM]
Ubuntu Linux
http://www.debian-administration.org/articles/142
New version, 0.9.9.
http://rapidshare.de/files/35538073/deckbuilder-0.9.9.zip.html
Lots of new stuff, most notably the deck information section, standalone rules viewer, editions support, and deck legality validation. Should work on all platforms where Java 1.5 is available. I've tested it on WinXP, WinServer2003, and Mac OSX 10.4. Heres a new screenshot...
Note the selected preset is T1, which makes the 3xBurning Wish get highlighted because it is a restricted card in T1.
Isn't there any way this could simply be made 1.4 compliant?
[KalmWave] [Last.FM]
Ubuntu Linux
I could release the source if someone wanted to give it a shot.
[KalmWave] [Last.FM]
Ubuntu Linux
http://rapidshare.de/files/35782920/deckbuilder-1.0-RC2.zip.html
It now has FULL support for sets AND picture numbers (I called them "Art #" so the column name is small), including opening and saving files. The set and picture number can be changed on the fly while the cards are in your deck. The complexity with all this new stuff is pretty high, so please test thoroughly. Also new is the "Mana Produced" column that allows you to sort and look up all cards that produce a given type of mana. See the help. It includes maitai's updated TS rulings. It now has an MRU list. Rules viewer has a home button. Various polishing with the table selections. Theres a "Link selections with card pool" toggle button. Selections are always linked the other way. You'll see, it ended up quite intuitive. Things work a little differently when "Show only unique cards" is checked/unchecked, so be sure to test both. Card image display now uses editions and picture numbers as well as all set abbreviations. Check the log if your pictures are not showing. Probably some things I missed too.
I feel this thing is pretty feature complete, atleast for now. In the future I'd like to come back and add deck "buckets", card ratings and flags, and other features. For now, no more features! Let's get down and test this thing, hammer out the bugs until its solid, and then we can add more features.
i personally hate mws at times. there is an issue with the randomization part. but it is better than apprentice. in any event it has a nice look.
Thanks to Epic Graphics the best around.
Thanks to Nex3 for the avatar visit ye old sig and avatar forum
let me know if you develop a version to run on blackberrys
need web design and other services check us out.
http://www.webstudio914.com/
Along those lines, Appr support would be nice, since nix/OsXers running Mindless Automaton would finally have a deck builder.
One thing possibly worth noting, I believe the current performance with large decks is poor. Eg, select all 13k cards in the card pool table and hit add to deck. It will appear to hang, but should finish eventually. I ran out of patience after a few minutes. My point is, there will need to be some extra work if you would want the deck saving mechanism to save ALL cards.
FoxBat, I will add Apprentice support.
Galvatron, I don't have a blackberry to test on. They run J2ME? What is the screen resolution? That may be the largest problem, since the app may be unusable at very low resolution.
Here it is running on a Mac...
need web design and other services check us out.
http://www.webstudio914.com/
http://rapidshare.de/files/36308435/deckbuilder-1.0-RC4.zip.html
Contains many fixes and minor improvements, discussed here and at this link...
http://www.mwsdata.com/forum/viewtopic.php?t=804&start=90
New version supports Apprentice decklist open and save. It also now uses a templating engine called StringTemplate...
http://www.stringtemplate.org/doc/doc.html
...to do all file saving. Look at the *.st text files in /template/. You can add files to this directory and then save in whatever format you like. Use the StringTemplate docs and existing *.st files as examples. I can help you create your *.st file if you give me an example of what you need.
Galvatron, I downloaded the JDE from that site and I'll check it out in depth later. Thanks!
Zirilian, very strange. After some thinking and much staring, I believe I may have found the problem. Should be fixed in RC5+.
<edit> Ok, here is v1.0-RC6...
http://rapidshare.de/files/36398120/deckbuilder-1.0-RC6.zip.html
Includes a few necessary fixes. I feel pretty good about this one. If it goes without any major bugs being reported for a couple days, I'll mark it as v1.0 final. Yay!
I got the following error when attempting to save a deck:
Illegal cards: Sprout, Deathspore Thallid, Thallid Shell-Dweller, Verdant Embrace, Thallid Germinator, Herd Gnarr, Dread Return, Might of Old Krosa, Strength in Numbers, Pendelhaven Elder, Krosan Grip, Wormwood Dryad, Fallen Ideal, Savage Thallid, Sporesower Thallid, Assassinate, Sudden Death, Feebleness, Thelon of Havenwood
java.lang.NullPointerException
java.lang.NullPointerException
at mtg.deckbuilder.DeckBuilder$53.actionPerformed(DeckBuilder.java:2606)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
If it helps, none of those cards were in the deck.
Edit: changed the ordering of the cards and attempted to save again, got the following error message:
at mtg.deckbuilder.DeckBuilder$53.actionPerformed(DeckBuilder.java:2606)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
At first glance, it appears the Illegal Cards message went away and nothing else.
Oh, I get it. You have to Save As... first. That's a little clunky, but I can get used to it.
Sorry for so many updates in one day, but I want to get the latest out there quickly so it can be tested thoroughly.
Galvatron, it turns out that blackberries don't have support for Swing, which means reimplementing the entrie UI in whatever they do support. This is maybe 75% of the work to build the entire deck builder. Unfortunately this is too much work for me to tackle. It would be much simpler to implement just the rules viewer for the blackberry.
<edit> Crap. Turns out that I used the wrong directory when making the RC7. So here is the latest...
http://rapidshare.de/files/36424955/...0-RC8.zip.html
or
http://www.filefactory.com/file/e7ddf4/
...sorry for all the updates! Once we hit v1.0 final this won't be happening. RC8 should be SOLID!
Here's a sneak peak at whats coming after v1.0 is finalized (ratings)...
http://rapidshare.de/files/36538412/deckbuilder-1.0-RC9.zip.html
or
http://www.filefactory.com/file/c0642a/
It has ratings, flags, saves the selected sets between application runs, shows card rarity by coloring the card edition, and has proper sorting of rarity, flags, and ratings columns. It should be as solid as RC8, but I'll give it a little while before stamping it v1.0 final.
http://rapidshare.de/files/37033176/deckbuilder-1.0.zip.html
This will be the last version for a while.
Here is an alternate download link...
http://z04.zupload.com/download.php?file=getfile&filepath=5891
Lord Tirian, I know many releases can be annoying, but I had to hammer this thing out so the wife wouldn't complain that I spend more time with the computer than her, etc. Thanks for the testing!
http://rapidshare.de/files/37121974/deckbuilder-1.0-src.zip.html
OR
http://z18.zupload.com/download.php?file=getfile&filepath=37835
also, it would be easier to figure which is the newest by changing the link in the first post
Magic Rules Advisor
"I'd rather have a bottle in front of me than a frontal lobotomy."
-Tom Waits
http://www.slightlymagic.net/prog.shtml
Added font settings for card information (I was going cross-eyed making decks). Fixes some minor but important bugs that were in v1.0. The application is now very solid.