Kaillera

Kaillera is middleware designed to aid networked multiplayer play for emulators. The word "Kaillera", also spelled "kaïra", is the verlan of the French word "racaille" which is used in reference to "hooligans".
History.
Kaillera was developed by Christophe Thibault in the years 2001-2003. His most recent entry was the Kaillera Client library and SDK on 14 April 2003. Later in early 2006, rights and source code of Kaillera were sold to a private online gaming advertising company called TC. Ads and Etai Hugi. On 17 June 2006, Christophe Thibault himself publicly confirmed the sale of Kaillera and also announced that TC. Ads. no longer had anything to do with the Kaillera project and that Etai Hugi is the only owner.
On 20 November 2006, Etai Hugi announced that a new version of Kaillera would be released in "the next several months". His announcement also suggested that the new version would be "much better" and "more efficient" than the current version. In July 2007, he posted on the official forums and sent emails to the forum administrator announcing that the next official release would occur in "3-4 months." This announcement coincided with a revamp of the forums and the posting of new unofficial builds created by others for download (the first new downloads posted in nearly four years). On 4 November 2007, it was announced that due to unforeseen "bugs" the imminent release would be postponed for a time. It was later announced that the new version of Kaillera would be released on 7 April 2008. However, the official Kaillera website along with existing Kaillera master servers list was taken down a few days prior to the release date. Later when it came back up, no explanations for the downtime was given and nothing was released. Etai Hugi an Israeli developer purchased Kaillera from Christophe Thibault in 2006.
Features.
Like most networked multiplayer gaming systems, Kaillera is implemented to work on client–server architecture.
The client is implemented as a small library with a typical GUI which is incorporated with the emulator. Its simple self-explanatory API consisting of only 8 functions allow emulators to perform necessary functions such as specify the list of games it supports and control game execution to some extent. Everything after enabling the client to starting the game is managed by the client and the user. The client can only make requests to server on user's input and react to server's response.
On the other hand, the server takes the tedious role of managing all the users. Users can join servers if their conditions are satisfactory. Then they are allowed to chat and make games on the server which other users can join. A maximum of 8 players are allowed to participate in a game and others are treated as spectators. Once a game starts, the server is also responsible for scheduling and mix matching data sent by emulators in a manner befitting user's ping and connection configuration.
Notes.
Note 1: There are several third-party versions of MAME with Kaillera, but these violate the MAME license by not having the source code to the Kaillera client library distributed, even though the source code to the modified version of MAME itself (such as "Mame32k", "Mame32 Plus Plus" and "MameLang32+") are always provided.