This page describes how the client itself is put together. It may eventually containing instructions for retrieving the source (assets not included).
The client is made up of a number of modules. I have ideas for a number of PF related applications that could make good use of some of the code that must be developed to complete the client. For this reason, the client will be broken up into a number of separate libraries and applications.
A basic library useable by all PF related projects. Contains stuff such as common constants used (profession codes, item type codes, equipment codes and so), parsers for appearance data and other Object based data.
This is the lowest level Ice library, and depends on no other Ice libraries. It does have it own dependencies :-
Basic library for talking to a PF server. Deals with all the low-level message handling, providing objects for each message and it's replies. For example, this library is already used in Icechat - A Planet Forever Chat Client.
This is based on Netty, for high performance non-blocking I/O. It depends on :-
Just a library that contains all user interface / 3d assets. This is separated to allow sharing across multiple projects that need assets (e.g. I intend to have a tool that will help with clothing design, this will need the same assets as the game).
The game UI (and in the future other 3d tools), is built on Tonegodgui. This provides the basic UI system and a suite of controls. However, in the course of writing Iceclient, I have made a bunch of new and extended controls that would be useful in other projects too.
Iceui is in two parts. Firstly, a Layout Manager that sits on top of Tonegodgui. This allows much faster layout design as absolute positions and sizes do not have to be used. Secondly, the custom controls themselves that make use of the layout manager.
These include :-
Depends on :-
Contains (or rather will) all of the basic classes for handling high level EE scene elements, such as Bipeds and other Creatures, or Terrain. By separating these elements I can build other 3d PF related applications that share code with the client. For example, a standalone Creature Tweak, or a standalone Terrain Editor.
Depends on :-
The game itself. This depends on :-