GCP - Game Control Program
It is a highly modular tool to administrate games servers, especially
Quake servers. It was created because a friend of mine, who administrated a TF
server a while ago, needed a replacement for QControl and a good, realistic statistic tool.
The last need disappeared with time, but the first one stayed. So on one fine day
I sat down and started developing a tool of my own.
After 3 years, some big breaks and 2 rewrites (with a new architecture every time) later,
the program seems to be usable :)
Like said before, the program is highly modular. The real program is only a fast
bus system for distributing events (which can contain also a chunk of data): DataBus. Everything
else is only a component which listens on this bus for certain events or produces such events.
Some components need other components, because they want to listen for theit events. But they
don't need to know how they are created. So a component which creates a game statistic or allows
remote administration doesn't need to know anything about the running server and its specifica.
GCP comes with a number of components:
- starting a game server and getting hold of all log messages
- creating log files (complete or rotated per map)
- parsing log messages (game independent and configurable)
- sophisticated remote administration (user groups, extensible command set)
- sending commands to a running server (Q,QW,Q2,Q3)
- automatic kicking system according to specific rules (eg. too high rate set by the client)
- check if a server is hanging and kill the process to force a restart
- sending commands to the server at specified times - allows timed startup / shutdown of servers
The components which are part of such a bus system are configured in a XML file (see
CONFIG). It is possible to have more than one bus in a running virtual machine, so one
can handle multiple servers without much overhead.
This program is distributed under the GPL (see License).
The 2 packages de.hendriklipka.databus and de.hendriklipka.util are not specific for this
project, but they are included (because I have no separate web page for them).
The current stable version is 1.0.2:
The current development version is 1.1.0: