Giter Site home page Giter Site logo

ml-research / liground Goto Github PK

View Code? Open in Web Editor NEW
105.0 11.0 35.0 16.65 MB

A free, open-source and modern Chess Variant Analysis GUI for the 21st century

Home Page: https://ml-research.github.io/liground.github.io/

License: GNU Affero General Public License v3.0

JavaScript 20.68% CSS 20.09% Vue 59.05% EJS 0.19%
chess gui crazyhouse chess-variants lichess chessground uci chess-engine vue electron-app

liground's Introduction

LiGround

A free, open-source and modern Chess Variant Analysis GUI for the 21st century

LiGround

Download

Binaries

We provide binary releases for the following plattforms:

Operating System Version
Linux liground-0.4.0-linux.AppImage
Windows liground-0.4.0-win.exe
Mac liground-0.4.0-mac.dmg
Mac liground-0.4.0-mac.zip

The current LiGround release and all its previous versions can also be found at releases.

Supported Games

Regional and Historical Games

Chess Variants

Build Instructions

Build Setup

# install dependencies
npm install

# run dev server with hot reload at localhost:9080
npm run dev

# build electron application for production
npm run build

# lint all JS/Vue component files
npm run lint

Post-Installation Actions

LiGround ships with preincluded engine binaries. By default all engines are downloaded automatically into the ./engines/ folder as postinstall action. However, if no prebuilt binaries are available for you system or something goes wrong, please go ahead and build/download them manually:

Libraries

The following libraries or assets are used in LiGround:

Library Description Usage
ffish.js A high performance WebAssembly chess variant library based on Fairy-Stockfish. Used in the GUI for legal move generation, FEN parsing & validation, pocket pieces, etc.
ChessgroundX A free/libre open source chess UI developed for lichess.org and pychess.org. Used as the main UI board element.
ornicar/lila The forever free, adless and open source chess server Many high quality assets from lichess.org (e.g. piece styles, board styles, chess fonts, ...) are used within this GUI.
Vue.js The Progressive JavaScript Framework Used as the main JavaScript Framework.
Electron Build cross-platform desktop apps with JavaScript, HTML, and CSS Used for exporting the GUI to the desktop.
electron-vue An Electron & Vue.js quick start boilerplate Used for the boilerplate code.

Related

Projects that influenced the creation of LiGround:

Project Description
tinyChessServer An xboard server for playing bughouse games via websockets
lichess.org/analysis The forever free, adless and open source chess server
vue-chessboard Chessboard vue component to load positions, create positions and see threats
cutechess A graphical user interface, command-line interface and a library for playing chess.
XBoard / WinBoard A graphical user interface for chess in all its major forms.
Nibbler Leela Chess Zero (Lc0) interface.
chess.js A Javascript chess library for chess move generation/validation, piece placement/movement, and check/checkmate/draw detection

This project was generated with electron-vue@45a3e22 using vue-cli. Documentation about the original structure can be found here.

liground's People

Contributors

bingobongomann avatar bododb avatar dacre01 avatar dependabot[bot] avatar goekaykaraahmetli avatar ianfab avatar ijhchess avatar ksthicke avatar leiflion avatar lucylmm avatar magehrke avatar martinruz avatar ptrmdr avatar queensgambit avatar samuelgjd avatar xiaoyifang avatar zerthox avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

liground's Issues

Keep going!

Putting down an issue to just tell you guys to keep at it. The chess community is in sore need of a modern GUI, not one that has not been refactored since the 90s. Do you guys mind if I post this repo around, or is that against the rules of the project? I saw the link you guys put in the lichess discord so I know this is a school thing.

loading variants

When loading a pgn with a different variant the GUI dropdown list is not updated.
And when loading a pgn of a not supported variant maybe we should alert the user and not load the file.

Reset Function

A Button(or something else) should be implemented for resetting the board/history etc. while not changing the variant.

Engine Settings - US_5

Description:
As a user I want to be able to change the engine settings to be able to use it to its fullest extend.

Acceptance Criteria:
The engine settings can be adjusted in a separate window. The changed settings will be submitted to the engine.

Loading PGN with different Variant

As mentioned in #76, loading a PGN with a different variant than the currently selected one doesn't update the board & move history.
To reproduce change the variant to anything else and load a Standard chess PGN. The board will stay at the starting FEN and the move history will remain empty.

FEN Loading

It should be possible to load a certain position using an FEN which you can paste in the text box below the board.

Principal Variation Line Navigation - US_9

Description:
As a user I want to be able to select a PV-Line from the suggested lines of the running engine, to play that move on the board.

Acceptance Criteria:
When clicking on a PV-Line the first move of the line will be executed.
While hovering over a PV-Line will the first move of the line be visually marked on the board.

FEN

Currently Shogi and 960 do not work due to the removal of ffish-es6.

PGN Browser - US_4

Description:
As a user i want to see all of the matches of a single PGN file, so that I can choose any one of them.

Acceptance Criteria:
All of the included matches of the PGN file are visible and clickable. The chosen match and the accompanying metadata will be displayed correctly. The PGN Browser marks the currently selected match and it is possible to switch between the matches.
It is possible to continue playing the chosen match.

Match History Navigation

When using the scroll wheel while the cursor is on top of the board should cycle through the match history.

Last Move Selected

When moving back through the move history either by using the arrows or by clicking on the move, the squares for the actual last move is still highlighted.

Missing # Symbol

When ending the game using an alternate method then check mate, the # symbol is missing from the match history.

Menu Bar - US_3

Description:
As a user i want to select the elements of the menu bar in order to use the provided functionalities.

Acceptance Criteria:
The menu bar consists of the following buttons Game, Engines, Settings and About. The About button links to https://github.com/ml-research/liground

960 Mode - US_19

Description: As user i want to be able to click a button to choose a 960 variant.
Acceptance criteria: When clicking the 960 button you get a text input which accepts numbers in [0,959] and returns the corresponding 960 starting position.

Engine and Variants

When changing the variant the program should automatically switch to the appropriate engine.

Evaluating PGN

It should be possible to load a PGN, then evaluate the board positions and display them in the EvalPlot with a seperate engine instance.

Save GUI information

After a restart of the program some/all of the previous selected options in the GUI should stay the same

Delete Boards

When creating a new board the old one should be deleted, to avoid memory leaks.

Selected PGN

Changing the variant, resetting the board etc after a PGN is loaded will still show the PGN as selected.

Variant rules in menu bar

The menu bar should have an option to open a tab that explains the rules of the currently selected variant

Universal Chess Interface Command Line - US_10

Description:
As a 'Expert' user I want to be able to communicate directly with the engine using the terminal and the UCI.

Acceptance Criteria:
Using a terminal user will be able to send commands to the engine directly. Only UCI commands are supported. The reply of the engine will be displayed in the terminal.

Promoting pawns - US_20

Description: As user I want to be able to promote pawns according to chess rules.
Acceptance criteria: When promoting a pawn in international chess there is a visual option to choose any eligible piece and when selecting one of these the pawn is replaced by that piece.

Expert Mode

Optional expert mode with access to a console for direct engine communication via UCI

Board Design and Variants - US_6

Description:
As a user I want to be choose between more variants to analyse them.

Acceptance Criteria:
Shogi, Xiangqi, Janggi, and Makruk are supported. These variants will be correctly displayed in the drop down menu and enable the user to switch between all available variants. If needed the chess board, engine and design will be adjusted to the chosen variant.

Game Navigation using buttons - US_7

Description:
As a user i want to use the arrow buttons to move a turn ahead/back or to jump to the start or end of the match.

Acceptance Criteria:
At every point in time I am able to use the following:
To jump at the beginning of the selected variant. If the position is the starting position then the button is greyed out and not selectable.
To jump at the end of the path history. If the position is the end position then the button is greyed out and not selectable.
To jump a turn back. If it is not possible to jump a turn back then the button is greyed out and not selectable.
To jump a turn ahead. If it is not possible to jump a turn back then the button is greyed out and not selectable.

Interactive Evaluation Graph - US_11

Description:
As a user I want to be able to watch a graph displaying the match rating over time. So that i am able to see the match defining moves.

Acceptance Criteria:
The graph displays the point history of the current match supplied by the engine. When clicking on a point on the graph the position for this point will be loaded onto the board. The graph is zoomable.

Bundle ffish in production

The ffish.wasm file is currently not bundled correctly by webpack.
During development this can be fixed by moving the file into the root project folder.
But in production the issue will result in ffish not being included in the build.

Pasting a new FEN

When pasting a new FEN in the right variant one should be able to start playing from the pasted FEN and otherwise get an error that either the FEN is invalid or the Variant is wrong

Can't build on Mac OS - Catalina

I'm getting the following error on Mac OS while building the app:

Error: Exit code: 2. Command failed: /usr/bin/perl /private/var/folders/99/yq4kk62j6ks2pmqh366mgyfj57twk_/T/t-XDp1ou/1-dmgProperties.pl
Can't locate Mac/Memory.pm in @INC (you may need to install the Mac::Memory module) (@INC contains: /Library/Perl/5.18/darwin-thread-multi-2level /Library/Perl/5.18 /Network/Library/Perl/5.18/darwin-thread-multi-2level /Network/Library/Perl/5.18 /Library/Perl/Updates/5.18.4 /System/Library/Perl/5.18/darwin-thread-multi-2level /System/Library/Perl/5.18 /System/Library/Perl/Extras/5.18/darwin-thread-multi-2level /System/Library/Perl/Extras/5.18 .) at /private/var/folders/99/yq4kk62j6ks2pmqh366mgyfj57twk_/T/t-XDp1ou/1-dmgProperties.pl line 4.
BEGIN failed--compilation aborted at /private/var/folders/99/yq4kk62j6ks2pmqh366mgyfj57twk_/T/t-XDp1ou/1-dmgProperties.pl line 4.

Any thoughts on how to fix this?

Duplicate piece styles

Changing piece style currently injects new CSS without removing the previously used style. This leads to unnecessary pollution of the document head and duplicate styles.

Example screenshot with "alpha" & "california" loaded multiple times after switching back & forth between them:
electron_LFHychWNKL

Alternate Paths - US_8

Description:
As a user I want to be able to create alternate paths to view and analyse them.

Acceptance Criteria:
There is a button to set the program to the 'Analysis Mode' in which alternative moves in the past are possible.
Alternative variants will be written in a new row, the previous variant will be continued in a new row after the current one. Alternative paths are color coded. Alternative paths that are not selected will only display their first move, further moves on that path will be shortened to '[...]'.

Sounds

Simple sounds should be played after moving a piece and a different sound for eliminating a piece

Engine control - US_18

Description: As "expert"-user I want an easy and flexible engine interface.
Acceptance criteria: name, author, options of the engine are loaded when starting Liground. When clicking the button "start engine" all the necessary data to calculate a move is sent to the engine. The returned lines are correctly displayed in the interface.When a move is played on the board, the engine receives the move and now starts calculating a move for the other side. Should the engine crash, the user receives the error report and has the option to restart the engine.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.