Share Site Map Contact us Home Page
Home > The Learning Machine Challenge > LMC2 SDK Specs

LMC2 Quick Overview

LMC2 General Information

LMC2 Official Rules

LMC2 SDK Specs

LMC2 Protocol Specs

LMC2 Testing Zone

Enter LMC2

LMC2 SDK Specs
  Printable version
Ai Discussion Boards  Talk about it
These are the SDK interface specifications designed to make your life easier.
Your program is participating in a training session in which it is either a Player - being trained and judged by another human or computerized trainer, or it is a Game – which simulates such a trainer. The goal of these games is to test a player’s ability to acquire various skills related to language and conversation. The language being taught might follow similar rules to an existing, human based langue or follow imaginary rules and symbol sets invented by games developers.

The LMC2 SDK completely hides the technical details of the underlying protocol and allows you to focus on implementing your program’s logic. You will probably want to work directly with LMC2’s protocol only if you are writing a game or player in a programming language which is not supported by this SDK. Currently, the SDK supports program development in C++, Java and TCL.

To test your program, you should download the Judge program, Sample players and games from LMC2's Testing Zone. Then you can debug and test your program’s performance against other players and games.

The rest of this section describes how to use LMC2’s Software Developer’s Kit in the development of games and players. Please send any requests for clarifications, questions and problems you find with this SDK to

This document contains the following sections:
> Terminology
> How to use the SDK
> Download the SDK Source Distribution
> How to develop a game
> How to develop a player
> Under the hood – SDK’s base classes

Each program must identify itself with a unique Name that will be used by the Judge when managing the tournament and comparing result. The name must not contain white-spaces.

Each language game defines its own Symbol Table. All of the game’s input, output and example strings must be composed of symbols from this Symbol Table. Each entry in the symbol table represents a single unique symbol name. A Symbol cannot have white-space in its name.

A game’s input, output and examples are each a sentence that is composed of words. Some games uses the equivalence of letters as their symbol set (character mode games), some use the equivalent of words instead (word mode games). For character mode games, the player can sometimes receive form the game a special symbol called a Word-Break Symbol that can help the player chunk incoming and outgoing symbols to words.

Each output sentence emitted by the player is given a Score by the game. The score is a float number between -1 and 1 that reflects the “correctness” of the players output. A value of 1 is the best score possible where -1 is the worst. A game will usually use 2 to 4 discreet score values as feedback to the player.

If the player got a score which is less then perfect for its Output, the game can help it by providing an Example Sentence that would have got the perfect score.

A language game is composed of a series of Moves. Each move simulates a single dialogue exchange between two parties. Moves have the following predefined sequence:

Game-->Player: Input sentence
Player-->Game: Output sentence
Game-->Player: Score
Game-->Player: Example sentence Optional!

A game can be in either Train Mode or Test Mode. When in Train Mode, the moves’ score is not accumulated into the game’s total score. This allows a game to behave in an explorative way knowing it won’t be panelized for mistakes. In Test Mode, the received score is added or subtracted from the game’s final score.

LMC2’s language games are inherently single player games, with a small (500-5000) number of moves and a relatively small number of symbols.

How to use the