Programmer see, programmer do -- The automating of Lie Your Face Off!

The reason I love running the Unboxed Guest Post Scheme (Other than having others write my content for me Winking smile ) is the insight that I gain into the minds of other writers and designers, and nowhere is that more true that this post from John, the creative, code-writing mind, behind Lie Your Face Off.

As someone who has spent many an hour designing custom cards from a graphic point of view, this article does an excellent job of showing a different approach. Very interesting and full of hand hints for other designers, looking for ways to speed up their designs. Take it away John.

Programmer see, programmer do -- The automating of Lie Your Face Off!

When I set out to make Lie Your Face Off!, I reached for the usual game designer tools: scissors, pieces of paper, pencils, and erasers. When most games are getting off the ground, these are all you need to work out mechanics and gameplay. When it started to become apparent that I had something that actually worked, I needed to break out my usual set of graphic design tools, along with some others that I would need due to the nature of how card games are put together.

I’ve done a lot of illustration and graphic design work in the past, and I’m a big believer in Open Source software, so a lot of what I use should be familiar to designers and more technical graphics folks. I’m also a programmer, and I ended up automating a lot of the work in creating cards and such. What I’m going to do is run down the list of what I used to build Lie Your Face Off! and how you could use it, too.

Google Drive

When it comes to keeping track of what cards do what, how many there are of each card, and how cards in the game can relate to one another, nothing beats a spreadsheet. Since I use multiple computers throughout the day, having all of my data in a single location helps greatly. Google Drive makes it easy to create fully-functioning spreadsheets that allow you to keep track of things like card names, card powers, the perceived “power level” of the card, and flavor text.

Additionally, you can create text documents for storing rules, web forms to record remote user testing feedback, and you can also upload pretty much any other type of file you like. A friend of mine who is also designing a game uploaded his card layouts to Google Drive for me to critique.

Since Google Drive works on mobile devices, taking feedback while you’re out at a playtest even becomes easy. Just learn how to type fast on your phone’s keyboard!


It’s silly to not automate the card generation step in some way. nanDECK is a good tool to start that automation, especially in the early stages when you don’t need to worry about a lot of artwork or precise layout. It uses a mostly-directive based language for positioning standard elements onto individual cards, and it’s super-easy to get a basic set of cards built quickly for prototyping purposes.

When printing out cards, you’ll typically need each card as an individual image for sites like The Game Crafter. nanDECK handles this just fine. nanDECK can also be used to create PDF files of your cards. This is great when you want to distribute your cards for print and play, or for proofing large batches of cards all at once.

It provides some capability for loading in data files to build large sets of unique cards, but those capabilities are pretty weak, IMHO. That’s why, when it was time to use nanDECK, I also paired it with my favorite programming language to create the nanDECK files.


Ruby is a “Programmer’s Best Friend.” It’s a scripting language developed in Japan and making its way to the rest of the world in the 2000s. Ruby on Rails, a framework for building web application, is the most popular use of Ruby, but since it’s a general purpose programming language, it’s also used in many other applications. For Lie Your Face Off!, I used it to read my card data from Google Drive and to create the files that nanDECK would read in.

Knowing some programming can really make game design & development a lot easier, since it becomes easier to automate tasks. Since I hope to do more games in the future, I ended up breaking out the Ruby code that I used to build the nanDECK files into its own project (called a Rubygem) that myself and other can include into their projects.

I also used Ruby to automate other parts of card construction. When creating card art files for use with The Game Crafter, you typically have to desaturate the cards just enough to have them print out clearly. Combined with an image processing tool called ImageMagick, I was able to take the individual card images from nanDECK, apply the equivalent of a Levels adjustment to each card, then save it back out, ready for upload.



Inkscape is the premiere open source Scalable Vector Graphics (SVG) editor. Many artists use it for many purposes. I use it a lot in my illustration work, and if you’ve ever used the Paint Bucket tool, you’ve used some of the first open source code I ever wrote. I wrote that tool to make it easier to color my comic books, which I have been doing in Inkscape since 2005.

When I needed graphic assets for my cards -- the balloons, the backgrounds, the card backs, and the illustrations of the kids -- I immediately fired up Inkscape and started drawing. Everything but the illustrations were relatively easy to assemble. I managed to do most of those in an afternoon. It took much much longer to finish all the illustrations for the base game.

Part of the reason I built Lie Your Face Off! was because I wanted an art project, and I had been experimenting with game designs for about a year prior. So I wanted to take the most work on the illustrations, both to make them good and because I loved drawing them.


Keeping track of how things change throughout a project can be tough, unless you have a tool to do it for you. git is known as a distributed versioning system. It allows you to save the current state of a project whenever you like, and then push and pull the changes that occur to the project from one place to another. It’s a powerful tool that takes time to learn, but it makes a big difference in my game design work in two ways.

First, I can use it to save changes to all of my card assets, program code, and, sometimes, output files. These changes get stored in a repository, and I’m able to look back at the history of the project, to see how things progressed, or to look at an older version of a file.

Second, and more important, I can use it to create backups of the project. I can create another git repository on my backup computer in my home network, and after I’ve made changes to the project on my art computer and saved them to the local repository, I can push them to the backup computer. I now have two copies of my project, with full history, in two different locations. If something were to happen to one of the computers, I would still be able to recover my work.

How can this help me?

If you’re doing game design work and want to beef up your workflow, try the following:

  • If you’re not already using it, even for prototypes, learn nanDECK to automate card construction.

  • Learn the basics of git. Yes, it’s a command line tool. You don’t need to know a lot to take advantage of it. There are many guides on how to use git, and you can install it on any computer nowadays.

  • Learn a programming language like Ruby, Python, or node.js. I learned a few new things in Ruby working on the automation for Lie Your Face Off! The next card game I build will probably use node.js to handle a lot of the automation, just so I can get better at it.

If you want to see the end result of all of these tools, check out the Lie Your Face Off! Kickstarter. It’s running right now and it needs your help! Feel free to ask me any questions on Twitter, too. I spend too much time there.