The Kitto Server Engine (KSE) allows gamers to play in real time with a huge amount of other gamers. It handles the data from all clients, keeps them in sync and also provides authentication over multiple server instances.
It is built with consideration of performance, which is key for a huge amount of clients playing simultaneosly, but also with consideration of scalability and modularity.
KSE processes all messages between clients (gamers), multiple servers and authentication services. Messages are transfered via UDP to ensure highest performance, which is essential in multitplayer gaming.
Messages can be split in multiple parts to allow even transferring more data, if needed. They can also be routed between instances (servers or processes). Worker instances can subscribe to different types of messages and process them. They can then be routed back to the source client who originally sent the request.
Messages can be send to a specific client (gamer) or broadcasted to channels, which hold multiple clients.
KSE works with asynchronous sockets which allows scalibility with increasing processing power. It is also capable of spreading work load among multiple worker instances (servers or processes). Spreading work load can be used either to balance work load or to increase reliability.
An authentication service is provided which authenticates the client and then provides him access to individual servers. Servers can register themselfs at the authentication service and the client can request the server list at the authentication service. The authentication service also handles session management of clients.
The KSE architecture consists of the authentication service, one or multiple servers and none or multiple workers. The lightest configuration consists of the authentication service and one server. Workers can be added to take over specific tasks from the main server. The main server is capable of balance the load between workers to provide scalability. If a worker fails while he had a task assigned, the main server reassignes the task to the next worker or processes it by himself.
Every message has a corresponding message handler. The message handler proccesses the specific message and can be run by the main server or by a worker.
KSE runs on Linux, Mac or Windows. The lightest configuration tested was a Raspberry Pi 3 Model B.