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, meaning "hooligans" or "rascals".

History
Kaillera was developed by Christophe Thibault in the years 2001-2006. His most recent entry was the Kaillera Client library and SDK on 13 February 2002. 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 eight functions, allows emulators to perform necessary functions such as specifying the list of supported games and controlling 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.

Emulators with Kaillera support

 * Atari800Win PLus (Atari 8-bit family)
 * Bliss (Intellivision)
 * Calice32 (CPS-1, CPS-2, Sega System 16, Sega System 18, Neo Geo MVS, Gaelco System 1)
 * CCS64 (Commodore 64)
 * DEmul (Sega Dreamcast, Sega NAOMI, Sega NAOMI 2, Atomiswave, Hikaru, Cave, Gaelco)
 * DolphinNP (Nintendo GameCube, Nintendo Wii) // Modified version of Dolphin
 * Emukon (Sega Game Gear, Sega Master System)
 * ePSXe (Sony PlayStation) *Requires a Netplay plugin such as CyberPad or PS4NET.
 * FinalBurn Neo (CPS-1, CPS-2, Neo Geo MVS) // Previously known as FinalBurn Alpha
 * Gens (Sega Genesis)
 * HuE (TurboGrafx-16)
 * Houba Plus! Plus! (Various arcade systems) // MAME32PPK variant focused on 3D games (eg. Tekken Tag Tournament)
 * Kawaks (CPS-1, CPS-2, Neo Geo MVS)
 * MAME (Various arcade systems) [1]
 * Meisei (MSX)
 * Modeler (Sega System 32)
 * Mupen64++ (Nintendo 64) // Modified version of Mupen64
 * Nebula (CPS-1, CPS-2, Neo Geo MVS)
 * Nemu64 (Nintendo 64)
 * NESten (Nintendo Entertainment System)
 * Nestopia (Nintendo Entertainment System) 2
 * NNNesterJ (Nintendo Entertainment System)
 * Nostalgia (Intellivision)
 * PCAE (Atari 2600)
 * Project64k (Nintendo 64) // Modified version of Project64
 * Snes9k (Super Nintendo Entertainment System) // Modified version of Snes9x
 * WinFellow+Kaillera (Amiga) // Modified version of WinFellow
 * WinUAE-Kaillera (Amiga) // Modified version of WinUAE
 * Xanadu (Intellivision)