Dominion Set Randomizer

Dominion Set Randomizer - student project

Dominion is a very popular deck-building card game where players acquire various cards to create a large kingdom. These cards comprise of treasure cards, victory cards and kingdom cards. Only 10 sets of kingdom cards are used in any given game, but there are so many more different sets that can possibly be selected.

One of the more exciting ways to play the game is to randomize the set of kingdom cards used. The set of cards includes a "randomizer" deck that players can shuffle then deal out a random set of 10 to use in the game. With only the base game, this only involves 25 cards. When expansions get included, this can go on to reach over 100 cards.

Rather than having players shuffle 100+ cards to randomly pick 10, I have decided to make an iOS app that facilitates this process to better streamline the process of playing Dominion.

There currently exist other similar apps on the App Store, but none of them have been updated with iPhone 5 support or retina graphics with a corresponding UI to match. The existing apps also lack features that have been previously requested by Dominion players such as whitelisting or blacklisting certain cards from appearing in a random set.

Some existing Dominion randomizers:

The real cards from Dominion in a randomized set look similar to this image (courtesy of Cards of different types have different colors, so I aim to display similar colors to the user of my app.

Dominion Set Randomizer - image 1 - student project

I have visualized the app to work as a table for the main display and an emulated card for the detail display. Attached are some of my brainstorming mockups. I debated between using a Navigation Controller versus a Tab View Controller and ended up implementing both. I settled on just the Navigation Controller because the tabs seemed to be clutter.

Dominion Set Randomizer - image 2 - student project


  • Complete randomization of cards based on user selection
  • Line item veto via swipe to remove undesirable cards
  • Vetoed cards do not appear again until either all cards have been presented or the set is completely reshuffled
  • Colors match the card type (e.g., Action or Victory)
  • Cards are marked with an emblem representing which set they are from
  • The randomized set can be sorted by Name, Cost or Expansion Name and re-sorted without shuffling the set

Future tasks

  • Whitelist and Blacklist to either insert or remove cards from the set before randomization
  • Include card explanations from the game manual under the '?' on the card detail view
  • Clean up images and UI

Feb. 17 Update


  • Randomized sets can now be sorted by Name, Cost and Expansion Name.
  • The user can change the sort on the fly via the settings menu and have it apply immediately to the current set without needing to reshuffle the set.
  • A coin emblem is now displayed on the UITableViewCell underneath the cost.
  • The expansion set's emblem is now displayed in place of the '>' on the table view.
  • The title bar color of a card's detail view matches the card type's color.
  • Placeholder buttons in place for whitelist/blacklist feature (TBD).

Dominion Set Randomizer - image 3 - student project

New, short video displaying the new UI at work: (0:31)

Feb. 9 Update

Check out my project in action!

Feb. 8 update

I have now updated the logic of card selection to prevent previously vetoed cards from showing up in the rotation until all possible cards have been cycled through. I am also "flattening" my UI to make it different from the currently existing Dominion randomizers on the App Store today. Also, I have highlighted the table cell based on the type of card selected.

Dominion Set Randomizer - image 4 - student project

Target milestones:

  • Finish integrating other cards (111)
  • White/blacklist of cards
  • Possibly integrate Facebook-style page panning

February 5 update

I have a working v.01alpha build of my app. Currently, it is limited to the base set of 25 cards. The UI needs some work with some images to make it look nicer. I think UITableViewCell may be needed to fix up the main table display to include some relevant icons.

Dominion Set Randomizer - image 5 - student project

Dominion Set Randomizer - image 6 - student project

Dominion Set Randomizer - image 7 - student project

Target milestones:

  • Integrate all possible cards (187)
  • Implement selective use of sets via NSUserDefaults or Settings.bundle
  • Configure selection method to exclude cards based on a blacklist
  • Require selection method to include cards based on a whitelist.
  • Good UI design