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!
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.
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.
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.
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.
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).
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/
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.
>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.
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.
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.
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).
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.
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.)
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.
[0]: https://github.com/MrRio/jsPDF
[1]: https://github.com/konamacona/cardproxy