FreePop Logo

FreePop

Links: [About] [FAQ] [Development] [SF Project]

Development

These are various notes made during development to keep track of important thoughts. Most of them are long term project-aim stuff. Some of them may be about impending decisions.

Mailing List

There was a development mailing list at freepop-devel@lists.sourceforge.net, but it became a spam-sink, so I got rid of it. Any queries about FreePop can be instead sent to: bh_doc@users.sourceforge.net

Source

If you're interested in taking a look at the latest source, it can be gotten thusly:

svn co https://svn.sourceforge.net/svnroot/freepop/freepop/trunk
Then, to being building it, run
./autogen.sh
before the usual configure, make, etc.

Other useful things are located in different modules on the svn server. For example, sources for media files (where sources exist) are located in the “media” module (i.e. https://svn.sourceforge.net/svnroot/freepop/media/trunk), tools necessary for processing certain graphics files are in the “alphatools” module, and website files are in the “htdocs” module.

Contributing

FreePop can always use new and improved code, sounds, and graphics. The following outlines the file formats employed by FreePop. Below that is a list of the media in or required by FreePop so far.

Formats

Graphics

32 bit RGBA PNG files are preferred. The image dimensions are not important so long as the size visibly matches that of the blank tiles for entity or tile images or other widgets for the GUI. Properly alpha-masked images can be produced from 3D scene renderings by using the “mergealpha” tool, part of the alphatools module.

Images which are to be used for peeps and other entities that use the player's colour have special requirements. The idea is that these entities are drawn by two sets of images, one un-coloured image as a background and another coloured as a foreground. It's important to get the alpha channel of these two images right so that the images coalesce properly. A tool to aid this called “mergecloth”, is also part of alphatools.

Sounds

The sound system is not yet implemented, though when it is FreePop will likely use Ogg Vorbis.

Media

Key
Statuses:
  1. Complete It's finished.
  2. Good Try to give other things priority.
  3. Needs Work Some pieces are missing.
  4. Placeholder The code is further ahead than the media.
  5. Missing There isn't even a placeholder!
Urgencies:
  1. None There's no need for this now.
  2. Suggested We would like this, but it's not critical.
  3. Wanted This ought to be worked on soon.
  4. Necessary We could really use this now.
  5. Urgent This needs attention immediately.
Graphics

This list isn't complete.

Sounds

The sound system is not yet implemented, so while FreePop has no sound media it is not a burning priority at the moment. It may soon be.

Short Term Notes

Networking

FreePop has recently been separated into server/client parts.

Client/Server

The client/server model is best. Similar in style to the FreeCiv system, one user (or even an outside party) must run a server, while all users who wish to play (including the one who is running the server) must run clients which connect to that server. Running a server would be necessary even if there is only one user who is playing against AI. (AI could be implemented in the server itself, or perhaps as special “clients” which do not actually interact with the user).

Game State Permissions

The idea is that only the server can modify the game state. All the client does is show the user the current status, and tell the server what the user wants to happen. The server performs all the game logic.

Entity Identity

Networking is where the Identity class is meant to do its job. Each entity has a unique Identity object used to identify them between the client and server - both the client and server's identities for a corresponding entity are the same.

An Identity must guarantee it is unique within the game network (between all players in a single game). Previously the Identity class was just a wrapper around ClanLib's network system's identity field in NetObjects, however since that approach has been replaced the Identity class takes care of unique identifiers itself.

Other things that need to be uniquely identified may use similar but different methods. For example, players are identified by slot numbers.

Long Term Notes

To Do

This is a list of what needs to be done. It may be that gradual development takes care of some of them. Ironically, this list is incomplete.

Feature List

This is a list of all the things we plan to put (or are considering putting) into FreePop at some stage.

(?) = I'm not sure if it's worth doing.

(-) = Not in first stable release. Maybe in a later release.

Divine Interventions

At the moment this is just a list of effects from Populous 2 that must be added to FreePop. More original effects to follow.

SourceForge Logo Viewable With Any Browser

This site is up to date as of 2008/03/01.

Lawyer bait: All trademarks and registered trademarks are the property of their respective owners. This page is part of the FreePop project, and as such it is also licensed under the terms of that project.