All Projects → sensuikan1973 → pedax

sensuikan1973 / pedax

Licence: GPL-3.0 license
Reversi Board with edax, which is the strongest reversi engine.

Programming Languages

dart
5743 projects
C++
36643 projects - #6 most used programming language
CMake
9771 projects
ruby
36898 projects - #4 most used programming language
javascript
184084 projects - #8 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to pedax

alpha-zero
AlphaZero implementation for Othello, Connect-Four and Tic-Tac-Toe based on "Mastering the game of Go without human knowledge" and "Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithm" by DeepMind.
Stars: ✭ 68 (+277.78%)
Mutual labels:  reversi, othello
alphazero
Board Game Reinforcement Learning using AlphaZero method. including Makhos (Thai Checkers), Reversi, Connect Four, Tic-tac-toe game rules
Stars: ✭ 24 (+33.33%)
Mutual labels:  reversi, othello
sentry-fastlane-plugin
Official fastlane plugin for Sentry
Stars: ✭ 100 (+455.56%)
Mutual labels:  sentry, fastlane
reversi
Multiplayer Reversi Game on Internet Computer
Stars: ✭ 62 (+244.44%)
Mutual labels:  reversi, othello
Myapp
React Native 工程实践
Stars: ✭ 83 (+361.11%)
Mutual labels:  sentry, fastlane
Slashtrace
Awesome error handler. Demo: https://slashtrace.com/demo.php
Stars: ✭ 182 (+911.11%)
Mutual labels:  sentry
react-native-template
An opinionated template to bootstrap your next React Native app with all the time-wasting packages you need to have.
Stars: ✭ 132 (+633.33%)
Mutual labels:  sentry
Sentry Telegram
Plugin for Sentry which allows sending notification via Telegram messenger.
Stars: ✭ 168 (+833.33%)
Mutual labels:  sentry
Cfworker
A collection of packages optimized for Cloudflare Workers and service workers.
Stars: ✭ 152 (+744.44%)
Mutual labels:  sentry
executorservices
Dart executer services.
Stars: ✭ 17 (-5.56%)
Mutual labels:  isolate
serilog-sinks-sentry
A Sentry sink for Serilog
Stars: ✭ 34 (+88.89%)
Mutual labels:  sentry
sentry-wxwork
Plugin for Sentry which allows sending notification and SSO Login via WeChat Work.
Stars: ✭ 30 (+66.67%)
Mutual labels:  sentry
Terraform Provider Sentry
Terraform provider for Sentry
Stars: ✭ 183 (+916.67%)
Mutual labels:  sentry
Localizr
Localizr is a Tool that handles and automates the generation of localization files for IOS and Android so there will be only one source of truth for all of your localization strings.
Stars: ✭ 33 (+83.33%)
Mutual labels:  fastlane
Wp Sentry
A (unofficial) WordPress plugin reporting PHP and JavaScript errors to Sentry.
Stars: ✭ 174 (+866.67%)
Mutual labels:  sentry
generator-create-docusaurus
A generator for new docusaurus projects.
Stars: ✭ 13 (-27.78%)
Mutual labels:  docusaurus
Django Guid
Inject an ID into every log message from a Django request. ASGI compatible, integrates with Sentry, and works with Celery
Stars: ✭ 166 (+822.22%)
Mutual labels:  sentry
birthtalk
Meet who have birth common with you
Stars: ✭ 36 (+100%)
Mutual labels:  fastlane
dart vlc
🎞 Flutter audio / video playback, broadcast & recording library for Windows & Linux.
Stars: ✭ 439 (+2338.89%)
Mutual labels:  flutter-desktop
Blog
若川的博客—学习源码整体架构系列8篇,前端面试高频源码,微信搜索「若川视野」关注我,长期交流学习~
Stars: ✭ 234 (+1200%)
Mutual labels:  sentry

pedax_logo pedax

screenshot_macos



pedax is Reversi Board GUI with edax, which is the strongest reversi program.

pedax has 4 features.
  • Mac/Windows/Linux are supported. You can install from Mac App Store or Microsoft Store.
  • Seamlessly, you can see evaluation value, e.g. +4, -10.
  • Customizable important options, e.g. book file path, search level, advanced indicator.
  • 2 languages (English, Japanese) are supported.


Development

Flutter CI Flutter Build codecov

Run

./scripts/setup_flutter.sh
flutter run --dart-define "SENTRY_DSN=xxx" # env is optional

Architecture

The technical point of pedax is as follows.

  • pedax needs to call Expensive Native(C) logic such as computing evaluation value.
  • Native(C) logic needs allocated large data. It's desirable to daemonize Native(C) process.

So, I have to use isolate with ffi(libedax4dart) skillfully to achieve seamless non-blocking UI.

%% https://mermaid-js.github.io/mermaid/#/sequenceDiagram
sequenceDiagram
  actor User
  participant MainIsolate as Main Isolate
  participant EdaxServer as Edax Server
  participant EphemeralWorker as Ephemeral Worker
  participant EdaxProcess as Edax Process [C]

  link EdaxServer: source @ https://github.com/sensuikan1973/pedax/tree/main/lib/engine
  link EdaxServer: caller @ https://github.com/sensuikan1973/pedax/blob/main/lib/models/board_notifier.dart
  link EphemeralWorker: source @ https://github.com/sensuikan1973/pedax/tree/main/lib/engine
  link EdaxProcess: binding source (Dart) @ https://github.com/sensuikan1973/libedax4dart
  link EdaxProcess: origin source(C) @ https://github.com/sensuikan1973/edax-reversi/tree/libedax_sensuikan1973

  User ->> MainIsolate: launch pedax
  MainIsolate ->> EdaxServer: spawn and notify my SendPort
  EdaxServer ->> MainIsolate: notify my SendPort<br/>and start listening
  EdaxServer ->> EdaxProcess: initialize via ffi

  User ->> MainIsolate: action (e.g. tap)
  MainIsolate ->> EdaxServer: request EdaxCommand<br/>via SendPort

  alt light EdaxCommand
    EdaxServer ->> EdaxProcess: stop EdaxCommand being executed via ffi
    EdaxServer ->> EdaxProcess: execute requested EdaxCommand via ffi
    EdaxProcess ->> EdaxServer: return result
    EdaxServer ->> MainIsolate: notify result via SenPort
    MainIsolate ->> MainIsolate: update UI
  else heavy EdaxCommand
    note right of EdaxServer: spawn another isolate not to block EdaxServer.<br>Then, EdaxServer can accept other requests.
    EdaxServer ->>+ EphemeralWorker: spawn and notify Main Isolate SendPort
    EphemeralWorker ->> EdaxProcess: stop EdaxCommand being executed via ffi
    EphemeralWorker ->> EdaxProcess: execute requested EdaxCommand via ffi
    note over EdaxProcess: heavy...
    EdaxProcess ->> EphemeralWorker: return result
    EphemeralWorker ->>- MainIsolate: notify result via SenPort
    MainIsolate ->> MainIsolate: update UI
  end
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].