Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Free and adless chess website, trying to scale

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 bin
Octocat-spinner-32 lichess
Octocat-spinner-32 src
Octocat-spinner-32 vendor
Octocat-spinner-32 web
Octocat-spinner-32 xhr
Octocat-spinner-32 .gitignore
Octocat-spinner-32 .gitmodules
Octocat-spinner-32 LICENSE
Octocat-spinner-32 README.markdown
Octocat-spinner-32 TODO
README.markdown

Very fast Chess game designed to run on a small server and play hundreds of concurrent games. GUI is only HTML5 and JavaScript.

  • Allows to play with a friend, a random player or an artificial intelligence.
  • Supports castling, en passant, selective promotion, color selection, check and mate detection, threefold repetition, and move validation.
  • Chess clock, integrated chat, real time spectator mode and analysis interface available.
  • Chess variants abailable: Standard and Chess960
  • Translated to more than 45 languages thanks to contributors.
  • Uses only open source languages: PHP 5.3, HTML5, Javascript and CSS. Powered by Symfony2, jQuery 1.5 and jQuery UI 1.8.

PLAY

FEEDBACK

I'm eagerly waiting for bug reports and feature requests in Lichess Forum

INSTALL

Lichess is built on Symfony2, which is under heavy development at the moment.

It requires APC. It's a free and open opcode cache for PHP.

It uses MongoDB for game storage.

Get the code

git clone git://github.com/ornicar/lichess.git
cd lichess
git submodule init
git submodule update --init --recursive

Check your server requirements

Open your browser at http://myhostname/check.php

You can also run checks from command line, but the results may differ:

php web/check.php

Initialize things

By running this script:

./bin/reload

It will build the bootstrap, clear the cache, warm it up, load fixtures, create MongoDB indexes and symlink assets.

You can run this script as many times as needed. Note that it reinitializes the dev and test databases.

Run

Open your browser at http://myhostname/index_dev.php

Configure Artificial Intelligence

The default AI is crafty, a opensource program written in C.

Install crafty on Debian based distros:

sudo apt-get install crafty

If you can't or don't want to install crafty, you can disable it:

# lichess/config/config.yml
lichess:
    ai:
        crafty:
            enabled: false
            priority: 2
            executable_path: /usr/bin/crafty
            book_dir: /usr/share/crafty
        stupid:
            enabled: true
            priority: 1

Lichess will then use the next AI available, called "stupid". It's dumb as hell but it plays :)

APC cache slam

If you get cache slam warning in logs, upgrade APC and/or disable the warnings in apc.ini

apc.slam_defense="Off"

TEST

Lichess is well tested. You should run the tests if you plan to modify the code.

You need PHPUnit 3.5 installed.

Run all unit and functional tests

phpunit -c lichess

To get functional tests passing, you need to enable APC in CLI.

# /etc/php5/cli/conf.d/apc.ini
extension=apc.so
apc.enabled=1  
apc.enable_cli=1
apc.shm_segments=1  
apc.shm_size=64
Something went wrong with that request. Please try again.