2016-03-24

Explore and Make Cards

Moving back to a game that has been getting little love in recent months, the one that I have currently codenamed Explore and Settle, I have decided to actually set up the cards on the computer, so I can quickly make whatever cards I want in whatever quantities, and start moving towards a bigger and better prototype than I had before. And I figured I might as well share how I do this, in case anyone is interested.

So, if you remember, the basic idea is that we have playing cards divided up into a square section, showing a terrain type (and possibly other features, though I'm not worrying about that right now) and the remaining part of the card is a tab which indicates a resource production type, which can end up being obscured by another card.
...a bit like this.

My tool of choice for this sort of job is a program called nanDECK, which provides a simple programming language designed to allow you to create game cards (or, potentially, other printed components).  A short script can combine with a data file (which can be a spreadsheet or a comma-separated-values file, which is what I usually use) to provide a way to easily (once you have learnt the basics) produce sheets of print-and-play cards.  The program also has a visual editor, but  I have never used it as it is not how my brain works best, so cannot comment on how effective it is.

As an aside, nanDECK is designed to run on Windows, but my PC runs a Linux operating system, which is inconvenient in this case. Fortunately we have the Wine software available; this is basically something that allows a lot of Windows software to run on Linux, and it is very handy.  Unfortunately it is often more complicated than just installing and running and, in the case of nanDECK, I had to spend a little while chasing down libraries from the Internet to make everything work.  It's all good now, and it works fine, though I'm afraid I can't go into how I did this, as it was quite a while back.

Anyway, a short bit of nanDECK code like this...

BORDER=RECTANGLE,#000000,0,MARKDOT
PAGE=21,29.7,PORTRAIT,HV
DPI=300
CARDSIZE=6.3,8.9

[VersionString]="Version 0.0"
[AllCards]="1"

ELLIPSE=[AllCards],1.5,2.5,3.3,6,#000000
ELLIPSE=[AllCards],1.7,2.7,2.9,5.6,#FFFFFF
RECTANGLE=[AllCards],0.3,0.3,5.7,5.7,#000000
RECTANGLE=[AllCards],0.5,0.5,5.3,5.3,#FFFFFF

FONT="Arial",6,,#000000
TEXT=[AllCards],[VersionString],0.5,8.5,5,0.5,RIGHT

...defines the size and shape of the card as well as the paper that I plan to print on, and lays down some background shapes.  Note that I also always put a version number on the bottom of the cards, which helps me keep my revisions in order, and also the "AllCards" bit is just a handy label for all the cards in my set, later on I will change it to something like [AllCards]="1-54" to define a 54 card deck.  That little script allows me to produce a basic template for the cards which comes out like this...

The intent is to stick a terrain image in the big square at the top, and put a resource icon in the outlined space near the bottom.  It's not the last word in graphic design, but the intent is simply to make something neat and presentable.

At the moment I am using five types of terrain for the game: grassland, forest, hills, mountains and sea.  I quickly made some rough terrain images that will be adequate until I find something nicer later on -- though I might not bother; we'll see.  I have also grabbed icons from game-icons.net to represent the basic resources: food, wood, stone, ore, gems.  These assets are all put into my project directory as PNG files (actually they are symlinks to the assets which are elsewhere, but that is irrelevant), and will be pulled in by my data file.

My card data file is pretty straightforward.  A spreadsheet might be easier in many ways, but I usually use a comma-separated-values (CSV) file because years of working on Unix/Linux command lines has pretty much made me happiest when using Unix tools to manipulate text files, and that is what these are.  So here's the contents of my data file for my first pass, just to check things work OK...

Quantity,CardTitle,Image,Resources
2,Grassland,tile_grassland.png,F
2,Forest,tile_forest.png,W
1,Mountain,tile_mountain.png,O
1,Mountain,tile_mountain.png,G
1,Hills,tile_hills.png,S
1,Hills,tile_hills.png,O
1,Sea,tile_sea.png,

And I can now add the following lines to my nanDECK code to pull in the data and put the images in the right places.  Note that for the resource icons I am using the ICONS directive which is a really useful tool to effectively turn letters into pictures, which is great.  I could actually also use this for the main image, which may allow for some interesting manipulation of the card data, but I'm not worrying about that this time.

LINKMULTI=Quantity
LINK=exploreandsettle_cards.csv

ICON=[AllCards],F,"icon_food.png"
ICON=[AllCards],W,"icon_wood.png"
ICON=[AllCards],S,"icon_stone.png"
ICON=[AllCards],O,"icon_ore.png"
ICON=[AllCards],G,"icon_gems.png"

IMAGE=[AllCards],[Image],0.5,0.5,5.3,5.3
ICONS=[AllCards],[Resources],2,6,2.3,2.3,1.5,1.5,0,T

And I changed the "AllCards definition to fit that I now have more cards in my set...

[AllCards]="1-9"

And, after building all that, here are the cards I have generated...

So I just need to figure out how many of each type of card I need and I'm done.

No comments:

Post a Comment