Commercial Board Games and Maps

These examples are meant to demonstrate the type of output you can expect to create with protograf. They are not meant to be exhaustive or comprehensive!

Bear in mind that the images shown in these examples are lower-resolution screenshots; the original PDFs that can be generated from the source scripts will demonstrate full scalability.

Important

Note that there is no intention to infringe on copyright; these are partial examples designed to show possibilities and not to encourage copying or reproduction of any copyrighted game material.

Squad Leader

Title

Squad Leader Modular Board Section

Script

squad_leader.py

Discussion

This example shows how to construct a board for a wargame - in this Avalon Hill’s “Squad Leader” - using a hexagonal grid.

The grid’s properties, such as alphanumeric coordinates and hex column offsets are used for overall appearance; the use of a blank white rectangle enables the “half-hex” effect at the lower edge of the board.

Screenshot

../_images/squadleader_blank.png

Orion

Title

Orion Game Board

Script

orion_game_board.py

Discussion

This example shows how to construct a board for the commercial board game “Orion”. It is a fairly simple script, as the board is similar to many abstract boards; a so-called “hexhex” shape.

The background is just stacked Circle s of differing fill colors and the main board is a HexagonalGrid of circular shape. Of interest is that the “corner” hexagons are not displayed because they are listed as masked.

Screenshot

../_images/orion_game_board.png

Catan

Title

Catan Hexes Board

Script

catan.py

Discussion

This example shows how to construct a board for the commercial board game “Catan”. It uses the HexHex command to layout the game’s hexes (Hexagon shape) and discs (Circle shape). A single large hexagon forms the surrounding sea.

All the pieces - hexes and discs - are predefined in the script (without any x or y settings) and then laid out using the shapes property of the HexHex grid, which puts them in sequence into the “ring” — centred at their correct locations.

An interesting exercise would be to write a script that generates random board setups!

Screenshot

../_images/catan.png

Kensington

Title

Kensington Game Board

Script

kensington.py

Discussion

This example shows how to construct a board for the commercial board game “Kensington”.

This is a more complex example that makes use of a Python function to draw each of the seven sets of the hexagon/dodecagon pairs.

Each shape in the pair is connected using the links property of a joining Line.

The key attributes of each pair — color and angle relative to the centre one — are stored in a list, and then a Python loop is used to process each in turn.

Screenshot

../_images/kensington.png

Adventurer Conqueror King

Title

Adventurer Conqueror King RPG Blank Map

Script

ack_map.py

Discussion

This example shows how to construct a blank map for the “Adventurer Conqueror King” roleplaying game.

The map is constructed of two hexagonal grids; the larger hexes have fill set to None so that the small hexes are visible through it. The use of white rectangles enables the “half-hex” effect at the lower edge of the board.

Screenshot

../_images/ack_map.png

Traveller: Draft

Title

Traveller RPG Map

Script

traveller_draft.py

Discussion

This example shows how to construct a blank sector map for the “Traveller” science fiction roleplaying game.

Its a simple hexagonal grid, with a numeric coordinate system. The “edges” are just drawn with lines.

It might be possible, in future, to expand this to show how star systems could be depicted on it; something along the lines of the Warp War`_ example.

Screenshot

../_images/traveller_draft.png

Traveller: Black

Title

Traveller RPG Map

Script

https://github.com/gamesbook/protograf/blob/master/examples/boards/commercial/traveller_black.py

Discussion

This example shows how to construct a blank sector map for the “Traveller” scifi roleplaying game.

Its a simple hexagonal grid, with a numeric coordinate system. The “edges” are just drawn with lines. The styling is black because of the fill used for the hexagons; when testing, however, it could be better to use a lighter color as this using much black is not very “printer friendly”.

It might be possible, in future, to expand this to show how star systems could be depicted on it; something along the lines of the Warp War example.

Screenshot

../_images/traveller_black.png

Warp War

Title

Warp War Map

Script

warpwar.py

Discussion

This example shows how to construct a map for the “Warp War” game.

The example based off an image created by Rick Smith and posted to the https://groups.io/g/warpwar/ forum on 3 June 2024. This is not a complete copy of that map - it just serves to illustrate how elements of such a map could be created.

This is a fairly complex layout as most items need to be placed with millimetre accuracy using the Location() command to detail which shapes go into which hexagon grid location.

The green lines joining hexagons are created with the LinkLine() command; by default this joins the centres of two locations in the hexagon grid; but use of the optional “move x” and “move y” settings allows the line endpoints to be adjusted within their respective hexagons.

The use of hexagon borders enables the drawing of purple lines which represent the edges of a nebula; unfortunately, its quite tedious to define all of these one-by-one!

The hexagon numbering for this game, which protograf terms diagonal is fairly unusual. It also uses upper-multiple for the coord_type_y property, as opposed to the more conventional spreadsheet alphanumeric style.

The hexagon identifers across the top and side are created with a Sequence( command; they are not “built-in” to the grid. Not many games seem to use these, or else they use them in a wide variety of ways, so there is currently no automated way of achieving this.

Hint

The full map script can be found at warpwar_full.py but it uses various Python Commands in order to simplify the map generation; it may be of interest if you want to see how protograf can pull in such commands.

Screenshot

../_images/warpwar.png

Underwater Cities

Title

Underwater Cities Game Board

Script

underwater_cities.py

Discussion

This example shows how to construct the board for the commercial board game “Underwater Cities”. This is not a complete copy of that board - it just serves to illustrate how elements of it could be created during the prototyping stage.

The script for this example is one of the longest but it is not really that complex, as most shapes are simple rectangles stacked in the correct order, with the right fill and line color & styling.

Some items of interest:

  • Extensive use of the Common() command to avoid duplication between similar items

  • Use of an SVG world map to create the background layer

  • Mix of custom images, free icons and protograf to create the smaller graphic elements, such as the locks and wreaths

  • Use of the RectangularLocation() command to lay out the primary scoring track; the Layout() command makes use of multiple repeating shapes for the color changes at different intervals

  • Use of Sequence() command to create the player order track, (in the middle) as well as the different rounds (the dark, vertical track on the right)

Screenshot

../_images/underwater_cities.png

The Honorverse

Title

The Honorverse Star Map

Script

honorverse.py

Discussion

This example shows a map with the locations of stars described in the “Honor Harrington” science fiction series, written by David Weber, and sometimes termed the Honorverse

The backdrop to the series is that FTL travel is possible; both with spaceships travelling through hyperspace as well as through “wormholes”. However wormholes are very limited in number, and so the stars that have both habitable planets, as well as multiple wormhole junctions, become obvious focal points for development and expansion. The main character in the series is from such a star system called “Manticore”; the centre of a “kingdom” of planets loosely modelled after the British Empire in the nineteenth century.

The data is sourced from:

Any errors in transcription are mine — and NOT the original sources!

Some items of interest:

  • The “stars” are just point locations on the grid; a Python loop processes them and styles each according to its information; using if and else, while the ZapfDingbats font provides icons used to show the star.

  • The names of stars allow their point locations to be “looked up” in the list, and the stars’ locations form the start and end points of lines for the connecting wormholes (red lines).

  • The script has a boolean “toggle” (called DARK_MODE) which can be set to change the background color of the map to black and the stars to white, as can be seen in the “zoomed” example.

Screenshot

../_images/honorverse.png

“Zoomed”

../_images/manticore.png

Terraforming Mars: Ares Player Board

Title

Terraforming Mars: Ares Player Board

Script

https://github.com/gamesbook/protograf/blob/master/examples/boards/commercial/tm_player_board.py

Discussion

This example shows a version of the player board from the “Terraforming Mars: Ares” card game.

It is not an exact reproduction and omits some of the text.

Some items of interest:

  • Use of the Common() command to avoid duplication between similar items

  • Use of a font derived from the https://game-icons.net/ to create the small graphic elements, such as the heat and tree symbols

  • Use of the Sequence() command to create the various tracks, as well as some of the different elements (arrows and money) on the lower edge

Screenshot

../_images/tm_player_board.png