Exploit: Zero Day - Headless Swarm, the first season

The Majesty of Colors Remastered

How to Make Game Code Business Cards

 How to Make Game Code Business Cards

When we decided to go to the GDC this year, we knew we wanted to give out access codes to Exploit: Zero Day when we spoke to people. The easiest way to give out a code to EZD is with a link that includes the code and will guide the player to register, then apply the code.

I set out to create labels containing both a QR code and a shortlink that could be affixed to the back of our business cards. It took quite a bit of trial and error to make this process smooth, but a combination of a Google Spreadsheet, Excel, and Microsoft Word 2013/365 got the job done. Unfortunately, this process won't work with Word 2007 or 2010.

All this work is worth it, though, to have the back of my business card look like this:

The back of my business card with a fancy label on it.

Join me on this sweet and technical ride of mail merging.

Basic Spreadsheet Setup

Create a Google Spreadsheet with your access codes and CONCATENATE() links for them. We tag our links with campaign information, and differentiate the shortlink from the QR code with the utm_content parameter.

For an tagged link, your formula will look something like:

=CONCATENATE("https://exploitzeroday.com/store/redeem-code/?code=", A2, "&utm_source=InPerson&utm_medium=business_card&utm_campaign=GDC&utm_content=shortlink")

If not tagged, it would just look like:

=CONCATENATE("https://exploitzeroday.com/store/redeem-code/?code=", A2)

A good start is to have three columns, "Access Code", "Long Shortlink", and "Long QR Link", like so:

The Google Spreadsheet after the initial three columns have been populated.

(First come, first served on those two codes.)

Fill down for however many labels you wish to make.

Shortening Links

From here, we need shortened links. We use Bitly, but there are certainly other services. Bitly provides an API for shortening links, but limits the rate at which you may use it; if you're going to generate more than 100 links in your spreadsheet, you'll want to do it in batches.

There are a few ways to get the shortened links, but here's one approach.

  1. Generate a generic access token through your Bitly account settings and copy it somewhere.
  2. Back on your main sheet, create columns for "Short Shortlink" and "Short QR Link".

    Access Code Long Shortlink Short Shortlink Long QR Link Short QR Link

  3. In the two new columns, enter this formula, changing the column references where necessary and replacing "ACCESSTOKEN" with the one you generated:

    =IF(ISURL(B2), IMPORTDATA(CONCATENATE("https://api-ssl.bitly.com/v3/shorten?format=txt&access_token=ACCESSTOKEN&longUrl=", SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE(B2,"%","%25"), "=","%3D"), "&","%26"), "?","%3F"), "#","%23"))), "")

At this point, you should have all five columns populated.

Migrate to Excel

Copy + paste the contents of the Google Spreadsheet into a new Excel file. Don't export — it'll include formulas that break. All you need are the final results.

Label Creation

To fit on the back of a standard business card, I bought 1" x 2 5/8" labels, like the Avery 8160 labels.

  1. In Word, create a new document.
  2. Under Mailings, choose Start Mail Merge, then Labels, and pick your label make/model. For the Avery 8160s, use the 5160 template, or whatever's on the label's packaging. Your blank document should split into a table of spaces for you to insert information.

    Only work in the first label. We'll use the merge tools to push changes to the rest of the labels on the page.

  3. Under Mailings, choose Select Recipients, then Use an Existing List. Pick your Excel file. Your document should then look like the following:

    The Word document after we've begun the mail merge.

  4. Now you should have column names available to you under Mailings -> Insert Merge Field. Try inserting your "Short Shortlink" field.

  5. Choose Update Labels, which should propagate the changes into all the labels. If you want to see it with data populated, click Preview Results. Toggle Preview Results off to continue working.
  6. To get the QR code into the label, we'll use Word 2013/Word 365's DISPLAYBARCODE merge field. (This field doesn't exist in Word 2007 or 2010.) Press Ctrl-F9 to enter a merge field manually, and between the braces, type DISPLAYBARCODE ". That's DISPLAYBARCODE, then a space, then a double quote.
  7. Go to Mailings -> Insert Merge Field, then pick Short_QR_Link. (Just typing it won't work.)
  8. Put in the following: " QR \q 2 \s 55. The double quote closes out the Short_QR_Link merge field, "QR" states what kind of barcode it is, "\q" is what level of error correction to use, and "\s" scales the barcode image down to 55%. Microsoft has the full set of options.

    The entire entry should look like { DISPLAYBARCODE "{ MERGEFIELD Short_QR_Link }" QR \q 2 \s 55 }.

  9. Press Alt-F9 to see the QR code. If it's too big, tweak the scaling factor.

Now the two important parts are in the label: the codes. What's left?

Styling and Words

You probably want more than just a QR code and a short link. Unless your card is already game-specific, you might want the name of the game, a "Go play now!" suggestion, to use your game's primary font, etc.

This takes some trial and error. Formatting text in Word can be fiddly and annoying, and you don't want to do anything that will change the sizes of the entire label cell.

I've had the best success with putting a new table into the individual label, removing cell margins in the tiny table, and dispersing my material in it. Here's an example (I'd hide the borders before printing).

An example label with a table inside of it.

Be patient. Use "Undo".

Propagate and Preview

Once it's about right, you can click Update Labels to update the rest of the sheet, then Preview Results to see the sheet with data included. If your formatting isn't quite right, toggle off Preview Results and make your tweaks until it's awesomesauce.

A couple of gotchas to watch out for:

  • Short links that wrap. For the layout pictured above, I typically have to tweak the font sizes or cell sizes to make sure that all the short links fit on a single line.
  • QR code size and clarity. Check with your phone before you print that your QR codes work and (if it's not obvious to the naked eye) that they're different on each label. Just spot-checking a few should be fine.


Fighting with your printer to get the labels printed is all on you.

Want to Play Exploit: Zero Day?

You could come to a local event and get one of these labeled business cards from me for access, I suppose. Barring that, you can register for the monthly newsletter and play a publicly-shared system or cluster.

If you're a member of the press, use distribute() to request a key.

Previously: Next:

Similar entries

comments powered by Disqus


Pingbacks are open.