This is the javadoc generated code documentation for FreeCol.

Overview

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

The common 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.

Packages 
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 MigPanel or FreeColPanel
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 Unit goal 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 AIUnit mission 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.