Use stockfish chess engine in your React Native application.
npm install @loloof64/react-native-stockfish
import {
useStockfish
} from '@loloof64/react-native-stockfish';
// ...
const [stockfishOutput, setStockfishOutput] = useState('');
const {startStockfish, stopStockfish, sendCommandToStockfish} = useStockfish({
onOutput: useCallback((output: string) => {
setStockfishOutput((prev) => prev + output);
}, []),
onError: useCallback((error: string) => {
setStockfishOutput((prev) => `${prev}\n###Err\n${error}\n###`);
}, [])
});
// ...
startStockfish();
// ...
sendCommandToStockfish('go movetime 1000');
// ...
stopStockfish();
Get started with the project:
$ yarn
Run the example app on iOS:
$ yarn example ios
Run the example app on Android:
$ yarn example android
See the contributing guide to learn how to contribute to the repository and the development workflow.
If you need to upgrade Stockfish source files, create a folder stockfish inside cpp folder, copy the src folder from the stockfish sources into the new stockfish folder.
In stockfish/src/main.cpp replace the name of function main
with stockfish_core
.
Also you need to make some more adaptive works :
-
copy the cpp/fixes folder inside the cpp/stockfish folder
-
replace all calls to
cout << #SomeContent# << endl
byfakeout << #SomeContent# << fakeendl
(And ajust also calls tocout.rdbuf()
byfakeout.rdbuf()
) But do not replace calls to sync_cout. -
copy folder cpp/fixes inside the stockfish folder
-
add include to ../fixes/fixes.h in all related files (and adjust the include path accordingly)
-
proceed accordingly for
cin
: replace byfakein
-
and the same for
cerr
: replace byfakeerr
-
in misc.h replace
#define sync_cout std::cout << IO_LOCK
#define sync_endl std::endl << IO_UNLOCK
with
#define sync_cout fakeout << IO_LOCK
#define sync_endl fakeendl << IO_UNLOCK
and include ../../fixes/fixes.h
In file CMakeLists.txt replace the names of big and small NNUE by the ones you can find in file cpp/stockfish/src/evaluate.h. Also replace those values in the file loloof64-react-native-stockfish.podspec, as well as in the file android/CMakeLists.txt.
MIT
Made with create-react-native-library
Using sources of Stockfish 17.