Hacker News new | comments | ask | show | jobs | submit login
Show HN: Card Proxy Generator – Generate printable game cards from JSON (mitchkeenan.com)
162 points by konamacona 11 months ago | hide | past | web | favorite | 44 comments

Just got off work and saw all the comments. I wrote this up a few months ago to make custom cards for a mafia/werewolf type game I've been playing at work (as some guessed). It's 100% client side and uses jsPDF[0]. You can find the (very rough) source on my github[1]. Future plans include better styling and some changes to allow easier clearing of the template. Thanks!

[0]: https://github.com/MrRio/jsPDF

[1]: https://github.com/konamacona/cardproxy

I like the simplicity of the UX, I would find it much more usable open source so I can adjust the template easily.

I wrote a similar thing for my board game site [0], using yml files as data sources with jekyll includes to generate the html and a html2canvas conversion to make printable images of individual cards that I have to manually put on a print-sheet -- not quite as streamlined as this, and I would love to learn from the rest of this person's flow architecture on how to generate a pdf, make it downloadable, expose the json editor. I know I could learn each of these on my own, but this is so close to my usecase it would be nice.

[0]: https://gitlab.com/keerthik/dicestorm/

I’d probably create a tex-template for the cards, populate it with data from the json/yml-input and run it through pdf-latex.

You could probably create the entire thing as an bibtex-template and even use that to build the tex.

Headless chrome and a print-to-pdf are the way to go, here. There’s a library (whose name eludes me) which wraps it all up very nicely in a JS lib. If you’ve got the html, generating a pdf automatically shouldn’t be more than one screen of code and a docker container.

Edit: the lib is puppeteer. https://github.com/GoogleChrome/puppeteer/

I'm surprised this community is not more adamant about source being shared alongside a "Show HN" post. It seems like a no-brainer to include source when showing a group of software enthusiasts your non-commercial project.

I'm using Squib (https://github.com/andymeneely/squib) for this at the moment.

I have several of my current prototypes in Squib, with CI where it builds the artifacts (PNGs of each card and a PDF).

I'd like to one day set it up so it pushes the artifacts to Tabletopia (https://tabletopia.com/), but I haven't found the time yet.


Boardgamegeek has a list of card design resources:


Most are of the painstakingly-click-and-type variety, though. There are a handful based around a more site-generatorish workflow that look pretty sweet:




There's a bunch of (usually pretty arcane) software for generating cards. I like this because it takes JSON, as opposed to having to click around a GUI.

The real challenge though is to get a nice design. You should be able to put in some templates/generate some templates, and add image URIs/upload images. That would be truly awesome.

Agreed 110% on the ability to include images, maybe a key for an image URL and another key for the location on the card using a simple grid-reference?

Great suggestion, hope OP sees it because I'm already very interested in using this tool.

Awesome! Just the tool I needed. I am developing my own board game and the hustle to create the cards to print and test was getting in the way of actually thinking about the game and the rules.

A small suggestion: add a image-top and a image-bottom fields where you put a URL and the PDF includes the image on the card.

If you want a more featureful tool, but still data-oriented and built with a programming-slant, I highly recommend Squib[1]. It has tons of rendering and processing options, and fairly thorough documentation (unlike pretty much everything else out there).

[1] - http://squib.rocks/

Thanks, this looks like exactly what I need. I hacked together something similar in python a few years back, but it wasn't as elegant and general.

I built something quite similar to this for my brother, who plays Magic: The Gathering. He likes to build decks and test them before he commits to buying the cards in it, so he asked if I could help him generate printable decks to test with. Luckily, somebody has already compiled all of the Magic: The Gathering seasons and published it openly here: https://github.com/mtgjson/mtgjson.

My previous system was a hacky Python-based HTML pre-renderer that was annoying to maintain - I was in the process of rewriting it but have dropped off on development recently. You can see a WIP of it here: https://curtislusmore.github.io/mtg/

I imagine it'd be pretty straightforward to convert that JSON into a CSV for InDesign's Data Merge feature, once you're past prototyping and ready for product-ready printing. http://blog.ironmarkgames.com/creating-prototype-cards-using...

Nice app. I guess this is a perfect match for https://remotestorage.io/ integration. People would be able to save and tweak their card templates without worrying.

A while ago I made a "Micropoly" board game about the Microsoft Monopoly, with cards for various dot-com companies (Copyleft (L) 1999 Free Monopoly Foundation), using an xml file to define the cards and board and an ugly Perl script to render them with PostScript!


>Update: I've written an ugly "openopoly.pl" Perl script, and a "micropoly.xml" data file, that describes the specifics of the game. The Perl script reads in and parses the XML database, and writes out PostScript and HTML to render the graphics and web pages. It embeds EPS files with images and cartoons in the PostScript file, and then runs it all through GhostScript, to render out PDF and JPG files with the printable images of the board. It currently writes out one HTML file with links to the small and large pictures of all the property cards, and soon it will write out a web page for each property, and link them all together, as well as an image map for the entire board. Most of the logos, cartoons, and other graphics haven't been put in yet, but the basic functionality for producing the game is there. This is work in progress, but here's a preview of the automatically generated web page index of properties, the full sized board micropoly-board-whole.pdf [1,672k], the paginated board micropoly-board-split.pdf [10,028k, sorry but I'll optimize the PostScript not to draw clipped images and it will reduce in size], and the printable cards micropoly-cards.pdf [5087k], as well as the micropoly.xml file from which it was all generated.




The idea (which I never finished but encourage anyone else to pick up and run with) was to develop a fully skinnable parametrizable Monopoly compatible game template (or variants like Anti-Monopoly), that you could print out and glue onto cardboard, or even play online!


Monopoly is essentially the original "Open Source Game" designed by Elizabeth Magie and shared among Atlantic City Quakers. Then it was illegitimately taken over and patented by a giant corporation. Parker Brothers' story about Charles Darrow was marketing bullshit.


There's also an interesting story about Ralph Anspach's decade-long "Anti-Monopoly" lawsuit:






>Also in the 1970s, Professor Ralph Anspach, who had himself published a board game intended to illustrate the principles of both monopolies and trust busting, fought Parker Brothers and its then parent company, General Mills, over the copyright and trademarks of the Monopoly board game. Through the research of Anspach and others, much of the early history of the game was "rediscovered" and entered into official United States court records. Because of the lengthy court process, including appeals, the legal status of Parker Brothers' copyright and trademarks on the game was not settled until 1985. The game's name remains a registered trademark of Parker Brothers, as do its specific design elements; other elements of the game are still protected under copyright law. At the conclusion of the court case, the game's logo and graphic design elements became part of a larger Monopoly brand, licensed by Parker Brothers' parent companies onto a variety of items through the present day. Despite the "rediscovery" of the board game's early history in the 1970s and 1980s, and several books and journal articles on the subject, Hasbro (Parker Brothers' current parent company) did not acknowledge any of the game's history before Charles Darrow on its official Monopoly website as recently as June 2012. Nor did Hasbro acknowledge anyone other than Darrow in materials published or sponsored by them, at least as recently as 2009.

Not sure if this supports mobile, but I’m just getting a blank new window when I hit “Save”.

Expect a pdf file download. Worked on my phone.

("Save" should be "Download" or something else more clear.)

Yeah, I wasn't sure what to expect after hitting the button. It does work for me in Mobile Safari, but not Chrome (iOS).

This is a super cool idea, I know it would be also be super useful for teachers

This is pretty cool!

it will be great to have utf8 support.

what do you use this for?

Seems like it is meant to generate printable pdfs with game gards for RPGs.

When you click save it downloads a pdf that you can print.

yeah, I'm just curious what OP uses it for herself...what made him make it in the first place!

I was just introduced to the Fluxx card-game system this weekend; it's a system with different variants, Zombies, Monsters, there's even a version for the TV show Firefly.

Looking at the cards generated they seem to resemble the style/format of Fluxx and I wonder if OP plays themselves. I for one find it to be really neat, and may even use it myself for my weekly table-top night.

Aha, great point! Fluxx is fantastic...it reminds me a bit of Nomic [1] and 1000 Blank White Cards [2].

Have you tried making your own Fluxx deck?

[1] http://legacy.earlham.edu/~peters/writing/nomic.htm [2]

Not yet but I very much want to; I'm thinking of doing one for the Star Wars universe :D

I'm not the OP, but as someone who dabbles in tabletop game design, I find these kind of generators very useful for game prototyping. (The one I've used most in the past is called Squib[1] and it's an open source Ruby codebase and very configurable.) It's often a huge pain to write prototype cards by hand, especially when you have to do it multiple times while iterating the design. (Though in some cases a generator won't cut it, and you need to do it by hand anyway.)

That said, since this is HN, it'd be nice to have some explanation of the technology behind the generator, too. Hopefully it's forthcoming.

[1]: http://squib.rocks/

This is neat. I'm curious, how does printing work after the prototyping stage? Would you usually find a publisher, who handles it for you? Are there other tools like Squib for making homespun tabletops?

How printing goes after prototyping all depends... Some people shop their prototypes to publishers, some get the game to a more advanced state before shopping it to publishers, others self publish, and still others release it as print&play. There are various companies that'll print small runs/single runs of nicer cards (sometimes indistinguishable from "pro" cards), and some of those companies will even manufacture other components too, like boards and gamepieces.

I've printed a few print&play games on sites like printerstudio.com and received some really nice cards. It's a bit pricier than you'd want if you were going to get it manufactured for sale, but for a nice copy or two of something you're never really going to get published, it can be worth it.

There are other tools for making homespun tabletop games (some of which have been mentioned in other comments here), but Squib is pretty much the best if you want functionality/customizability and can handle doing stuff in Ruby. If I didn't already know it pretty well, I'd probably use the OP's site, though. The main thing you want when prototyping is to iterate a lot, so the easier one of these programs is to use, the better. OP's site, being web-based, is definitely easy... no need to install, works wherever a web browser does (lots of game design programs are Windows only).


Not my company, but one ran by a friend I used to game with in the early 2000's, they print some very high quality cards at a good rate.

Looks like a variant of mafia or werewolf: https://en.wikipedia.org/wiki/Mafia_(party_game)

Developing board/card games would be my guess.

The default example appears to be a mafia-style game.

Okay, not sure why it’s on top of HN.

Please don't post unsubstantive dismissive comments to HN, especially in response to someone's work. If you don't like it, there are many other interesting things to read here.



It combines quite a few popular trends:

- diy

- paper / offline

- game / boardgames

- simple & clear UI w/o flashiness

- not monetized / no data slurping / no email required

- no hype, no buzzwords

Not to mention that it just works. As to who needs it, I have no clue.

edit: Also the source is not minified or compiled.

Because we like people who make things?

Basic programming tasks amaze HN nowadays

Just because the task is basic does not make it uninteresting.

People dismiss so much stuff with "I could have done that...". Well, you didn't, and they did. So there.

(In this case, the task is probably more annoying than you think. There's a lot of little details involved in getting the alignment correct, getting the fonts wrapped, generating the PDF, etc.)

Not everybody has to be amazed by the programming.

I guess

-some upvote because they like the idea (it could be monetizable via paid printing services, it lends itself to social - sharing of decks etc),

- some found it immediately useful

- some just found it refreshing that someone created something small to scratch an itch instead of going viral on a new blockchain.

I'm a tabletop game designer. This is useful to me. Other similar tools are garbage.

Therefore, I upvote.

Please do not post snarky dismissals to HN, especially in response to someone's work. Even if you're right, there's nothing wrong with people making interesting things out of the basics, nor with posting their learning projects here. There is, however, something wrong with taking swipes at others.



Edit: since you've repeatedly posted uncivil and unsubstantive comments and ignored multiple requests to stop, I've banned this account. If you don't want to be banned, you're welcome to email hn@ycombinator.com and give us reason to believe that you'll follow the rules in the future.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact