----------------------------------------------------------------------
                   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.2 to 2.3
------------------------
* Server readline history file is now called ~/.freeciv-server_history.
  It used to be ~/.civserver_history. Freeciv does not provide any
  kind of migration when upgrading. Old file is not automatically
  removed
* Client uses ~/.freeciv-client-rc-2.3 for storing its options.
  Options are always saved to that file.
  Loading of options first tries to get options from
  ~/.freeciv-client-rc-2.3. If that file does not exist it tries to
  load options from file ~/.freeciv-client-rc-2.2 generated by
  Freeciv 2.2. If that file too doesn't exist, it tries to load
  options from file ~/.civclientrc saved by earlier Freeciv release
* Default (see server setting "savename") savegame name now starts
  with "freeciv". Used to be "civgame".
* There is new binary called "freeciv-modpack"
* Default tileset is now "amplio2". We don't ship previous default, "amplio",
  any more.
  Users may have "amplio" saved in their preferences as preferred tileset,
  but that's harmless as freeciv will use amplio2 instead when it cannot
  find tileset mentioned in preferences.
* C++ compiler is not needed. We no longer need toluaxx app and not
  build it. C++ compiler is not needed at all when compiling freeciv 2.3
  Note that this will change somewhat again in future. In current
  development version development of new Qt-client has been started.
  Compiling that client will require C++ compiler. Of course compiling
  that client, like any client, is fully optional. As Qt-client
  development has just been started, it will take some time before
  it's suitable for end users.

----------------------------------------------------------------------
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. Base 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.

----------------------------------------------------------------------
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.3"
* 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.3/"
* Server can write log to file specified with "-l" command line option

----------------------------------------------------------------------
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"

----------------------------------------------------------------------
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

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.

----------------------------------------------------------------------
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 version as possible.
To see list of currently running public servers, see
"http://meta.freeciv.org/metaserver.phtml" 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.3.c client, it can be used to play on 2.3.d server.
