NEWS-3.1.0

= Welcome to Freeciv 3.1.0 =
Thanks again to all our developers, who continue to work so hard.
This release includes lots of changes relative to 3.0.x; the significant ones are outlined below. Bug fixes also included in the 3.0 line are not listed. Those who are interested in seeing the detailed changes should check the ChangeLog file.
This release is still in a beta stage, so there are some known issues (see below).
= WHAT'S CHANGED SINCE 3.0 =
The major changes in Freeciv 3.1 are new Qt6- and gtk4-clients, improved balance for civ2civ3 ruleset, experimental meson based build system, and a whole lot of extra flexibility to create custom rulesets.
As is usual for major releases, 3.1 clients cannot interoperate with pre-3.1 servers, and vice versa. Most pre-3.1 savegames can however be loaded into 3.1, and in most cases, the supplied rulesets have not changed so much as to make it difficult to complete a game started with 3.0.x's rules.
== Server / General ==
* Qt6 versions of the Qt-client, Qt Modpack Installer, and Ruledit are supported, and even the default in most cases 
* Player authentication is supported by default 
* Max number of regular players (not counting barbarians) is now 500. 
* Rally Points can be set for the cities 
* Previously silent generic actions now have event message types, so can show up chat/messages/popup 
* There has been many changes to what actions each keyboard key does, as required by changes in the actions themselves. See Controls in Help for updated info.
** Especially; Paradrop now has a key distinct from Pollution cleaning 
* Adding local nation definitions now works properly 
=== Changes affecting players (supplied rulesets) ===
* Experimental ruleset is no longer part of the main freeciv distribution. It's still available with modpack installer 
* Submarines are now in the new Subsurface vision layer 
* Huts on most rulesets (any ruleset that uses default huts behavior) can now result on reveal of the surrounding terrain 
* By default, bombardment rate now gets reduced if the bombarding unit is damaged. This is relevant only for rulesets with such bombarding units, and ruleset might still use the old behavior instead of the new default 
* The issue of Ships attacking Helicopters counting as land bombardment, when attack initiated from a city on land has been resolved 
* Extraneous StartUnit roles cleared from supplied rulesets 
* Rulesets except civ1, civ2, alien, and stub have new Eliminate Spy action, that is just diplomatic battle with no further actions 
* Player looting dying player (one who lost gameloss unit) now get notifications about what the loot contains 
* Messages from supplied lua scripts, such as handling unit entering hut tile, now have unit/city/tile links in place 
* nations
** Esperant nation city list updated 
** Palau nation added 
** Texan nation city list updated 
** Liege nation added 
** Floridian nation added 
** Game prefers not to select Chadian and Kanem-Bornu to the same game (i.e., they have been set to conflict) 
* civ2civ3
** Ecclesiastical Palace is real secondary capital now 
** Establishing trade routes give one-time bonus in Gold (used to give Nothing) 
** Effects of Culture have been reworked 
*** The culture accumulated by each city increases its resistance in diplomatic fights against enemy agents (up to +50%).
*** The culture accumulated by your nation increases the cost to bribe your units or incite your cities (up to +500%).
*** Governments no longer get immunity against bribe or incite actions. Cities with a Courthouse or a Palace are now immune to incite actions.
*** Increased the amount of culture granted by achievements (from 100 to 1000 in most cases), and the lead relative to second best player needed for victory (from 33 to 100%).
** Fortress and Airbase build requirements rearranged 
*** All military infantry units can build fortresses. All worker units can build airbases.
*** The working time required to build a base is 2 times the movement cost of the terrain.
** Attacks against helpless defender never grant veterancy 
** The chance to gain veterancy from combat depends on how challenging it was 
** Reworked which of the naval units count as military ones, causing unhappiness 
** Homeless diplomats may home themselves, to gain ability to bribe units 
** Barracks and Sun Tzu affect Small Land units too 
** Bribe Unit, Spy Attack, and Incite City give victim casus belli even when the actions fail 
** Mountain movement penalty not applied on Rivers 
* civ1
** Alliance clauses are no longer available 
** Move costs on entering and leaving transports corrected 
** Both units' hitpoints and firepower have been increased to 10 in all situations. Single hit still kill them, but AI understand this math a bit better 
** Fortifying bonuses closer to civ2 
*** Unfortified units in cities do not get the bonus
*** Bonus is not cumulative with City Walls or Fortress
* civ2
** Alliance clauses are no longer available 
** Move costs on entering and leaving transports corrected 
** Fighters have real scramble bonuses 
** Fortifying bonuses closer to civ2 
*** Unfortified units in cities do not get the bonus
*** Bonus is not cumulative with City Walls or Fortress
* multiplayer
** Unit move rates doubled 
** The chance to gain veterancy from combat depends on how challenging it was 
* alien
** Burrowing units do not make it impossible to attack other units in the same tile, even if general unreachableprotects setting is enabled 
** The chance to gain veterancy from combat depends on how challenging it was 
** Bribe Unit, and Incite City give victim casus belli even when the actions fail 
* experimental
** Ruleset has been made ready to migrate under name goldkeep in freeciv-3.2 
* sandbox
** Various messages shown in the beginning of specific turn numbers 
** Both parties need to know Writing before they can trade techs 
** ICMB can hit anywhere in the world, from anywhere 
** New Disrupt Supply Lines action to take move points from target 
** Spies can simply (not as part of another action) eliminate enemy spies and diplomats 
** Pillaging gives the victim Casus Belli 
** Spies can Release Plague 
** Spies can do Suitcase Nuke action 
** Ecclesiastical Palace is real secondary capital now 
** New Chichen Itza wonder allows city to build units that usually have population cost without the city shrinking 
** Fortress can be expanded to a Castle 
** Some Castles are placed on the map when it's generated 
** Teleportation is possible via Ancient Transport Hubs randomly placed on map 
** Living units of the Amêzârâkian Mysteries owner can heal other living units 
** Nuclear attacks are now targeted against tiles, not cities 
** Added Nuclear Submarine that can launch one tactical nuke each turn 
** Added Treuga Dei Wonder that prevents all violent actions while it's active 
** New Altar of The Divine Ruler wonder allows making units homeless 
** New Mechanic unit can repair machine units, restoring 50% of their health 
** Poison City actions may fail, as dictated by diplchance server setting 
** Establishing trade routes give one-time bonus in Gold (used to give both Gold and Science) 
** Added Space Elevator small wonder and Space Elevator Tether City Improvement 
** Attacks against helpless defender never grant veterancy 
** The chance to gain veterancy from combat depends on how challenging it was 
** Reworked which of the naval units count as military ones, causing unhappiness 
** Homeless diplomats may home themselves, to gain ability to bribe units 
** Barracks and Sun Tzu affect Small Land units too 
** Bribe Unit, Spy Attack, and Incite City give victim casus belli even when the actions fail 
=== Changes affecting other rulesets / modders ===
* Scenarios can now ship ruleset specific datafile luadata.txt, and ruleset can ship parser.lua script to use that data any way it wants 
* There is now two separate visibility layers able to hide a unit; Stealth and Subsurface 
* "Bridge" rule options are now available for all extras, and are generally more flexible 
* Multipliers can now have requirements that player needs to meet in order to give it nondefault value 
* Ruleset can now limit how often a multiplier can be changed by new minimum_turns property 
* New effects controlling build costs of specific targets
** Building_Build_Cost_Pct 
** Unit_Build_Cost_Pct 
* Added user-defined effects "User_Effect_1" ... "User_Effect_4" that do nothing by default. Ruleset is expected to make them usable by lua scripting. 
* Ruleset has control over which clauses are available for treaties
** Whether it's enabled at all in the ruleset 
** When requirement vectors for giver and receiver enable it 
* Maximum number of Techs a ruleset can define has been increased to 250 
* Maximum number of Unit Types a ruleset can define has been increased to 250 
* New ruleset settings nuke_pop_loss and nuke_defender_survival_chance_pct to control destructiveness of nukes 
* Mechanism for a ruleset to migrate under a new name over freeciv versions 
* Ruleset now has control over city happiness' effect on civil war chance 
* New DefenseMultiplierPct and DefenseDividerPct combat bonuses provide more granular alternative for existing equivalent integer bonuses 
* New concept of Infrapoints that can be used to just place infrastructure instead of building it with units 
* Improvements for higher granularity rulesets
** New output_granularity ruleset setting to support higher granularity with outputs (food/shield/tax/gold/science/luxury) 
** Increased max values many ruleset settings can take 
* Terrain transforming modes of Irrigate and Mine activities have been split to new Cultivate and Plant activities 
* New NeverProtects unit type flag to override global unreachableprotects setting 
* New extra removal cause Enter to provide better semantics for hut -kind extras 
* New history_intereset_pml ruleset setting allows older (longer existed) history to count towards culture more than recent 
* New AI trait Builder to adjust how much AI wants buildings (instead, e.g., units) 
* Maximum number of ruleset author defined flags increased
** Unit class flags to 12 
** Terrain flags to 10 
* Some unit class flags have been unhardcoded, and removed
** CanPillage 
* Move points taken after successful actions can be controlled by new effects
** Action_Success_Actor_Move_Cost 
** Action_Success_Target_Move_Cost 
* New effect Illegal_Action_HP_Cost to control HP loss after failed action 
* New effect Popcost_Free to forgive population cost of built units 
* How many tiles action Steal Maps reveals can be controlled by new Maps_Stolen_Pct effect, and steal_maps_reveals_all_cities ruleset setting 
* Improved support for more detailed auto-attack rules 
* New UnitState values available to be used in requirements 
** InNativeExtra 
** MovedThisTurn 
* Maximum number of requirements in a requirement vector increased to 40 
* New requirement types
** CityStatus, currently only for checking if the city is controlled by its original owner (OwnedByOriginal) 
** MinForeignPct that depends on number of foreigners in the city 
** Activity that depends on unit's current activity 
** DiplRelTile that depends on ones diplomatic relation to the owner of the tile (e.g. the tile target unit is on) 
** DiplRelTileOther that depends on diplomatic relation between the owner of the tile and other player (e.g. the target unit owner) 
** DiplRelUnitAny that depends on ones diplomatic relation with owners of units on tile 
** DiplRelUnitAnyOther that depends on diplomatic relation between owners of units on tile and other player (e.g. tile owner) 
* Defense bonuses from unit being fortified unhardcoded by new Fortify_Defense_Bonus effect 
* NoFortify terrain flag unhardcoded 
* CanFortify and Cant_Fortify unit flags unhardcoded 
* slow_invasions ruleset setting has been retired as the same rule can be implemented via Action_Success_Actor_Move_Cost effect 
* Amount of shields received from unit doing Help Wonder or Disband Unit Recover action can be controlled by a new Unit_Shield_Value_Pct effect 
* Which cities are capitals is now declared for a turn - it can't change mid-turn. This also adds concept of secondary capitals 
* Last remaining Base Flag, NoAggressive, has been turned to an extra flag to make it available for all extras 
* The CityTile requirement can check if extras on tile are owned by the new Extras Owned value 
* OneAttack unit type flag retired. Ruleset can implement it via an Action_Success_Actor_Move_Cost effect that takes all the movement 
* Removed hardcoded rule that attack costs single move - ruleset can define move costs via effects 
* New Heal_Unit_Pct effect to control how much Heal Unit actions heal 
* Whether server setting telling that city has unlimited airlift also enables airlift when there's no capacity at all is now controlled by new airlift_from_always_enabled and airlift_to_always_enabled ruleset settings 
* Introduced new combat bonus type CityDefensePct that overrides Defend_Bonus effect 
* Success probability of Suitcase Nuke actions now shown 
* It's possible to make Poison City subject to diplchance 
* Whether opponents know about all Small Wonders player owns is now controlled by a new ruleset setting wonder_visibility.small_wonders 
* Improvements to when unit gains veterancy from combat
** New ruleset setting only_real_fight_makes_veteran to prevent one from gaining veterancy from safe attacks (ones against helpless defender) 
** New ruleset setting combat_odds_scaled_veterancy to make chance of gaining veterancy scale to the difficulty of the combat 
* Rules that set firepower to 1 unhardcoded can now have the value suitable for the ruleset 
* By the new tp_defense unit type setting, unit can be blocked from defending while it's inside a transport 
* New min_trade_route_val ruleset setting, mainly to control if trade output can round down to zero, or is it always at least 1 
* Recycle Unit action has been renamed as Disband Unit Recover 
* Unhardcoded unit regeneration special cases
** New Min_HP_Pct effect, to unhardcode minimum HP unit gets when in a city 
** New Min_HP_Regen_2 effect, to unhardcode base healing, and healing bonus for fortified units 
* Existence of at least one City_Vision_Radius_Sq effect in the ruleset is now mandatory, as city without any vision wouldn't work 
** actions
* Completely new actions
** Spread Plague 
** Spy Attack 
* More Action Enabler controlled actions
** Pillage 
** Fortify 
** Build Road 
** Convert Unit 
** Build Base 
** Clean Pollution and Clean Fallout 
** Surgical Strike Building 
** Surgical Strike Production 
** Conquer Extras 
** Enter Hut and Frighten Hut 
** Unit Move 
** Unit Make Homeless 
* ..._Possible -effects replaced with action enablers
** Transform_Possible replaced by Transform_Terrain 
** Irrig_TF_Possible and Mining_TF_Possible replaced by Cultivate and Plant 
** Mining_Possible replaced by Build Mine 
** Irrig_Possible replaced by Build Irrigation 
* Transport loading/unloading is now controlled by revamped actions
** Transport Alight - Unload to the same tile with the transport, cargo acting 
** Transport Unload - Unload to the same tile with the transport, transport acting 
** Transport Disembark - Unload to adjacent tile, cargo acting 
** Transport Board - Load to the transport at the same tile, cargo acting 
** Transport Embark - Load to the transport on adjacent tile, cargo acting 
* Suicide Attack is now separate action from Attack allowing it to be configured more freely 
* Some actions are duplicated, tripled, or even quadrupled so that the ruleset can define essentially same action to behave differently in different situations
** Transport Disembark 
** Conquer City 
** Bombard 
** Conquer Extras 
** Heal Unit 
** Unit move actions 
* Explode Nuclear, Nuke City, and Nuke Units are now three separate actions, so their rules can be controlled separately 
* Actions formerly targeting both building and current production split to actions that target some building, and actions that target current production 
* More actions have maximum ranges, from the actor, that they can target to
** Explode Nuclear 
** Airlift Unit (now it's possible to have a limited range) 
** Nuke City and Nuke Units 
** Help Wonder and Disband Unit Recover 
** Paradrop Unit range migrated from the unit definition 
* Number of actions with different side effects split from the former Paradrop Unit that is now free of those hardcoded side effects 
* Some actions have minimum ranges, from the actor, that they can target to
** Nuclear attacks 
* Added user-defined actions "User Action 1" ... "User Action 4" that do nothing by default. Ruleset is expected to make them usable by lua scripting. 
* More actions supported by Casus_Belli_Success
** Pillage 
** Move actions 
** Paradrop Unit actions 
* New Casus_Belli_Complete effect, supporting just Pillage action 
* Actor unit properties can be used as Casus Belli requirements 
* For some actions it's now possible to give a list of other actions that block them. This replaces old force_* entries
** Blocking regular move action 
** Blocking actions that formerly had partial implementation via 'force_* entries 
* For some actions it's now possible to give a list of other actions that are automatically attempted after it 
* Ruleset now controls what actions unit tries in an attempt to escape the tile in some situations
** When city gets destroyed, and unit can't survive on tile any more 
** When escaping stack death 
* For some actions, ruleset has the control over their target kind
** Whether Pillage actions consider Tile or the specific Extra their target. This makes a difference, e.g., for any requirements referring to the "other" player - whether it's the tile owner, or the extra owner 
** Unit Explode Nuclear and Unit Nuke City actions have been merged, with ruleset selecting between the old behaviors by defining the target kind 
* Whether an diplomat action is subject to diplchance server setting is now controlled by new diplchance_initial_odds ruleset setting. This is still supported for a limited set of actions 
* Home City action enablers can be set to allow rehoming also NoHome units. The unit flag now only means that unit is initially built homeless 
* Nuclear attack units can be set not to get consumed in the attack. Makes sense when it's actually ranged attack launcher unit 
* Found City can be set not to consume unit 
=== Changes affecting lua scripting ===
* Lua engine has been updated to version 5.4 
* Luasql files have been updated to match version 2.6.0 
* owner property added for lua's tile data 
* government property added for lua's player data 
* Direction variables are now properly included to savegames 
* Unit upgrade / transform APIs 
** Unit:veteran
** Unit_Type:obsoleted_by
** Player:can_upgrade()
** Player:can_build_direct(.. Building_Type)
** Player:can_build_direct(.. Unit_Type)
** Unit:can_upgrade()
** Unit:transform_problem()
** Unit:upgrade()
** Unit:transform()
* Other new methods
** city:is_primary_capital() 
** action:target_kind() tells what the action was targeted at 
** tile:extra_owner() returns owner of an extra on tile 
** find.action() to get an action 
** edit.perform_action() and Unit:perform_action() to force unit to perform an action 
** effects.unit_bonus() to get value of the effect for the unit (unit matches requirements) 
** effects.unit_vs_tile_bonus() to get value of the effect for the unit on tile 
** Tile:show() and Tile:hide() 
** City:create_building() and City:remove_building() 
** Player:give_bulbs() 
** City:link_text(), City:tile_link_text(), Unit:link_text(), Unit:tile_link_text(), and Tile:link_text() 
** find.achievement() and find.disaster() 
** find.player(name) 
** City:remove() 
* Extended methods
** edit.unit_move(), edit.unit.unit_teleport(), Unit:move(), and Unit:teleport() can take additional parameters dictating potential side effects of the move (e.g. if there's transport or a hut in the target) 
* create_unit_full() can place unit inside a transport it would not board at the place 
* New signals
** Family of action_finished_... signals emitted after the action 
** player_phase_begin, player_phase_end, player_alive_phase_end 
* default.lua now constructs the "out of fuel" message 
=== Changes affecting server operators ===
* Bzip2 savegame compression is deprecated. Use another compresstype 
* Support for loading games saved by freeciv versions older than 2.3 dropped 
* Freeciv build can now support both the raw and json network protocols, not just either one 
* Hack -level users can run lua -commands in a new permissive context with unsafe-cmd and unsafe-file commands 
* New odbc backend for player authentication database 
* New server settings
** incite_gold_loss_chance and incite_gold_capt_chance control loss of money reserved for inciting revolt when it fails 
* New server command playernation for setting nation and leader name 
* Custom database.lua location is now supported 
* /reset game now works correctly in respect to setting provenance 
* zstd compressed savegames are now supported (compresstype value zstd) 
* New iphide server setting to not send IPs of players to each other 
* /metamessage server command has been deprecated. Use metamessage setting, available since freeciv-3.0, instead 
=== General ===
* New log level "warning" 
=== AI ===
* Extended higher resolution AI want tracking introduced in freeciv-3.0 to more cases 
* Tex AI module has been generally improved. 
** Run military advisor in the second (not the server's main) thread 
** Workers dying while tex is looking task for them no longer cause problems 
** Tex module is built in by default 
* AI has some rudimentary support for handling Ocean Workers 
* It depends on exact action commited against AI how much love is lost 
* AI difficulty level Handicapped renamed as Restricted 
* AI difficulty levels that are supposed not to see through Fog of War now respect that also when examining potential Paradrop targets 
* AI remembers its current Wonder building plans over game save/load cycle, so it not abandon Wonder building on savegame load as easily 
* Hard level AI is no longer allowed to set tax rates freely, but max rates rules apply to it 
* AI's want for various things is not as easily clipped as before (max want is now ten times bigger), so it can distinguish between high and extremely high want 
* Autosettlers improvements (affect also human players)
** Considers building also other kind (cause) extras as dependency of the wanted extra. Previously considered, e.g., building only Roads as dependency of other Roads 
== Clients ==
* gtk2-client and modpack installers have been dropped 
* gtk3-client considered unmaintained. Use gtk3.22-client instead 
* sdl1.2-mixer support dropped 
* New gtk4-client added 
* City dialog shows if a tech has ever been stolen from the city 
* Improved the way untargeted action gets listed in the target selection dialogs 
* City Governor can be asked to maximize city growth speed 
* New "Pop up actions last move to allied" client option 
* Audio volume control added 
* Fast auto attack support added 
* Most clients have support of drawing number of units in the stack instead of just sign that there's more than the visible one 
* Number of new columns added to the nations reports 
* Single-step goto handled like a (single-step) move from the keyboard, e.g., opening action selection dialogs, and not similarly to long range goto 
* New Connect Maglev connection building type added 
* Qt
** Client-side Rally Point retired, and replaced by server side rally points usage 
** Fonts settings rearranged 
** "Go to and ..." now allows sub target (e.g. exact extra to build) selection 
** Added trade related columns to goto dialog 
** Qt-client's special settings file is now versioned, so that different freeciv versions with different file content do not interfere each other 
** Options dialogs remember their geometry 
** Sidebar fonts refreshed on the session (not requiring client restart) they are changed in the options 
* sdl2
** Change to fullscreen option now takes effect immediately, not requiring client restart 
== Tools ==
=== Modpack Installer ===
* Information about installed modpacks is now kept in a sqlite database 
* Having "/" in the end of baseURL is no longer an error. It still doesn't do anything, but is tolerated 
=== Ruleup ===
* Unused action enablers can be dropped 
=== Ruledit ===
* Effects editing added 
* Multipliers editing added 
* Improvements to ruledit's suggestions to ruleset syntax improvements
** Suggestions to remove action enablers that would never be enabled 
** Suggestions to remove duplicate requirements 
** Detection of contradicting requirements in a requirement vector 
* Stub ruleset is now part of main freeciv distribution 
* Added Achievements tab 
* Sound tags editing added 
* Building flags editing added 
=== Manual Generator ===
* Output format (html or wiki) can now be selected runtime, by commandline options 
* Less "false positive" actions get listed as possible for terrain when they actually are available under no circumstances 
== Tilesets, Art, etc ==
* Extra animal unit sprites added to Amplio2 and to tilesets inheriting its units 
* Extra unit sprites added to Cimpletoon and to tilesets inheriting its units 
* Alternative Spy added to Amplio2 extra sprites 
* Extra unit sprite for Feluca added to Amplio2 and to tilesets inheriting its units 
* Savannah terrain sprites added to Hexemplio and to tilesets inheriting its terrains 
== Help / Documentation ==
* Documentation about the source code generated with Doxygen can be found from https://files.freeciv.org/nightly/weekly/ 
== Translations ==
* Updated translations: Esperanto, Finnish, French, Polish, Russian, Simplified Chinese
* Translations on Windows Installers enabled 
== Build/portability ==
* New Meson based build system introduced, to live in parallel with the existing autotools system for now. Autotools is still the official one in freeciv-3.1 
** With meson, sdl2-client can be built using SDL2_gfx files supplied with freeciv, without SDL2_gfx in the system 
* Windows installer types available for freeciv-3.1
** At least Windows 8.1 needed for any freeciv-3.1 installer 
** win-10 installers, requiring at least Windows 10 
** Windows sdl2-client now comes with gtk4 modpack installer 
** Msys2 environment updated to snapshot from 230220 (20th of Feb 2023) 
* Initial support for meson + crosser based Windows build. No installers come out from this, one have to get the build artifacts to the target by some other means. 
* Minimum Qt5 requirement, for Qt5 using components, is now 5.11 
* It's possible to make an emscripten build of server and sdl2-client 
* C++11 mode selected for the C++ compiler by default, as it's requirement even for the minimum Qt version we now support 
* Project file can define the default network port that the server will listen 
* Appdata files renamed as metainfo files 
* Support scripts added for building appbundle for macOS, using homebrew 
* For native builds, default is not to use improved tolua version coming with freeciv, instead of system one 
* Crosser updated to version 2.8 
* Ruledit flatpak added 
* Modpack .desktop and .metainfo.xml files renamed to follow org.freeciv.<gui>.mp pattern. 
* Shell scripts use posix shebang, instead of assuming presence of /bin/bash 
See for more information.
See ChangeLog in for list of changes in the AI module API.
= What's changed since 3.1.0-RC1 =
For those who've been trying the betas, these are the changes since the release candidate, 3.0.0-RC1:
* Updated translations: Russian
= Known issues =
Here are some of the notable outstanding issues that we already know exist as of 3.1.0-beta2:
* The Gtk3 clients' zoom function still has some glitches. 
* The Gtk3 clients currently don't have animation for moving the map view. 
* The SDL2 client has no UI for manipulating policies. 
See NEWS for older lists of changes.
Category:NEWS