No description
Find a file
2024-03-16 15:42:00 +01:00
android full project 2023-10-29 22:47:21 +01:00
example next version 2024-03-16 15:42:00 +01:00
lib manual web bundle 2024-03-07 23:13:29 +01:00
linux flags 2023-11-12 17:26:37 +01:00
src web implementation, missing js and wasm artifacts 2024-02-25 00:39:40 +01:00
test missing command 2023-11-28 23:12:31 +01:00
web manual web bundle 2024-03-07 23:13:29 +01:00
windows linux & windows package lib location fix 2023-11-01 12:15:47 +01:00
.gitignore next version 2024-03-16 15:42:00 +01:00
.metadata metadata fix 2023-11-01 20:33:41 +01:00
analysis_options.yaml full project 2023-10-29 22:47:21 +01:00
CHANGELOG.md next version 2024-03-16 15:42:00 +01:00
ffigen.yaml pre work for web support: bindings separation, native preparations 2024-02-23 18:58:31 +01:00
LICENSE full project 2023-10-29 22:47:21 +01:00
pubspec.yaml next version 2024-03-16 15:42:00 +01:00
README.md next version 2024-03-16 15:42:00 +01:00

flutter_stockfish_plugin

A Flutter plugin for the Stockfish Chess engine.

The current version is based on Stockfish 16.

Usage

final stockfish = new Stockfish()

// Listen on stdout of Stockfish engine
final stockfishSubscription = stockfish.stdout.listen((line) {
    print("received: $line");
});

// Sending UCI command to get Stockfish ready
stockfish.stdin = 'isready'

stockfish.stdin = 'position startpos moves e2e4' // set up start position
stockfish.stdin = 'go depth 20' // search bestmove with a max septh of 20

// Don't remember to dispose Stockfish when you're done.
// Make shure to dispose Stockfish when closing the app. May use WindowListener.
stockfishSubscription.cancel();
stockfish.dispose();

A complete Example can be found at stockfish_chess_engine.

Web support

Web support is currently experimental and requires manuly adding assets. It uses a version of stockfish compiled with emscripten.

Usage:

  • Install emscripten and set the the Environment-Variable EMSDK
  • Build the CMakeLists.txt in web/
  • Copy the following files to web/stockfish/ in your project:
    • flutter_stockfish_plugin.js
    • flutter_stockfish_plugin.wasm
    • flutter_stockfish_plugin.worker.js
    • js_bindings.js
    • stockfish_data.bin

If a different path should be used: Change the path const's in js_bindungs.js and stockfish_web_bindings.dart

In order to make multithreading available, the site must run in a secure environment. The following headers must be set for this:

  • Cross-Origin-Embedder-Policy: require-corp
  • Cross-Origin-Opener-Policy: same-origin

Problems:

  • The current version does not include the .js, .wasm and neuralnetwork data as assets. This files will not be bundles automaticly on the web.

Goal of this fork of stockfish_chess_engine

  • Avoid limitation. This version does not redirect stdout and stdin of the app for communication with stockfish.
  • stdin and stdout were replaced with a fakestream element.
  • Stockfish internal logging might not work (could be fixed).

Credits

Directory src/Stockfish contains the latest current release. The code is modified to use a different communication interface. The original license for Stockfish can be found in their GitHub repository.

Directory web/ may contains code compiled from emscripten. Emscripten is licensed among others under the MIT License. License Page