Thursday, May 21, 2009

Balanced Booster Pack

In the quest mode you win new cards but balancing the cards between the 5 colors, artifacts, artifact creatures, and lands is very tricky. My idea, which I’ve coded, consists of creating a smaller, balanced "bag" and then choosing randomly from it. The idea is to reduce randomness while still being random.

The colors are usually evenly distributed while allowing some unpredictability. Artifacts, lands and multicolored cards appear less often than any color. If you total the artifacts, lands and multicolored cards you will roughly get a number that is usually close to the number of white cards (or any other one color).

This got me thinking about physical booster packs, how are they created? The cards don’t seem to be randomly mixed together because you don’t seem to get duplicate cards (something that did happen when MTG Forge created purely random packs). The creation of real booster packs seems to be related with how the cards are laid out in sheets. Which also leads to the question of what algorithm does Magic Online use to generate packs?

Someone has finally done it and converted MTG Forge into an applet. The link is The "play the game" option worked for me while the "play with images preloaded" didn’t. You can only play with preconstructed decks, the Deck Editor and Quest mode aren't implemented. Anyways, have fun :)


Anonymous said...

I also made my own booster-draft application, allowing any number of players to participate through TCP/IP. Therefore I "profiled" every card in every edition to text-files. Overall there are no 64 sets / editions that can be drafted, consisting of 4,5 MB plain-text in total. For the booster generation: for every booster I load seperate arrays for each rarity, meaning arr_rare, arr_uncommon, arr_common, arr_mythic, arr_basicland. When a card is randomly chosen, I remove it from the array, so it is not possible to choose this cards for this specific booster again!

For better usability I wrapped the whole thing and now generating a booster the old style (no myths, rare is the fourth card from the top) looks like this:

FillCardSlot(arr_uncommon, 3, edition)
FillCardSlot(arr_rare, 1, edition)
FillCardSlot(arr_common, 11, edition)

edition holds an reference to the set wie want generate the booster of, mirage for example. I do not expect artifacts or mulitcolored to be any more rare than the others, nevertheless this could be integrated within minutes.

The card-information within the text-files look like this:

Name=Akroma, Angel of Wrath
Typ=Legendary Creature
CardText=Flying, first strike, vigilance, trample, haste, protection from black and from red
FlavorText=No rest. No mercy. No matter what.

Forge said...

Do you use your "virtual draft" program and then play against people in real life or on Magic Online?

Anonymous said...

Hi Forge,

this will be the next step. And this is the reason why there is a "virtual booster draft" program. But you made me have an idea... perhaps some people also would like a print-friendly version to play with thoses decks. I will leave another comment in your latest posting.