This is a list of main features of current S3_2 development version
relative to freeciv-3.1.


Last commit checked:

commit 40e3a7a99120e5073f269ab2a484858ba0568ee4
Author: Marko Lindqvist <cazfi74@gmail.com>
Date:   Sun Oct 6 21:33:29 2024 +0300


General:
========

- Gtk4-client is now the default
- Gtk3-client has been dropped
- Concept of modpack metafiles added
- Wrap setting is made separate from the topology setting
- 'Threaded' AI module has been completely dropped. 'Tex' remains
- "Clean Pollution" and "Clean Fallout" have been merged to one "Clean"
  action and activity
- Actions have been split from game.ruleset to new actions.ruleset
- Orders pre-defined to units are executed only after other
  other Turn Change activities, so they more closely resemble
  player doing those orders manually


Non-ruleset rules:
==================

- Revolen change speed is scaled to total number of players
- After revolution has finished, and player can freely select new government,
  the actual government change now happens only at the next turn change
- One does not end to war with someone they have never met, even for their ally
- Longer city names supported
- Score information contains "Units used" count


Included rulesets:
==================

- Opponent cities are not revealed just because they trade with
  one of your cities


civ2civ3
--------
- Storm unit, randomly moving on Oceans, added
- Reworked disaster frequency settings in the ruleset so that user has meaningful control
  over them with the "disasters" server setting


classic
-------
- Land units on Mountains get a vision bonus


Multiplayer
-----------
- Land units on Mountains get a vision bonus


Sandbox: (CHECK full list)
--------

- In general; rules demonstrating each new ruleset engine feature added
- New policies
  - Higher production for higher pollution
  - Higher veteran levels for higher build costs


civ1:
-----


civ2:
-----
- Freights get doubled trade revenue bonus


alien:
------
- Replaced Grassland terrain by Savannah


nations:
--------
- New nations:
  - Alaskan
  - Dagestan
  - Donetsk
  - Luhansk
  - Tuvalu
  - Toki Ponan
  - Northern Irish
  - Louisianian
  - Minnesotan
  - Poyaisian
  - Conch


Custom rulesets:
================
- Added "Counters" concept. Only city counters exist in freeciv-3.2
- Maximum number of ruleset items increase:
  - User unit class flags -> 25
  - User unit type flags -> 50
  - Extra types -> 250
  - Tech types -> 400
  - Unit types -> 300
  - Multipliers -> 50
- Base "Max_Rates" effect is now mandatory
- Wrap requirement is made separate from the topology requirement
- Nuke radius is configurable by a new Nuke_Blast_Radius_1_sq effect
- New improvement genus "Convert", used for things like Coinage
- New CityStatus requirement types
  - "Starved"
  - "Disorder" / "Celebration"
  - "Transferred"
- New achievement types
  - "Killer"
  - "Rich"
- New actions
  - "Wipe Units"
  - "Bombard Lethal"
  - "Spy Escape"
  - "Transport Load"
  - "Teleport"
  - "Teleport Conquer"
  - "Teleport Enter"
  - "Teleport Enter Conquer"
  - "Teleport Frighten"
  - "Teleport Frighten Conquer"
  - "Collect Ransom"
- New Small Wonder Visibility value "Embassy"
- Unit_No_Lose_Pop can depend on
  - Specific action
  - Specific unit
- It's possible to make attacks to destroy size 1 city
- Unhardcoded NoAggressive distance with new no_aggr_near_city extra property
- Fake generalized actions
  - Transport Load (3)
  - Transport Board (3)
  - Transport Embark (4)
  - Attack (2)
  - Suicide Attack (2)
  - Bombard Lethal (2)
  - Bombard (4)
- New TerrainAlter requirement types "CanBase" and "CanPlace"
- New CityTile requirement type "Worked"
- New Unit type flag "RandomMovement"
- New "Border_Strength_Pct" effect
- New "Action_Resist_Pct" effect to make it possible for target properties
  to affect action success probability
- min_tech_cost can now be defined independently from base_tech_cost
- New "Output_Bonus_Absolute" effect
- Support for Self-Provided Goods added
- New requirement range "Tile", in many cases replacing "Local"
  - There can be "Tile" range building requirements for a city with
    the building in the tile
- Resources can be given their relative frequencies on each terrain
- New unit role "BarbarianBoatTech"
- New latitude requirement types "MinLatitude" and "MaxLatitude"
- 'alltemperate' and 'singlepole' obsoleted by latitude bounds
- Player is now allowed to build units in a city that has its
  impr_req building even if player would be unable to build such a building
- User effects can instruct the way AI should evaluate their worth
- User is notified about new governments enabled by a building
- Hardcoded limitation that cause "Hut" extras cannot appear on
  frozen terrains is gone
- New "SharedTiles" clause type added
- Units now have full requirement vector
- New requirement type "OriginalOwner" (currently only for "City" range)
- New "Tech_Parasite_Pct_Max" effect similar to "Tech_Parasite" but
  scaling to amount of players
- "Upkeep_Factor" effect now supports Unit Type, and derived, requirements
- Homeless units can have gold upkeep
- "Trade_Revenue_Bonus" effect now considers unit type requirements
- Diplrel requirement type snow supports values "Has team embassy" and "Hosts team embassy"
- New ruleset setting "ubuilder_nationality" to tell if a pop-cost unit
  will always have nationality of its builder, or that of most citizens
  that went to building it
- "Growth_Food" is split, so that when city shrinks, new "Shrink_Food"
  effect is used instead
- New "Activity_Time" effect to override time activity would take by
  old less flexible rules
- New waste effects that consider only what would otherwise be the
  surplus of the city
  - "Surplus_Waste_Pct"
  - "Surplus_Waste_Pct_By_Rel_Distance"
- New "BuildingFlag" requirement type
- Add user flags support for Buildings
- Casus Belli now supported for successful Surgical Strike actions
- Increased hard limit of city trade routes to 20
- New EnterBorders terrain flag type
- Terrain clean times are now defined separately for each extra
- Second alt (fallback) graphics tag support added for units
- Second alt (fallback) graphics tag support added for removal activity icon
- Second alt (fallback) graphics tag support added for buildings
- Second alt (fallback) graphics tag support added for terrains
- "Attack_Bonus" effect can now have requirements related to the
  unit instance (formerly only unit type level was considered)
- Units that can always defend when transported, without leaving the transport
- Resource identifiers are no longer mandatory. They are needed for backward
  compatibility only, e.g., for older savegames
- All extras can now be resources, i.e., there's no longer separate
  maximum number of resources
- Added support for extras that impose ZoC themselves (even if empty)
- New "PlayerFlag" and "PlayerState" requirement types
- New unit "FormAge" requirement type, counting age from latest
  Upgrade or Conversion
- Alt terrain graphics tag is now optional
- Support for second alternative sound tag for buildings added
- Unit_Vision_Radius_Sq can now have unit granularity requirements
- ui_name_road renamed as ui_name_build_road for consistency with other
  infra building actions
- Unit age requirements are supported also on the client side
- New effect type Impr_Upkeep_Reduction
- "Settlers" flag is no longer mantadory for "Build Base" action enablers
- Governments now have sound tags for sounds to play when switching to that government
- Output_Penalty_Tile celebration rules unhardcoded, i.e., celebration no longer
  cancel the effect unless so defined
- New "Site" requirement type. It's the same as "Building", except that it
  doesn't care about building obsoletion


Custom scenarios:
================
- Support for scenario player autoselect (/autotake) added


Lua scripting:
--------------
- fcdb context improvements:
  - lua_io module is available
  - New "conn_established" signal
  - New auth.get_cmdlevel() and auth.set_cmdlevel() methods
  - Support for database capstr
  - Added "game_start" signal, and concept of game's dbid
- New Player:lose() method
- Directions now have a 'cardinal' property
- Research information API added
- 'unit_lost' signals reports loss because of lack of shield upkeep
  by reason 'upkeep'
- Player:give_bulbs() can be targeted to a certain tech in
  multiresearch mode
- Infrapoints API added:
  - Player:change_infrapoints()
  - Player:infrapoints()
- Added City:transfer() method
- Added effects.tile_bonus() method
- Reworked version functions
  - Deprecated fc_version()
  - New name_version(), comparable_version(), and version_string()
  - New versions_compare() method
- Added server.popup_image() method
- Added Player:primary_capital() method
- Added vision checking methods
  - Tile:known()
  - Tile:seen()
  - Unit:seen()
- Added edit.unit_add_hitpoints() method
- Added edit.unit_add_movepoints() method

Server operation:
=================
- New "ailevel" server setting
- Admin can lock specific settings with new 'lock' and 'unlock' commands
- New server setting to control number of cities in the Top Cities report
- When authentication via sqlite database enabled, the database gets
  automatically created if it doesn't exist
- New "luatimeout" server setting
- /list server command can now list supported AI types
- xml registry root node is now case insensitive


Settings:
---------

- Saving bzip2 compressed savegames is no longer possible
- Zstd is now the default savegame compression method
- New aitype setting


AI:
===
- Reworked the way want to build space parts is calculated


Clients:
========
- Experimental sdl3-client added
- SDL3_mixer support added
- New "silent_when_not_in_focus" client option
- Support for city style specific citizen sprites added
- Tile info tells latitude
- Framework for user confirmation of risky actions
- Support for activity specific main unit sprites
- Audio tag "e_game_quit" renamed as "e_client_quit"
- New "send_desired_settings" client option
- Support using scaled up svg flags on diplodlg
  Qt is currently the only gui to implement this
- New "followtag_override" client option
- Improved how the default tileset and topology gets selected
- New sound effect tags for client entering or leaving the game
- Player infrapoints count can be changed in the editor mode

gtk:
----
- Audio is paused when the client loses focus
- Added "About Current Musicset" help menu entry
- Provide longer version of the Wonders of the World report when
  "MERGED" messages and chat layout used

qt:
---
- Paradrop no longer shares menu entry and keyboard key with Clean Pollution
- Provide longer version of the Wonders of the World report
- Nations dialog panel options are saved
- Added "About Current Musicset" help menu entry


sdl2:
-----
- Generic languages specific fonts support in themes
- Initial screen resolution is adjusted by the base font size
- Font size client option added
- Theme has a new color definition for "No Contact" contact state


Tools:
======

Ruledit:
--------
- Standard comments are saved also for individual entries within sections
- Adding and removing buildings supported in non-experimental builds too
- Adding and removing techs supported in non-experimental builds too
- effect definitions can contain a comment persistent over ruleset
  load/save cycles

Modpack Installers:
-------------------
- Multiple files_? sections supported, each with their own baseURL

Manual Generator:
-----------------
- Unit Classes page added


Art
===

- Extra specific removal action icon supported for Pillage
- Musicspec now supports name, version, summary and description fields
- sdl2 theme icon "unkeep_coin" renamed as "upkeep_coin"
- Amplio2 and derived tilesets have volcano terrain sprites
- Supplied tilesets except Alio have Nets extra sprites
- Added tags for all amplio2 and trident extra units
- Trident and hex2t tilesets have Highway extra sprites
- stdsounds soundet additions:
  - Sound for switching government added


cimpletoon:
-----------
- Added Storm unit graphics


Build & Portability:
====================
- Meson based build is no longer considered experimental
  - For Cygwin, it's clearly the recommended build system
  - Official Windows Installers are built with meson
- SDL_mixer version 2.0.6 is now minimum requirement for audio support
- Added support for cross-compiling installers from Windows from Linux using Meson
- Meson based build now supports project definition files
- Project definition files can define project homepage
- Meson based build now supports emscripten builds
- Msys2 snapshot now from 240810
- Portable (non installer) versions of Windows (msys2) builds made
- Flatpaks can be built outside srcdir, and it's the recommended method
- Flatpaks are now built with meson
- New Qt Modpack Installer flatpak
- Meson based build single boolean configure option 'ruledit' replaced by
  'tools' array, and made build of also other tools configurable


Other:
======