---------------------------------------------------------------------- Notes for Freeciv packagers ---------------------------------------------------------------------- This file is meant to help those people wanting to package Freeciv for their distribution, and, to some degree, those people who want to create Freeciv fork. ---------------------------------------------------------------------- Updating from 2.3 to 2.4 ------------------------ * Client uses ~/.freeciv-client-rc-2.4 for storing its options. Options are always saved to that file. Loading of options first tries to get options from ~/.freeciv-client-rc-2.4. If that file does not exist it tries to load options from old client files generated by former version of Freeciv (e.g. ~/.freeciv-client-rc-2.3 generated by Freeciv 2.3 or ~/.civclientrc generated by Freeciv version <= 2.1). * Minimum automake requirement is 1.9 * There is new savegame compression method xz * Support for loadable AI modules optionally built in * There's new gtk3-client alongside default gtk2-client. It can be built with --enable-client=gtk3. It's a bit less mature than gtk2-client. * Development of new qt-client started. It can be built with --enable-client=qt * libcurl is new dependency * ftwl-client has been removed from distribution * win32-client has been removed from distribution * freeciv-modpack is built either as gtk3-program, or as gtk2-program. See --enable-fcmp * System lua can be used instead of one that comes with freeciv. See --enable-sys-lua * Added text field "distribution" to client_info packet. Packagers should set FREECIV_DISTRIBUTOR in fc_version if they modify freeciv at all. * New tileset cimpletoon. It depends on amplio2 (files) being present, and has just units of its own. Unlike units in any other tileset, these units have orientation (different gfx depending where unit faces) * Authentication/database support has been generalised using luasql. Server can be built against any or all of SQLite, MySQL, and Postgres; only the first two are supported out of the box. We recommend packagers build in support for at least SQLite, even if they did not support MySQL in previous versions, so that their users can run servers with authentication without rebuilding. * There's a new script file database.lua, used for authentication, installed into sysconfdir (e.g. /usr/local/etc/freeciv/database.lua). Server operators might want to tweak this, so we recommend it's treated as a configuration file (e.g., conffile in Debian). * There's optional dependency of ImageMagick to support more formats for saving map images. When used, drawing with ImageMagick needs "Times-New-Roman" font. ---------------------------------------------------------------------- Compatibility of modified versions ---------------------------------- If you create patched version of Freeciv, take necessary precautions to avoid problems when your patched version interacts with unpatched version, or tries to load or save incompatible data files. Concept called "capabilities" is widely used in Freeciv. If two things (server/client, program/datafile...) are incompatible, they have different capabilities defined. Based on that they can detect incompatibility and act gracely. Be sure to update network capability string in fc_version if you break network compatibility, so your patched server/client does not cause problems to official Freeciv servers/clients trying to connect it. If you distribute modified version of freeciv, even (or especially) one network compatible with upstream, you should change also FREECIV_DISTRIBUTOR in fc_version to match. This information is sent by client to (public) server so in case there's any problems with certain clients, we know a bit more what kind of code they are using. ---------------------------------------------------------------------- Announcement of new versions ---------------------------- As of 2.4, the Freeciv client displays the latest available version if it's newer than the running version. This information comes from the metaserver. The metaserver maintains several different versions to report here, distinguished by "follow tags". The default follow tag is "stable", updated when a new source release is made, but for instance Windows builds will follow a different tag such as "win32", which will only be updated when a new Windows binary is available. This mechanism is primary intended for the Freeciv maintainers, since updates to the metaserver need to be made be us. However, if you maintain a significant version/package of Freeciv, you can contact us and ask to be allocated a tag to pass to 'configure --with-followtag'; thereafter you'd need to let us know whenever you make a new release so we can update the metaserver. (This is unlikely to be of use to Linux distribution packagers, who have their own means of distributing updates.) ---------------------------------------------------------------------- Shared libfreeciv ----------------- Libfreeciv contains code common to server and client. By default it's built as static library, but you can build it as shared library by giving configure option "--enable-shared" (and possibly "--disable-static") ---------------------------------------------------------------------- Generated files --------------- This is list of files Freeciv might generate to filesystem when running. You may want to remove some of these when Freeciv is uninstalled. * Client saves its options to file "~/.freeciv-client-rc-2.4" * Server saves its readline history to file "~/.freeciv-server_history" * When running local single player games, challenge files with name like "~/.freeciv/challenge_*_*" are generated * When saving game in server launched by client, savegame go to "~/.freeciv/saves/" * When saving game in independently launched server, savegames go to directory specified with "-s" command line option, defaulting to working directory * freeciv-modpack saves data under "~/.freeciv/2.4/" and "~/.freeciv/scenarios/" * Server can write log to file specified with "-l" command line option * When mapimage feature is used, it can save colortest images to working directory and actual map images to save directory (same as above) ---------------------------------------------------------------------- Building multiple clients at once --------------------------------- Starting from 2.2 it has been possible to build multiple clients running 'make' just once. Just give configure option "--enable-client" comma separated list of clients to compile, e.g. "--enable-client=gtk2,sdl,xaw,qt" ---------------------------------------------------------------------- Savegame compression support ---------------------------- Freeciv can use several different compression libraries for compressing its savegames. See server setting "compresstype". * zlib (gzip compression) is required to compile freeciv so zlib compression support is always present * bzip2 compression is built into Freeciv if bzip2 libraries and headers are present at configure time * xz compression is built into Freeciv if liblzma library and headers are present at configure time While this feature is called "Savegame compression support" it actually applies to loading of all the section files: savegames, rulesets, tileset spec files... If compression support is built into Freeciv, you can compress any of these files and Freeciv can still load them. Freeciv ships with all the data files uncompressed, except scenarios which are gzipped. ---------------------------------------------------------------------- Loadable AI modules ------------------- Freeciv can be built with support of loading AI code from custom module. There can be multiple modules loaded at once, and AI players can use different module from each other. This feature is not enabled by default. When it's not enabled, default AI code is built in to server and always used. You can enable this feature with '--enable-aimodules'. For this to work you have to enable also building of shared libraries (and modules) with '--enable-shared' as discussed in chapter 'Shared libfreeciv' All modules, both default and custom, must be installed under ${libdir}/fcai (/usr/lib/fcai for example) for their loading to work. ---------------------------------------------------------------------- Public servers -------------- Sadly we have not resources to keep public servers for many different Freeciv versions running. To give your users ability to play on public servers, try to provide them as current Freeciv client version as possible. To see list of currently running public servers, see "http://meta.freeciv.org/metaserver.php" Note that from the web you can see complete list, while list shown by Freeciv client only lists compatible servers. Any a.b.c release is network compatible with any a.b.d release. If you provide 2.4.c client, it can be used to play on 2.4.d server.