Map exchange string format

From Official Factorio Wiki
Revision as of 03:27, 8 January 2017 by Lexxy Fox (talk | contribs)
Jump to navigation Jump to search


This is a technical description of the map exchange string format, used to share map generating configurations with other users.

The outer layer of the map exchange string format includes three angle brackets on either side: ">>>" and "<<<", which must be present for Factorio to accept the string. Between those two tokens is the map exchange data, encoded using base 64 as defined by RFC 4648 (or 3548, 2535, 2045, 1421, et al.) All numerical values are stored in unsigned little-endian format. This document will use the terms "int" to refer to 4 byte numbers and "short" to refer to 2 byte numbers. Strings are Pascal-style int length prefixed strings. The format described below is valid at least for Factorio 0.14.x, other versions may use a different version scheme.

short[4] The version string of Factorio that generated this string, used to determine encoding format.
byte Water frequency.
byte Water size.
ore_def[int] An array of ore definitions (described later). The array length is stored as an integer prefix. Factorio doesn’t care what order these are in, but it always alphabetizes during export. Vanilla has six ores: coal, copper-ore, crude-oil, enemy-base, iron-ore, and stone. Unknown ores are ignored and missing ores are set to their defaults.
int Map seed.
int Map width.
int Map height.
byte Starting area size.
byte Peaceful mode. Enabled if set to 1, disabled otherwise.
int CRC32 checksum of all preceding data, as defined by ANSI X3.66 / FIPS 71 / ITU-T V.42 (the same one used by zlib, ethernet, etc.)

Ore_def Ore Definitions

string
byte Ore name.
byte Ore size.
byte Ore frequency.