Herkules: what's that HQ of yours ?
Not so easy to say in a single sentence....
HQ is a framework that allows to define realtime shared data systems. It is built around the networking unit called ObjectBus which in turn relies on NIO.
HQ introduces and implements a notion of 'identity', which is a key term in distributet systems.
The main idea of HQ is to divide an objects being into several facettes and maintain each of the facettes seperately in a subsystem. 'Seperately' means that each facette may use its own protocol and distribution scheme. All facettes are interconnected by the corresponding 'identity'.
Currently defined subsystems are
- location - handles distribution of spatial data
- registry - handles hierarchic objects relations, can be used for groupings, squads, inventories, type systems and such
- property - handles object attributes
- time - common meaning of 'time' (! VERY important!)
- stuff - chat, messaging...
The implemented subsystems are related to JSDT bc. updates are communicated transparantly. The protocols used can be problem specific. E.g. a server may decide NOT to distribute certain spatial data everywhere (bc. of visibility limitations), whereas structural changes are always distributed.
HQ allows to create different clients that are only concerned about certain aspects of the whole environment. Think of a radar screen application which might only be interested in spatial data, but not in object properties or relations (radars are not very smart to that respect
Of course, HQ is not as mature as JSDT is and there are still a lot of things to do. But game prototypes like FlyingGuns and JPilot show that it is reliable and allows for very smart data management and extremely low bandwidth needs.
Still, ObjectBus and its tools are available all the time, so there is an easy way just to communicate simple, custom messages like game events.
I could talk alot more about that ....