This is the javadoc generated code documentation for FreeCol.
Overview
Themain package contains the class 
FreeCol which is responsible for handling 
the command-line arguments and starting either 
a stand-alone server or a client-GUI.
The rest of the program has been divided into three separate packages:
client,
common and
server.
You might have noticed a fourth package named
metaserver, but this is a separate
program. The metaserver is running on meta.freecol.org:3540 
in order to maintain a central list of public servers. 
 
Client/server-architecture
We use a client/server-architecture. That is: a group of clients connects to the server in order to play a game. We are also using this approach even when a singleplayer game has been chosen (then there is only one client connected to the server).The client and the server are really two different programs, even though it is possible to start the server from the client GUI, and all interaction between the client and the server, after the creation of the server, should be done by communicating through the network.
Both the clients and the server has a game model, but only the server has the complete game model containing all the information. The client model only contains the information being visible to the player using the client.
One important point here is: You will need to update all the clients' models as well as the server model if you want perform an action (like building a colony, moving a unit etc).
Read more at: 
Overview of the client/server-architecture
 
The game model
Thecommon package contains everything being shared between 
the client and the server. One of these things is the 
game model which is best described as 
being a model of the imaginary world we are creating. 
The model should only contain the information needed to model the imaginary world. That is; it should not contain information on how the map should be displayed etc.
| Package | Description | 
|---|---|
| net.sf.freecol | FreeCol | 
| net.sf.freecol.client | FreeCol Client Package | 
| net.sf.freecol.client.control | FreeCol Client Control package | 
| net.sf.freecol.client.gui | FreeCol Client GUI package | 
| net.sf.freecol.client.gui.action | Contains the  Actions used by the GUI in menus and other places. | 
| net.sf.freecol.client.gui.animation | Contains the FreeCol unit amimation classes. | 
| net.sf.freecol.client.gui.dialog | Contains the dialog-specific displays | 
| net.sf.freecol.client.gui.images | |
| net.sf.freecol.client.gui.label | Contains the Label-specific displays | 
| net.sf.freecol.client.gui.mapviewer | |
| net.sf.freecol.client.gui.menu | Contains the FreeCol menu classes. | 
| net.sf.freecol.client.gui.option | Contains user interface classes for visualizing  options. | 
| net.sf.freecol.client.gui.panel | Contains the panel classes deriving from
       MigPanelorFreeColPanel | 
| net.sf.freecol.client.gui.panel.colopedia | Contains the Colopedia-specific panels | 
| net.sf.freecol.client.gui.panel.report | Contains the FreeCol Report-specific panels | 
| net.sf.freecol.client.gui.plaf | Contains the user interface objects for the "FreeCol Look and Feel". | 
| net.sf.freecol.client.gui.tooltip | Contains the  JToolTip-specific displays | 
| net.sf.freecol.client.gui.video | Support for playing video. | 
| net.sf.freecol.client.networking | Contains the client networking classes. | 
| net.sf.freecol.common | FreeCol Common package | 
| net.sf.freecol.common.debug | Contains the FreeCol debugging classes. | 
| net.sf.freecol.common.i18n | FreeCol Internationalisation package | 
| net.sf.freecol.common.io | Classes for reading and writing FreeCol data files. | 
| net.sf.freecol.common.io.sza | Support for reading an animation made from images stored in a .zip file. | 
| net.sf.freecol.common.logging | FreeCol Common Logging package | 
| net.sf.freecol.common.metaserver | Contains the common networking classes. | 
| net.sf.freecol.common.model | FreeCol Game Model package | 
| net.sf.freecol.common.model.mission | Contains the FreeCol  Unitgoal classes. | 
| net.sf.freecol.common.model.pathfinding | Classes used when making searches on the map. | 
| net.sf.freecol.common.networking | Contains the common networking classes. | 
| net.sf.freecol.common.option | Contains classes for describing, and saving the state of,
  a game option. | 
| net.sf.freecol.common.resources | Classes for handling resources. | 
| net.sf.freecol.common.sound | FreeCol Sound and Music package | 
| net.sf.freecol.common.util | Contains the FreeCol Collection of small static helpers. | 
| net.sf.freecol.metaserver | FreeCol Meta server | 
| net.sf.freecol.server | The main package of the server package tree. | 
| net.sf.freecol.server.ai | FreeCol Artifical Intelligence | 
| net.sf.freecol.server.ai.mission | Contains the FreeCol Artifical Intelligence  AIUnitmission clases. | 
| net.sf.freecol.server.control | Contains the classes responsible for the control of the game. | 
| net.sf.freecol.server.generator | Contains the map generator. | 
| net.sf.freecol.server.model | Contains model classes with server specific information. | 
| net.sf.freecol.server.networking | Contains the server networking classes. | 
| net.sf.freecol.tools | Contains tools directly related to FreeCol. |