Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit

This should better optimize the processing and breaks apart the code for easier reading/tweaking.

Git stats


Failed to load latest commit information.


CardMaker is an application that generates graphics via data sources. It has a graphical user interface for designing layouts and offers scripting functionality.

This application was created to help me generate components for a board game. You can put all of your variable data into a CSV or Google Spreadsheet and then create layouts in CardMaker. This separates your layout and data so you do not have to manually re-create each card.

Command line based export support is in development (coming soon!). Soon you will be able to build CardMaker into a workflow!


Latest stable (I hope) release binary: Download

Latest releases (may be a bit unstable): Download Releases

Download The Game Crafter templates for CardMaker


The above image was generated by the following input data row from a CSV:

Count Name image skill1 skill1value skill2 skill2value ability
1 Siani Malia che.png T 3 B 4 Ranged Battle: +1 on all die Rolls @[opt]

While there is some interpretation of the data by CardMaker to generate the final result, many of the values are direct references. The layout configuration in CardMaker controls the details of how to actually present the data.

Further Details on how the Elements for this Layout are configured

Guides / Help

Note: The code that is submitted may not match the latest binary.

Code Status

Compiles with Visual Studio Community Edition 2019

See more details in the Developers Section

TODO / Wishlist

Toxicity Level: Medium-High

  • Needs more comments
  • Needs warning cleanup
  • Needs some shuffling to allow for more narrow and focused unit testing
  • Needs more unit tests!
  • Every method should be implemented based on an interface and classes should implement hundreds of interfaces (just kidding!!!)

The Google Issue

If you plan to outright copy the parts of the code that operate with Google Spreadsheets please be aware that the source currently uses the client id that is associated with my CardMaker application. Code File

You will need to modify this code to correctly use your application.

Games Developed with CardMaker

CardMaker played some role in the development of these games (prototyping or otherwise). Let me know if you have a game that should be listed here.

Game Link(s)
Cardpocalypse & Cardpocalypse Steam Link
Cave Paintings
Context Switch
Executive Shuffle
Full Sun
Hard Stop
Iliad: Heroes of Troy
Root Cause Analysis Team
Town Builder: Coevorden & (Publisher page)


2009 - First created and publicly released CardMaker

20XX - Lots of bug fixes and features

2015 - CardMaker goes open source

2017 - CardMaker is finally marked as for no specific reason.

The Name

"CardMaker" and "Card Maker" are both references to the same application. I just never standardized the name.

Special Thanks

  • Eric Raué
  • Kolja Geldmacher
  • Everyone that has contributed to the project through emailing bugs and requesting features

Original Author

CardMaker was originally created in 2009 by Tim Stair.


I am providing code in the repository to you under an open source license. Because this is my personal repository, the license you receive to my code is from me and not my employer.