See the full ChangeLog in the source for a comprehensive list of all changes. Download links for older releases can be found in the download archive.

Welcome to Freeciv 2.4.0 Edit

Thanks again to all our developers, who continue to work so hard.

This release includes lots of changes relative to 2.3.x; the significant ones are outlined below. Bug fixes also included in the 2.3 line are not listed. Those who are interested in seeing the detailed changes should check the ChangeLog file, linked above.

What's changed since 2.3.0 Edit

As is usual for major releases, 2.4 clients cannot interoperate with pre-2.4 servers, and vice versa. Pre-2.4 savegames can however be loaded into 2.4, and in most cases, the supplied rulesets have not changed so much as to make it difficult to complete a game started with 2.3.x's rules.

Server / General Edit

Gameplay Edit

The maximum theoretical map size has increased from 128,000 to 2,048,000 tiles; the maximum linear map dimension has increased from 512 to 32,768.

If map generation fails (for instance the common failure to allocate start positions), it is now retried with a different random seed.

A couple of new server settings have been added to customise gameplay: 'revealmap' allows the map to be shown to all players at game start, or to dead players. 'first_timeout' allows the first turn to have a different timeout from subsequent turns.



Clerical Edit

Player authentication has been revamped. Database access is now mediated by a Lua script that can be customised by server operators, and uses Luasql, enabling a variety of backends: MySQL (the only backend supported previously), SQLite, and PostgreSQL. See doc/README.fcdb for details. Support is included 'out of the box' for SQLite and MySQL databases. SQLite uses a simple file as a database, and is recommended as being entirely adequate for Freeciv authentication and much less hassle to set up than MySQL. The Windows packages include SQLite support, so for the first time, it's possible to use player authentication on Windows without building the server yourself.

The server now supports a 'delegation' feature similar to that in Longturn, where one user can nominate another to temporarily take over control of the game. This is controlled by the '/delegate' server command.

There is a new "map image" feature to save an overview map as an image. This is a much expanded version of the previous --Ppm server feature, which has been removed. Compared to --Ppm, the new feature can distinguish units, cities, borders, terrain colors, hex tiles, and more. Saving images can be triggered automatically (turn-based) on the server, or on demand on the server or client. See the '/mapimg' server command. A series of these images can be assembled into an animation to replay the progress of the game. A shell script 'mapimg2anim' is provided to help with this. PNG/GIF/JPEG output is only available if built against the ImageMagick library; this is included in the Windows packages as of 2.4.0-RC1.

Player colors are now assigned centrally, and can be changed with the '/playercolor' server command. There is a new server setting 'plrcolormode' that controls how colors are assigned, including a mode where all players on a team have the same color. The set of default player colors in the supplied rulesets has been reworked to enhance visibility of borders against terrain, etc.

The colors used to represent different terrain types on the minimap have been reworked.

The 'autosaves' setting gives finer control over when savegames are generated. To disable autosaves entirely, instead of '/set saveturns 0', it's now necessary to use a command like '/set autosaves ""'.

The scripts 'ser' and 'civ' have been renamed to 'fcser' and 'fcgui' respectively.

A Lua script can be read from a file with the '/lua file' command. Direct Lua input is now via the '/lua cmd' command.

New server option --Bind-meta to control which network interface the metaserver connection is made from.

The server can be built with support for .xz (LZMA) compression for saved games, etc. See the 'compresstype' option.

The freeciv-modpack utility supports more modpack types, more options (see --help ), and uses the Curl library for network access so should be more robust.

), and uses the Curl library for network access so should be more robust. (as of beta2) The ranklog format has changed; it now includes individual players' scores, and can be parsed more unambiguously.

Clients Edit

There is a new client, freeciv-gtk3, based on version 3 of the Gtk+ toolkit. This is fully playable and has largely identical UI and functionality to freeciv-gtk2. Currently it is experimental; however, it is expected that it will become the default client in the next major release. The first time you run this client, it will copy any Gtk2 client settings you have set. Thereafter, Gtk2 and Gtk3 settings will remain separate. Known issue in beta1/beta2: when compiled against some versions of Gtk3, there are assertion failures and crashes associated with the unit selection dialog. This is believed due to a Gtk bug (671939); however, it's been worked around in the Freeciv code as of RC1.

(In the code there is also the start of a Qt client. However, at this point it is just a stub and is unlikely to be of interest. Development will continue in 2.5.)

A server spawned by the client now only listens on the local network interface, so clients on other machines cannot connect to it. This improves security for single-player games, but means that a multiplayer game can no longer be hosted by the client; you must start a separate server instead (see the FAQ).

It's now possible to display a map overlay indicating which tiles the currently selected unit can enter ("native" tiles), with the Shift-Ctrl-N keyboard shortcut.

The research speed in bulbs per turn is now available with other research information from popups/tooltips on the main window.

For rulesets where different nations have unique gameplay attributes (different initial governments, techs, units, or buildings), this information is now available when picking a nation in the pregame, and in the online help.

The client now displays the current stable version of Freeciv and whether that's newer than the running version (this information comes from the metaserver).

(Gtk) The client now has a Lua scripting console. This is currently something of a proof of concept rather than a finished feature, as a comprehensive API suitable for the client-side has not been provided. Notably, there are not yet any signals from which client-side scripts can be triggered. However, client scripts do have access to the client's view of most of the same game data that server-side ruleset scripts do (map, units, cities etc); see the Lua reference manual. This should be sufficient for some useful work. For example, it should in principle be possible to implement an on-demand optimal trade route calculator with these facilities (although we haven't tried).

The client now has a Lua scripting console. (Gtk) The unit selection dialog has been revamped to allow browsing and selecting units by combinations of location and activity, anywhere in the world.

The unit selection dialog has been revamped to allow browsing and selecting units by combinations of location and activity, anywhere in the world. (Gtk) A bribe cost is now shown in the popup for units (for enemy units, this is estimated).

Tilesets / Art Edit

The orientation of units is now tracked, so tilesets can provide different graphics for different unit orientations. A tileset making use of this, Cimpletoon, is included. It is based on Amplio2 but has a full set of oriented unit sprites for the default ruleset. Known issue in beta1: Cimpletoon did not have sprites for all Fundamentalist units (it lacked Elephants and Crusaders), so for rulesets with these units, it would use fallback sprites (Chariot and Knights respectively). As of beta2, the tileset is complete.



Gameplay / Rules Edit

Changes affecting supplied rulesets Edit

Nations: The number of playable nations has increased from 385 to 539. Out of these, a subset of 50 "core" nations has been defined, based mostly on nations that have appeared in the Civilization series of games. For localised versions of Freeciv, these nations are more likely to be translated than the remainder. Players are initially presented with the core set, and it will be used for random nation selection if no nations are specifically selected; but players can still select nations outside the core set, and if some do, then the full range of supplied nations will be used for random selection of remaining players. The civ1 and civ2 rulesets now have their own separate nation sets, more closely matching the original games.

City center tiles now lose their automatic irrigation bonus if a mine is built on them, since mines and irrigation cannot coexist on a tile. Similarly, in the supplied rulesets, cities on a tile with a mine can no longer get a farmland bonus.

The effect of veterancy on the cost of bribing a unit now depends on veteran bonuses, not numeric veteran level; bribe costs for veteran units have thus changed.

When the 'barbarians' server setting is disabled, huts no longer spawn barbarians.

When migration is enabled, citizens now consider the risk of plague when deciding whether to migrate.

In rulesets without tech upkeep enabled, if the bulb count goes negative (for instance due to 'conquercost'), technologies are no longer lost. This restores the behavior of previous versions of Freeciv.

Diplomats and Spies now have special names for their veteran levels, but behavior is unchanged from 2.3.

In the default, multiplayer, and experimental rulesets, years are displayed with CE/BCE rather than BC/AD notation.

(as of beta2) The default map topology for new games has been changed to isometric, to match the default Amplio2 tileset.

The default map topology for new games has been changed to isometric, to match the default Amplio2 tileset. (as of beta2) In the 'multiplayer' ruleset, the ability to build buoys has been removed, as they do not work well with national borders disabled (the default for this ruleset). It is expected that they'll be re-enabled in a future major release.

In the 'multiplayer' ruleset, the ability to build buoys has been removed, as they do not work well with national borders disabled (the default for this ruleset). It is expected that they'll be re-enabled in a future major release. Changes to the 'experimental' ruleset: Citizen nationality is enabled; see below. Workers and Engineers can now gain veteran levels by working the land; this in turn allows them to work faster. A Mech. Inf. unit can now carry up to three Missile units. Galleons can now carry Big Land units, and Frigates no longer can. Old savegames are handled gracefully.



Changes and new features for rulesets/modpacks/scenarios Edit

New feature: optionally, the nationality of citizens can be tracked. For instance, when you conquer a city, its citizens retain their original nationality. Currently this affects the cost of inciting cities and the chance of migration (if enabled); more effects are planned for future versions.

The veteran system has been reworked: Per-unit veteran levels have been generalised; all veteran properties can now be set on a per-unit basis; previously, the chances of moving between levels could not. This means that different units can now usefully have different numbers of veteran levels for the first time. Diplomatic combat and spy mission survival chances are now derived directly from the 'power_fact' property of the veteran level, rather than being based purely on the numeric veteran level. As noted above, the effect of veterancy on unit bribe costs has changed. The maximum number of veteran levels has doubled from 10 to 20. Units with only a single veteran level, or which can't become veteran, now do not have a veteran level displayed. Information about veteran levels is now included in the on-line help.

Recursive transports are now supported (up to a depth of 5).

Two new tech_cost_styles: 3 with a new formula (early techs slightly easier, later techs much harder), and 4 which is similar to 2 (read from ruleset) but with the gaps filled with the new formula.

harder), and 4 which is similar to 2 (read from ruleset) but with the gaps filled with the new formula. A new effect 'Irrig_Possible' and requirement range 'CAdjacent' (cardinally adjacent) have been added. The requirement for oceans or rivers for irrigation is thus no longer hardcoded and can be modified.

The 'CityTile' requirement now supports 'Adjacent' and 'CAdjacent' ranges, so effects can be triggered for tiles next to a city.

'Surviving' requirements for wonders are now supported at Player range as well as at World range.

In ruleset definitions, specifying 'move_type' for a unit is now optional; if not specified it will be inferred from the native terrains/specials of the unit.

A ruleset can now specify a 'default_government' for all its nations in nations.ruleset, rather than each nation being required to specify its initial government individually. The supplied nations no longer include init_government="Despotism", so they can be used in rulesets which require a different initial government.

The image used for a city in the client is now set by the effects system (effect 'City_Image'), so it's no longer constrained to be a simple function of city size. The experimental ruleset uses this to align city graphics with the city map radius.

Tile labels are supported. These are text labels that are displayed by all clients when they display a particular map tile. They can be added to scenarios in the editor.

The colors used for players, and for terrains on the minimap and map images, are now specified by the ruleset on the server side, rather than the tileset on the client side.

In rulesets with tech_leakage enabled, dead players are no longer taken into account in the calculation; so you cannot gain from their knowledge, but equally a dead, ignorant player no longer pushes up research costs.

The behavior where the senate of representative governments is bypassed has moved from the Any_Government to the No_Anarchy effect.

The 'min_dist_bw_cities' ruleset item has been retired; use the 'citymindist' option instead.

Many changes to ruleset Lua scripting -- for full details see the Lua reference manual. These are all backward compatible. Highlights: Script-triggered climate change ( ) and civil war ( ). Scripts can now move existing units. A script can test whether tiles have a particular base. Script facilities for reading and manipulating unit orientation. Scripts can now read server settings.

(as of beta2) An internal 64kbyte limit on string length has been removed. Among other things, this allows longer Lua scripts in scenarios.

(See also How to update a ruleset from 2.3 to 2.4.)

AI Edit

(as of beta2) The city governor logic has been reworked, fixing various issues such as unexpected tax collectors in cities with many buildings, and a need to set minimal gold surplus to a lower target than expected.

The city governor logic has been reworked, fixing various issues such as unexpected tax collectors in cities with many buildings, and a need to set minimal gold surplus to a lower target than expected. (as of beta2) The AI's workers/settlers, and human players' autosettlers, will now automatically stop what they are doing and go elsewhere if threatened by an enemy unit and there is no defender on their tile. (Currently only threats from land units are considered.)

The AI's workers/settlers, and human players' autosettlers, will now automatically stop what they are doing and go elsewhere if threatened by an enemy unit and there is no defender on their tile. (Currently only threats from land units are considered.) (as of beta2) Improvements to AI settler management: The AI now considers worker units' food consumption (e.g. Settlers) to be less of a factor when deciding whether to build such units, to encourage it to do so. Fix poor handling of rulesets containing boats which can only carry a single unit. Previously, the AI would generate settlers with the intention of sending them out on such boats, but then refuse to do so due to lack of room for a bodyguard, regardless of whether one was needed, often hurting expansion and leaving useless settlers. Now it only insists on room for a bodyguard if one is actually needed.

Improvements to AI settler management: Improvements to AI city defense: (as of beta2) Reduced the tendency of AI city defenders to be lured out of their city by nearby targets even in the presence of threats. (as of beta2) Cities in grave danger of invasion with no defending units were tending to build City Walls, uselessly. They will now prioritise acquiring a defender. (as of RC1) Reduced the weighting of the AI's assessment of defence strength, so that it defends its own cities more convincingly. (part of ) (as of RC1) The AI now tends to keep a unit constantly defending each of its cities even in the absence of an obvious threat, rather than relying on being able to acquire one when a threat appears.

(as of beta2) Improvements to AI caravan management: Caravans in transit are now taken into account when a city is deciding whether to build more caravans. Previously, a city could end up building endless caravans if existing ones did not complete their trade route.

Improvements to AI caravan management: (as of RC1) The AI's new weighting of defence strength assessment means that it is less fearful of its enemy's defenders when attacking their cities. (part of )

The AI's new weighting of defence strength assessment means that it is less fearful of its enemy's defenders when attacking their cities. (part of ) The AI's management of its tax rates has been reworked to be more sophisticated; notably, it now takes tech upkeep into account. It also considers tech upkeep when determining the value of a tech.

AI planning for new cities has been improved slightly.

Autosettler planning for building railroads ( , ) and farmland ( ) has been improved. (Note that the latter is still only triggered by the existence of a Supermarket, so the AI still does not benefit, due to a chicken-and-egg situation.)

The extensive reworking of the AI code (see #Development), while not intended to introduce any functional changes (and extensively tested for this), may have changed behavior in some rare cases.

Translations Edit

New Indonesian translation.

(as of beta2) New Traditional Chinese translation.

New Traditional Chinese translation. Updated translations: Bulgarian, Catalan, Spanish, Scottish Gaelic, Korean, Polish, Dutch, Irish, French, German, Finnish, and British English.

Development Edit

The AI code has been heavily refactored, with a view to making it easier for people to start their own projects to write better Freeciv AI. There's now a concept of AI type; different players can have different AIs. The type can be specified to the server /create command and the Lua function edit.create_player(). The server can be built to accept dynamically loadable AI modules with the --enable-aimodules option to configure . A module is loaded by starting the server with the --LoadAI option. Alternatively, a fixed set of modules can be compiled in with --enable-ai-static. In addition to the 'classic' AI, the standard Freeciv package ships with the 'stub' and 'threaded' AIs. These are both dummy templates for development and do not work as shipped. They are enabled with the configure option --enable-aimodules=experimental. See doc/README.AI_modules for some more information.



There is now a hard dependency on libcurl for HTTP access. This is used for metaserver communication and for freeciv-modpack.

Efforts have been made to make the codebase compile without warnings with GCC 4.6 and (as of beta2) 4.7.

4.7. Use of some GNU make extensions has been removed from the build system, so it may now be possible to build with a POSIX 'make'.

freeciv-modpack can be built against either gtk2 or gtk3.

The configure option --enable-sys-lua allows use of a system-wide copy of Lua instead of the one shipped with Freeciv.

See doc/README.packaging for more information.

What's changed since 2.4.0-RC2 Edit

For those who've been trying the betas, the only change since RC2 is the addition of a missing embedded language code to some of the translation files. This will probably make no difference to users.