It's not a pretty program. I have a directory containing a collection of individual board elements. You then give a text file specifying for each square of the board which elements you want, giving orientation, and in order of layers from bottom to top. My program then takes these, and composes the images on top of each other, then glues the result together, using Perl's Image::Magick thingy.
Good things.
Each board is just some short lines of text, so a very small file.
Providing you know the names of the element image files, it takes only a few minutes to type up a board.
Since the elements are glued together automatically, there is no chance of misaligning tiles, as can happen when dragging elements about in some graphical program.
Bad things.
On my machine, it can take a few second to assemble a 12x12 board, which can get a bit dull when you're tweaking things and making edits.
Unless told otherwise, the program chooses various things randomly, such as which floor/water/oil tile to use, and in which orientation. This makes the background interesting, but does mean that you won't get the same board twice. (That's only a bad thing if you want to reproduce a floor exactly.)
It's also rather easy to make a typing mistake, and ask for a tile to be rotated clockwise rather than anticlockwise. So you have to check the resulting board carefully for such mistakes.
Anyway, each to their own. Here is the Perl
file. And here are the input files for the Gear Box and for Mind The Gap, which has the most
complicated single board tile, namely Embankment station.