Overview
Introduction
The aim of protograf is to provide a general purpose program that allows you to design simple, scalable and reproducible text and graphics that can be used for prototyping the elements or components of a project, such as the creation of a board game, including the board, the tiles, the cards and so on.
Important
protograf is NOT a full-blown graphics editor — like the Adobe Photoshop, GIMP, or Inkscape packages — or a desktop publishing tool — like Scribus, InDesign, or Xpress — which allow sophisticated creation of complex graphics and text layouts; it does not attempt in any way to replicate their extensive functionality!
Who might want to use protograf?
protograf is useful for anyone that needs to work on a design in an incremental fashion, tweaking and changing as they go along. Doing this with a regular graphics package can sometimes be tedious — especially when common changes need to be made across many elements — and doing this with regular office software can limiting in other ways.
Simple designs that make use of regular-shaped objects or fonts, including fonts that themselves contain symbols or icons, are straightforward to implement in protograf; but more complex pictures or background images should be made, as usual, in a regular graphics design package and then added into your script by a link to the image file.
protograf also supports access of data in comma-separated text files — often called “CSV” files — and Excel documents; this can help separate out the design and layout from the content - the text and the numbers - that appears in the design.
Why not use a professional graphics package?
Obviously, if you’re a designer who uses a graphics package as an everyday tool, then that will likely suit your needs perfectly.
However, there might be a reason to use something simpler. Daniel, of https://daniel.games/ has this to say about making a game prototype which should be ready to show to a wider audience:
The game should be neat. This means it’s simple, clear, and not ugly.
Your layout (of cards and other objects) should just be flat areas of muted colour, with text on top of it. It’s simple and functional.
Don’t use textures, bevels, gradients, realistic shadows, or other embellishments.
The best design is design done by a professional. The second-best design is no design at all, which is what you should do.
In the same way, icons should just be simple, flat-colour shapes. Just go and get free, basic icons from https://thenounproject.com/ Make better ones later, if you’re good with graphic design.
(See more good advice at https://daniel.games/the-work-of-game-design.htm )
So, protograf aims to help you achieve the above — the “second-best design”!
As an example of this approach, here is a quote from a game designer:
“In May 2023, I talked with Albin, who runs Game Prototyper, a local Swedish shop for creating prototypes and small print-run games. Albin found a good illustrator, Marco Aurélio from Brazil, who created nice art, taking my rough prototypes into something really beautiful. Albin himself did most of the graphics design putting it all together.”
Magnus Karlsson, from his “Designer Diary: The Plank”, at https://boardgamegeek.com/blog/1/blogpost/176994/designer-diary-the-plank
To see how a professional graphic designer develops production-ready design of game components, watch this interview with Brigette Indelicato at https://www.youtube.com/watch?v=_PfOjSAEFUY
How do I use protograf?
In general, what you do is type a set of instructions — which protograf terms a script — into a file. You save that file on your computer, and then use Python to create your output — a PDF or PNG file — containing the results of those instructions; hopefully the design that you intended to make!
As your design changes and evolves, you can add or change instructions, or add new information for your cards, and then quickly recreate the new output. Because protograf scripts are very small, its easy to save versions as you go along.
How does protograf work?
protograf is written in Python; the reason being that this is a relatively easy-to-use programming language that is often used for scripting or automating routines — both by itself and as part of larger systems. Python has access to numerous packages that help avoid having to write code from scratch.
Note
Python is not a speedy language, but its still fast enough to use for protograf
protograf uses various supporting Python packages; the most important of these is PyMuPDF which supports the creation of vector graphics in a PDF document.
protograf is designed in such a way that you don’t need to know how to program in Python in order to use it; but if you are a Python programmer then you can certainly treat this as you would any other package and add in your own additional Python code or logic to your scripts as needed.
What does protograf do?
protograf is built on top of the PyMuPDF Python library which provides the underlying routines that allows a Python program to draw vector graphics and generate a PDF output — or export to PNG/SVG/GIF images.
protograf provides a set of commands that will draw graphics - these are shapes such as circles, rectangles, stars, and many more - as well as lines and text. Each of these can be customized in terms of their color, size, shape etc. From these primitive graphics, more complex ones can be built up.
protograf also provides commands to allow to layout shapes onto various “virtual” grids, which in turn can be used to support visible grids. There is a strong emphasis on hexagons and hexagonal grids, as I really just enjoy working with this particular shape.
protograf can also generate cards, using data from Excel or CSV files, or other sources such Google Sheets or the BoardGameGeek API
protograf is not aimed at a “professional software level” for creating production-ready graphics and does NOT handle “special effects” such kerning, skewing, image tiling, gradient colors, fancy text-effects (e.g. drop shadows; 3D), etc. etc.
How do I get started?
Its suggested that you first get everything set-up and tested.
Now read through the basic concepts and script anatomy before trying out a worked example. After that, browse through the sections listed in the Guide, according to what you have in mind, or look at the various Examples for inspiration.