The frameworks we constructed: ==============================

Handling picking as events

The PickEvents and the distribution of them by the PickableObjects to the registred PickListeners is an example of the Event pattern. The use of this pattern in the 3D interface makes working with that interface almost as easy as with a 2D one.

Message Protocol

We wanted to set a goal that the messages, that would be sent between the client and server, have a transparent protocol as possible. We wanted to obtain a framework that allows us to write one protocol definition that would be used both client- and serverside, in order to avoid protocol dependancies between these sides. Therefore the determining of the type, the marshalling and unmarshalling should be done by this framework itself.

We decided to use Sun's ObjectOutputStream/ObjectInputStream for marshalling and unmarshalling the messages, and we created {@link quest.global.net.Message} as the base class for the network messages. This way only Objects of type Message could be sent, and the Message implementation of the toString method would facilitate debugging. Combined with the implicit rule that inner classes of the subclass that overrides Message, a message hierarchy can be determined of what type a certain object message is. This results in a framework we call 'Message Protocol' framework. Combined with the ClientDaemon/ServerDaemon approach it results in a rubust message passing environment.

-