To update a tileset from 2.4 to 2.5 you must add some new graphics and update the file format strings.

The .tilespec file[]

  • Set format of .tilespec file to options = "+Freeciv-2.5-tilespec".

Use 'TRUE' and 'FALSE' instead of '0' and '1' for booleans[]

Here the list of affected settings:



'is_blended' renamed to 'blend_layer'[]

Change all is_blended = 1 type definitions to blend_layer = 1. (It was renamed to make it clearer that it's not a boolean option -- it specifies a layer number -- but there's no change in the meaning.)


  • The single roadstyle definition affecting all roads has been replaced by per-road-tag definitions. Remove old roadstyle = x setting and add section like this instead
styles =
    { "name",  "style"
      "road.road",   "AllSeparate"
      "road.rail",   "AllSeparate"
      "road.maglev", "AllSeparate"
      "road.river",  "River"

where "name" refers to road gfx tag. Old numeric style values have been replaced with textual values: 0 -> "AllSeparate", 1 -> "ParityCombined", 2 -> "AllCombined"

Tileset type[]

Old boolean setting is_isometric has been replaced with generic type setting. At the same time meaning of iso in conjunction with hex has been reversed.

For square tilesets that had is_isometric true, or hex tilesets that had it false:

type = "isometric"

For square tilesets that had is_isometric false, or hex tilesets that had it true:

type = "overview"

Full height in non-iso Hex tilesets[]

Non-iso Hex tilesets had excessively high Full height meaning that origin of some sprites was far above the tile's top and thus tilesets needed a lot of transparent padding on top part of those sprites. Now Full height in non-iso Hex tilesets is same as Normal height defined in .tilespec. The old formula was 3 * normal_tile_height / 2. If you had origin of the sprites set to match old code, you should now remove 1/2 * normal tile height pixels from the top of them to make their height match normal tile height. Remember also to change grid dy value to match in .spec file. For example hex2t tileset with normal_tile_height defined as 72 in the tilespec needed 36 pixels cut from the affected sprites that earlier were 108. Sprites affected are cities and all the smaller icons such as hitpoint bars, unit activity icons, city size indicators. Units and terrains are not.

Default government icons[]

Default government icons have been moved from misc/small.spec to misc/governments.spec. If your tileset has been relying on misc/small.spec providing those, you should now add misc/governments.spec to files list.

Default specialist icons[]

Default specialist icons have been moved from misc/small.spec to misc/specialists.spec. If your tileset has been relying on misc/specialists.spec providing those, you should now add misc/specialists.spec to files list.

Darkness layer[]

Tileset should now define with which terrain layer darkness is being drawn, on top of the regular parts of that layer. darkness_layer can have value from 0 to 2. Old hardcoded behavior was to have it on layer 0.

; Which terrain layer darkness is drawn top of (0-2)
darkness_layer = 0

Adding mine_sprite for all terrain types[]

Supplied tilesets now define mine_sprite for all [tile] -sections referring to land terrains, to be compatible with custom rulesets that enable mines on terrains where supplied rulesets don't. You may want to do the same for your tileset if you have inherited it from the supplied ones, and is thus lacking some mine_sprite entries.

Name of the preferred themes entry[]

Themes should now be listed in preferred_themes, not in old prefered_themes, though for the time being later one works for backward compatibility reasons.

The .spec files[]

  • Set format of all .spec files to options = "+Freeciv-2.5-spec".

Removing Rivers as terrain type cruft[]

Rivers as terrain, not special, like in civ1 has not been supported for a very long time, but our tilesets still contained related obsolete cruft. We've cleaned that from supplied tilesets now. You may want to do the same for your tileset if you have inherited it from the supplied ones. Tags beginning with "t.t_river" are the river as terrain ones.

More upkeep sprites (optional)[]

You can add sprites showing more than 2 upkeep for unit display in the city dialog, although if you don't change anything it'll work as before. Specify "upkeep.gold3", "upkeep.gold4" and so on potentially up to "upkeep.gold10" (and similar for "food", "unhappy" etc). Any unspecified steps use the previous sprite, and upkeep beyond 10 uses the last specified sprite.

Unit convert activity icon[]

New unit activity icon for unit converting itself to another is required. Tag for the activity is "unit.convert".

Unit activity icons for roads (optional)[]

With the generalisation of roads in the ruleset, you may want to add more unit activity icons. The supplied rulesets will work with no tileset changes (they'll continue to use "unit.road"), but will take advantage of distinct "unit.rail" and (optionally, for the 'experimental' ruleset) "unit.maglev".

Road and River tags[]

Roads and Rivers no longer have hardcoded tags, but they depend on ruleset. Below, <ruleset_tag> means tag part defined in the ruleset. Supplied rulesets use tags "road.road", "road.rail", "road.maglev" for road types, and "road.river" for River.

  • Tags previously starting with "tx.s_river_" should now start with "<ruleset_tag>_s_"
  • Tags previously starting with "tx.river_outlet_" should now start with "<ruleset_tag>_outlet_"
  • Tags previously starting with "r.road_" or "r.rail_" should now start with "<ruleset_tag>_"
  • Tags previously starting with "r.c_road_" or "r.c_rail_" should now start with "<ruleset_tag>_c_"
  • Tags previously starting with "r.d_road_" or "r.d_rail_" should now start with "<ruleset_tag>_d_"

Inaccessible terrain[]

The supplied rulesets have a new terrain type 'Inaccessible', which no units can enter; this is for scenario authors to use to define a non-rectangular map shape (see the France scenario for an example). Tilesets should probably include graphics for this (if not supplied, Glacier graphics will be used).


The experimental ruleset has a new road type 'Maglev'. Any tileset that's meant to be used with experimental ruleset should include graphics for it. (Future versions of Freeeciv are expected to use this in standard rulesets.)

civ2civ3 game elements[]

The civ2civ3 ruleset defines several new game elements. Since civ2civ3 will become the default ruleset in a future release, tilesets should consider adding graphics for these elements. However, fallbacks from the classic ruleset will be used if the tileset does not supply these graphics, so this is optional.

  • The Migrants unit. (Several of the supplied tilesets already included this in 2.4.)
  • The Tribal and Federation governments. (Included in standard governments.spec.)
  • The wonders Statue of Zeus, Temple of Artemis, Mausoleum of Mausolos, and Internet. (Included in standard buildings.spec and wonders-large.spec.)

Outpost and airstrip[]

Even more optional are graphics for "outpost" and "airstrip" bases, conventionally precursors to "fortress" and "airbase" respectively. None of the supplied rulesets use these in 2.5, but some supplied tilesets include them for use by third-party modpacks, and future versions of Freeciv are expected to use them.

How to update a tileset from…

2.2 to 2.32.3 to 2.42.4 to 2.52.5 to 2.62.6 to 3.03.0 to 3.1