Page 1 of 7

The Deck Tool

Posted: Wed Jul 11, 2007 2:57 pm
by Duvik
The proposal...

A customizable card drawing tool that would allow for the creation of user created decks and random draw and shuffling abilities.

The reasoning behind this and it's value have been discussed in another thread and I can copy and paste it here if necessary.

Posted: Wed Jul 11, 2007 3:01 pm
by Nys
Here's a rough idea of what I'd like to see feature-wise. Note that I tried to put everything into iterations. We shouldn't expect to play MtG in 1.0 :)


Iteration 1
Purpose: Simulate a standard deck of cards. Have the basic abilities to shuffle and look at the cards one by one.

Cards
Standard cards with rank and suit stored in attribute table.
Each has an associated image file.
Each card is stored separately on the drive in the MapTool token format.

Deck
A standard deck of cards (includes jokers).
Deck consists of two card lists: the deck and the discard pile.
The back of the cards is associated to an image file on the Deck-level.

GUI
A simple graphical representation of the Deck and Discard Pile.
Shuffle Button: append Discard Pile list to Deck list and randomize.
Double click flips the top card of the deck.
Click and drag top card of the deck to the discard pile moves the card from the deck list to the discard pile list.


Iteration 2
Purpose: Integration with MapTool.

A third card list is added to the Deck: in play.

Click and drag cards from DeckTool directly to MapTool.
DeckTool associates the card to the "in play" area.
Maptool is passed the path to the card token and a unique id.
Maptool loads the token, adds it to the map and associates the unique id to it.

Click and drag cards from MapTool directly to DeckTool.
Maptool removes the token from the map.
Maptool passes the unique id back to DeckTool.
DeckTool matches the unique id to the card and moves it back to the "discard" area.

Sweep Button: Signals MapTool to delete all card tokens and moves "in play" cards to "discard" area.


Iteration 3
Purpose: Integration with InitTool. Savage Worlds initiative is handled via a deck of cards.


Iteration 4
Purpose: Deck and card customization.

Cards
Can customize cards via an editable attribute table, just like editing tokens in MapTool.
The back of the cards can be associated to an image file on the Card-level, but defaults to the Deck settings.

Decks
Can create decks of any size that can contain any Cards, including duplicates.

Persisted
Ability to save and load cards and decks.

Card explorer window.
Displays the saved Card/Deck files on your drive.
Can click and drag to the Deck explorer window to add them to the Deck.

Deck explorer window.
Displays a sorted list of all cards in the current deck.
Can Add/Remove cards.

MapTool
Cards without an image file display attributes on top of a generic card background.

Posted: Wed Jul 11, 2007 3:03 pm
by trevor
Someone draw me a picture and I'll build it

Posted: Wed Jul 11, 2007 3:08 pm
by RPTroll
Here's a few random Troll thoughts. Note: I've never played anything like Magic The Gathering so feel free to slap me down if any of this doesn't make sense.

It seems there is a need for a set of cards that is loaded at startup. That deck should be able to be
  • Shuffled
    dealt(specify a number of cards and a player)
    split into multiple sub decks
The cards themsleves should be able to be
  • moved around
    turned face up or face down on a common playing field
    discarded back into the deck or a discard pile
    owned by a player
    displayed to other players
    have tokens placed on them
I suppose you also need the ability to have custom decks that each player loads him/herself. Perhaps there is a point valus associated with cards and so each card would need a properties tab as well.

Posted: Wed Jul 11, 2007 3:19 pm
by Duvik
Here's a sample card backing for building purposes.


ImageImage

Posted: Wed Jul 11, 2007 3:25 pm
by trevor
Looks cool Duvik. Do you want the cards to be that big in the actual tool ? I suppose I could easily scale them on demand.

Posted: Wed Jul 11, 2007 3:34 pm
by Duvik
Well, my resolution is 1024x768 and they come up nice looking on my screen but, I just switched to 800x600 and they are freaking huge so, it's your call, I can easily reduce the image a bit but, you couldn't fit as much info on the front and text on magic cards and such would be pretty small as well.

I'd say no more than 50 px smaller on width and 75 or so smaller on height... increasing both numbers by 25 is min min... just gets too small.

Just depends on if one would want to add images and flavor text to cards really.

edit: here's the image reduced a bit...

Image

Posted: Wed Jul 11, 2007 3:36 pm
by trevor
Seems like you may want to have a small version for your "hand" and a large detailed version for the currently inspected c ard ?

Posted: Wed Jul 11, 2007 3:38 pm
by Duvik
ahhhh yes, excellent idea!!!

I could whip up a 52 card deck as well. Make it a bit original ya know, semi stylized suit icons and pretty numbers and what have you. I'm almost eager enough to get them done tonight :D

Can I assume it's safe to use the first size I posted and we can scale them as needed then?

Posted: Wed Jul 11, 2007 3:42 pm
by Nys
If you're interested in having MtG simulation as one of your goals, I suggest checking out the card image size that wotc uses:
http://ww2.wizards.com/Gatherer/CardDet ... ?&id=45212

Posted: Wed Jul 11, 2007 3:46 pm
by Duvik
First image i posted is only 15px larger in the height than MtG standard so, sounds good eh? ((the MtG cards are a bit cut off it looks like, extra 15px should be just right))

Posted: Wed Jul 11, 2007 3:51 pm
by RPMiller
Something about the above is bugging me a little bit so I have to pipe up.

Everyone keeps talking about the deck needing to be shuffled. There is no reason to shuffle the deck when the cards would be drawn randomly. I know it is a semantics thing, but words matter so I just wanted to clarify that we don't really need code for shuffling. We need code for randomly drawing.

An array for the cards would also take care of preventing duplicate pulls and such. Once a card is drawn that array cell is empty so no more cards can be pulled from there. Obviously that would mean a return to the randomizer to try another card, or a redimensioning of the array itself preserving the remaining contents.

As a starting point I would suggest, as Nys did, using an ordinary deck of 52 cards and having it be able to handle probably the easiest multi-person card game out there - War. If you could make a DeckTool that you could play a complete game of War with then you are definitely 25% of the way there.

What it would look like is something like this I think:
Image

Posted: Wed Jul 11, 2007 3:54 pm
by Steel Rat
Seems like since you're dealing with a virtual card than any text doesn't actually have to be part of the graphic, but could be an attribute of the card which can be displayed.

I've never played any of the card games so I don't know if that's feasible.

Posted: Wed Jul 11, 2007 3:56 pm
by Nys
I have to respectfully disagree RPMiller. For example, in MtG, there are some cards that allow you to peek at the top x cards of your deck. When the time comes around to draw cards, the app has to provide that player with those same cards.

I suppose some sort of buffering could be done to keep track of what cards have become "known," but it might be easier to just randomize the deck itself.

Posted: Wed Jul 11, 2007 3:57 pm
by Hawke
Quick question! I love what I see, but why are we considering a different tool rather than an addition to MapTool? Maybe I'm pushing for Integration a little bit too much, but I do think that you could definitely combine mini games and deck games into the same tool. In fact, what about playing Sorry! where you have the game board and pieces but have the cards in your hand that are useable. Maybe not the best example. How about Settlers of Cataan where you have the deck pieces available in-game but have a map of the island on there.

I guess maybe... what's the RPTools philosophy about integration versus different tools?