This is the javadoc generated code documentation for FreeCol.

See:
          Description

Packages
net.sf.freecol The main package of FreeCol.
net.sf.freecol.client This is the main client package.
net.sf.freecol.client.control Contains the classes responsible for the control of the game.
net.sf.freecol.client.gui Contains the GUI classes.
net.sf.freecol.client.gui.action Contains the Actions used by the GUI in menus and other places.
net.sf.freecol.client.gui.animation  
net.sf.freecol.client.gui.i18n
net.sf.freecol.client.gui.menu  
net.sf.freecol.client.gui.option Contains user interface classes for visualizing options.
net.sf.freecol.client.gui.panel Contains the panels and dialogs.
net.sf.freecol.client.gui.plaf Contains the user interface objects for the "FreeCol Look and Feel".
net.sf.freecol.client.gui.sound This package contains the classes for handling sfx/music in FreeCol.
net.sf.freecol.client.gui.video Support for playing video.
net.sf.freecol.client.networking Contains the client networking classes.
net.sf.freecol.common Contains classes in use by both the server and the client.
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 Contains classes for handling the logs.
net.sf.freecol.common.model Contains the game model.
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.util  
net.sf.freecol.metaserver This package contains an implementation of a meta server.
net.sf.freecol.server The main package of the server package tree.
net.sf.freecol.server.ai The main package of the ai package tree.
net.sf.freecol.server.ai.goal  
net.sf.freecol.server.ai.mission Contains the missions an AIUnit can be assigned to.
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.

 


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.