SnappyMap is a command-line utility that converts silhouettes into Total Annihilation map terrains. Give SnappyMap a heightmap image, a tileset, and an appropriate configuration file, and it will piece together a terrain that approximates that image out of the available tiles.
SnappyMap currently only supports land/sea island maps, and can't do cliffs or hills. Maybe it will one day, but it's not likely.
SnappyMap.exe [-s NxM] [-t <tileset_path>] [-c <config_file>] <input_file> [output_file] -s, --size (Default: 8x8) Sets the size of the output map. -t, --tileset-dir (Default: tilesets) Sets the directory to search for tilesets in. -c, --config (Default: config.xml) Sets the path to the section config file. --fuzzy Set to use fuzzy matching for section selection. By default, section are picked randomly, but setting this option uses a crude vision algorithm to select sections similar to the corresponding area of the input image. --help Displays the help screen.
SnappyMap expects a black and white image file or heightmap. Any color above the sealevel defined in the config file is considered land, and any color below is considered sea.
SnappyMap will search for map sections within the specified directory that are listed in the config file. SnappyMap also searches inside any hpi/ufo/etc. archives present. When searching inside archives, the name of the archive itself is ignored. Section foo/bar inside archive /path/to/tilesets/baz.hpi is considered the same as section /path/to/tilesets/foo/bar.
When SnappyMap creates a map, it first determines which type of sections it needs. It then selects the approximately best fitting section of that type. The config file's primary purpose is to tell SnappyMap which tiles it has to choose from.
The format is XML, editable with any text editor.
SnappyMap includes a few pre-made config files for Cavedog standard tilesets. These can be found in the Configs directory.
The node structure is:
<SectionConfig> # root node <SeaLevel> # the sea level for this tileset <SectionMappings> # a list of <SectionMapping> nodes <SectionMapping> <Type> # the type of this group of sections <Sections> # a list of <string> nodes <string>...</string> # path to a section starting from the tileset directory
SnappyMap assumes that all sections are 512x512. If you add other sizes of section to the config file, expect odd results.
The config file needs to list at least one tile of each of the following types:
"Reflexive" coasts are coasts where 3/4 of the tile is occupied by land, forming a coastline with a reflexive interior angle.
"Island" sections that are surrounded on all sides by sea
can be put into the sea category when using the
SnappyMap will prefer flat sea sections for open ocean,
but will choose island sections for areas containing land too small
to be constructed from coastal sections.
SnappyMap is a just-for-fun project written in C#. The source code can be found at: https://github.com/MHeasell/SnappyMap
SnappyMap uses the Command Line Parser Library for handling command-line input.
GitHub (Latest Sources, Updated Docs): https://github.com/gsscoder/commandline
Codeplex (Binary Downloads): http://commandline.codeplex.com/