User Tools

Site Tools


Iceclient - Code

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 :-

  • commons-io. Apache commons Library with useful I/O utitlities.


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 :-

  • Icelib
  • Netty


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 :-

  • Fancy windows. I.e. large EE style window headers with close buttons etc.
  • Image chooser.
  • Improved color chooser with mulitple palette views.
  • Alert dialogs
  • Vector3f property component.
  • Color property component.
  • Flexible tooltips (Tonegod only has text ones).
  • Various button extensions.
  • More featured Chat component. This is used more or less as is in the game.

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 :-

  • Icelib
  • Iceui



The game itself. This depends on :-

  • Icelib
  • Icenet


A simple chat application that allows you to talk on PF server without logging into the game. You login using your account credentials, select a character to “Talk As” and start chatting.

See here for the Icechat home page.

This application depends on :-

iceclient/code.txt · Last modified: 2014/01/26 10:27 by rockfire