Giter VIP home page Giter VIP logo

desktop-postflop's Introduction

Desktop Postflop

Important

As of October 2023, I have started developing a poker solver as a business and have decided to suspend development of this open-source project. See this issue for more information.


Desktop Postflop is a free, open-source GTO solver for Texas hold'em poker.

This is a port of WASM Postflop to a native desktop application using the Tauri framework. Since WASM Postflop works on web browsers, it is more suitable for casual use. However, if you want to use the solver for more serious purposes, please consider trying Desktop Postflop.

Related repositories

Comparison to WASM Postflop

  • Shared features:
    • Free to use and open-source
    • Same solver engine and user interface
  • Advantages:
    • Faster computation
    • Able to use more than 4GB of memory
  • Disadvantages:
    • Needs to download the program and trust the execution
    • macOS builds are not distributed (you need to build the app yourself)

See the WASM Postflop repository for more detailed comparisons, including some commercial solvers.

Supported environments

  • OS
    • Windows: 10/11
    • macOS: 11.7 and later
      • We do not distribute macOS builds because we are not enrolled in the Apple Developer Program and cannot sign the app (please see the "Build" section below and build it yourself).
    • Linux: glibc 2.31 and later (e.g., Ubuntu 20.04 and later)
  • CPU
    • x86-64: must support AVX2 instructions
      • Intel: Haswell (2013) and later
      • AMD: Zen (1st gen; 2017) and later
      • If you have a CPU without AVX2 support, you can modify src-tauri/.cargo/config.toml and build it yourself.
    • Apple silicon: M1 and later

Download

You can download the app from the GitHub releases page.

  • Windows
    • The installer version (.msi) automatically installs dependent runtimes.
    • The portable version (.exe) requires the WebView2 runtime to be installed.
      • In most cases, the runtime should already be installed on Windows 10/11.
  • Linux
    • AppImage should work on most Linux distributions.
    • Alternatively, the .deb package is available for Debian-based distributions, including Ubuntu.

Uninstall

On Windows, please remove the following folder after the regular uninstallation to completely uninstall Desktop Postflop:

C:\Users\<username>\AppData\Local\b-inary.desktop-postflop

Build

Rust and Node.js need to be installed to build. On Linux, you will also need to install some dependencies; please see the Tauri documentation for details. For better performance, we also recommend installing the Rust nightly channel:

$ rustup install nightly
$ rustup default nightly

Then clone this reporitory and run the following commands:

$ npm install
$ npm run tauri build

If the build was successful, you should be able to find the application in the src-tauri/target/release/bundle/ directory.

If you want to use stable Rust instead of nightly Rust, please modify the following line in src-tauri/Cargo.toml (performance will be sacrificed):

[dependencies]
...
- postflop-solver = { git = "https://github.com/b-inary/postflop-solver", features = ["custom-alloc"] }
+ postflop-solver = { git = "https://github.com/b-inary/postflop-solver" }

Roadmap (in order of priority)

  • Results saving/loading feature (#8)
  • Hand filter feature for the result viewer (#6)
  • Node-locking feature
  • Short deck support
  • Aggregated reporting feature for multiple flops
  • GTO training mode (#9)

License

Copyright (C) 2022 Wataru Inariba

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.

desktop-postflop's People

Contributors

b-inary avatar dylan-chong avatar tokarak 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

desktop-postflop's Issues

Raise size constants sometimes don't appear in the results

With 25, 10c as the IP raise sizes, you see the following as expected

image

But replacing the IP raise sizes with 25, 11c, you no longer see the 11c raise size. Same with 12c and 13c

image

Full config

{
  "oopRange": "AA",
  "ipRange": "22",
  "config": {
    "board": [
      "4h",
      "7s",
      "Jc"
    ],
    "startingPot": 60,
    "effectiveStack": 166,
    "rakePercent": 0,
    "rakeCap": 0,
    "donkOption": false,
    "oopFlopBet": "10c",
    "oopFlopRaise": "",
    "oopTurnBet": "",
    "oopTurnRaise": "",
    "oopTurnDonk": "",
    "oopRiverBet": "",
    "oopRiverRaise": "",
    "oopRiverDonk": "",
    "ipFlopBet": "",
    "ipFlopRaise": "25, 10c",
    "ipTurnBet": "",
    "ipTurnRaise": "",
    "ipRiverBet": "",
    "ipRiverRaise": "",
    "addAllInThreshold": 150,
    "forceAllInThreshold": 20,
    "mergingThreshold": 10,
    "expectedBoardLength": 0,
    "addedLines": "",
    "removedLines": ""
  }
}

Is it possible to save the solver results?

I just ran a sim, while I can export to CSV, it is only for the particular spot and doesn't include future actions. Can I save the whole sim so I can load it later without solving it again?

Viewer for saved strategies

Very, very good solver. Big thnx!
Could you, in the next releases, make a saving of the calculated strategy and a viewer for the saved strategies?
The Best

console mode

got ways to refactor this code for console mode like texas solver to expot json/csv results?

Results tab resizing & output copy/paste

Hello!
Thanks for your work on this project! Saw your comments about upcoming update in other "issues" and wanted to suggest useful things to add:
scaling

  1. As you can see there's lots of free space left on screen, that can be used to make results table bigger. Maybe you can add option to drag & resize it in the corner?
  2. Copying result table data works but it's limited to what's visible? If it's not by design, maybe you can add export/copy button near "Show action EV". It will make output data analysis easier.
  3. When building tree, sometimes you don't have enough RAM. Solver has reading of available RAM, but it's not shown to you. Only that it's not enough. I had no idea other apps stole so much RAM.
    Hope these are not too demanding & can be useful to other users too.

Showing made hand distribution?

I think this is asking a bit too much, but I wonder if there are any plan in the future to show the distributions of hands like how many percent is flushes, top pair etc. And even show the strategies by these hand groups.

Bunching affect on strategy

Hello!
I tested new feature and noticed something peculiar:

  1. Bunching option requires much less iterations to reach exploitability goal. I understand the decrease, but not the scale of it: 32 vs 140, 40 vs 130.
    2023-03-10 19_20_22-Window
    2023-03-10 19_30_10-Window
    2023-03-10 20_23_16-Window
    2023-03-10 20_29_38-Window

  2. It "wierdly" affects strategy. F.e. OOP 3b Caller starts to donk 50% of his range in spot, where w/o bunching it checks almost 100%.
    2023-03-10 19_22_18-Window
    2023-03-10 19_30_44-Window
    2023-03-10 20_24_15-
    2023-03-10 20_30_04-
    Same parameters/tree & bunching ranges were for 4 players properly inverted from what they would've played in this spot. I see that EV changed in results so the changes are there, but should strategy change that drastically?
    I will try to find more useful examples.

More sig figs in showing EV?

The EV currently only shows 1 decimals. But say single raised pot, initial pot is 4 only. Showing only 1 decimal has 2.5% uncertainty. Or is there a way for me to look at the sig figs?

Play against GTO solution

Feature request

As a poker player,
I want to play on a solved solution against a random player playing GTO,
Because I want to improve my GTO play and become a better poker player

Example

  • Given I completed the IP and OOP ranges, I completed three flop card, and the tree configuration, if I solve the game with those configurations options, then I should see a tab with title "Train against a GTO player"
  • Given I completed the IP and OOP ranges, I completed three flop card, the tree configuration, and I solved the game with those configurations options, If I click on the tab with title "Train against a GTO player", then I should see the next things:
    • A choice to choose between playing oop or ip player
    • A button to generate a random game
    • A poker table with me playing oop or ip depending on the previous choice, the board selected during the game configuration, a random hand from the selected player range, two hidden card, and one button for each action available at this node.
  • Given I'm on the "Train against a GTO player", If i click on an action, then the other player should selected an action according to the GTO strategy for the hidden hand he have.
  • Given I'mon the "Train against a GTO player", And I have played the game completely, then I should see a report of my errors, when do i miss value etc...

It's quite incomplete, but I think it is very useful feature for every poker player who want to improve his game.

Build failed on Mac OS

Building as per the readme on Mac OS 13.4.1 (22F770820d) I see the following error:

user@host desktop-postflop % npm run tauri build

> [email protected] tauri
> tauri build

     Running beforeBuildCommand `npm run build`

> [email protected] build
> vue-tsc && vite build

vite v4.3.4 building for production...
✓ 1868 modules transformed.
warnings when minifying css:
▲ [WARNING] Expected identifier but found "-" [css-syntax-error]

    <stdin>:1851:2:
      1851 │   -: ,;
           ╵   ^


dist/index.html                   0.38 kB │ gzip:   0.25 kB
dist/assets/index-cc70eaed.css   33.52 kB │ gzip:   6.97 kB
dist/assets/index-c2f4c6c6.js   585.67 kB │ gzip: 194.56 kB

(!) Some chunks are larger than 500 kBs after minification. Consider:
- Using dynamic import() to code-split the application
- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
✓ built in 4.96s
    Updating git repository `https://github.com/b-inary/postflop-solver`
    Updating crates.io index
  Downloaded nodrop v0.1.14
  Downloaded tar v0.4.38
  Downloaded memoffset v0.8.0
  Downloaded rand_core v0.5.1
  Downloaded crossbeam-channel v0.5.8
  Downloaded version_check v0.9.4
  Downloaded thiserror-impl v1.0.40
  Downloaded xattr v0.2.3
  Downloaded utf-8 v0.7.6
  Downloaded phf_shared v0.8.0
  Downloaded pathdiff v0.2.1
  Downloaded rand_chacha v0.2.2
  Downloaded treediff v4.0.2
  Downloaded string_cache_codegen v0.5.2
  Downloaded toml_datetime v0.6.1
  Downloaded pin-project-lite v0.2.9
  Downloaded unicode-ident v1.0.8
  Downloaded rayon-core v1.11.0
  Downloaded rand v0.8.5
  Downloaded once_cell v1.17.1
  Downloaded memchr v2.5.0
  Downloaded thread_local v1.1.7
  Downloaded walkdir v2.3.3
  Downloaded unicode-bidi v0.3.13
  Downloaded typenum v1.16.0
  Downloaded uuid v1.3.2
  Downloaded syn v1.0.109
  Downloaded url v2.3.1
  Downloaded toml_edit v0.19.8
  Downloaded unicode-normalization v0.1.22
  Downloaded winnow v0.4.1
  Downloaded serde_json v1.0.96
  Downloaded syn v2.0.15
  Downloaded brotli-decompressor v2.3.4
  Downloaded chrono v0.4.24
  Downloaded tauri v1.3.0
  Downloaded serde_with v2.3.3
  Downloaded regex v1.8.1
  Downloaded rand_pcg v0.2.1
  Downloaded block v0.1.6
  Downloaded regex-syntax v0.7.1
  Downloaded cargo_toml v0.15.2
  Downloaded bstr v1.4.0
  Downloaded rfd v0.10.0
  Downloaded tauri-build v1.3.0
  Downloaded objc_id v0.1.1
  Downloaded libc v0.2.142
  Downloaded rustix v0.37.19
  Downloaded http v0.2.9
  Downloaded time v0.3.15
  Downloaded serde v1.0.160
  Downloaded png v0.17.8
  Downloaded tokio v1.28.0
  Downloaded idna v0.3.0
  Downloaded flate2 v1.0.26
  Downloaded futures-util v0.3.28
  Downloaded cfb v0.7.3
  Downloaded base64 v0.21.0
  Downloaded toml v0.5.11
  Downloaded tinyvec v1.6.0
  Downloaded tauri-utils v1.3.0
  Downloaded serde_derive v1.0.160
  Downloaded selectors v0.22.0
  Downloaded cocoa v0.24.1
  Downloaded raw-window-handle v0.5.0
  Downloaded futures-core v0.3.28
  Downloaded toml v0.7.3
  Downloaded tendril v0.4.3
  Downloaded encoding_rs v0.8.32
  Downloaded brotli v3.3.4
  Downloaded state v0.5.3
  Downloaded aho-corasick v1.0.1
  Downloaded tauri-runtime-wry v0.13.0
  Downloaded tauri-runtime v0.13.0
  Downloaded sysinfo v0.28.4
  Downloaded serialize-to-javascript v0.1.1
  Downloaded ryu v1.0.13
  Downloaded rayon v1.7.0
  Downloaded quick-xml v0.28.2
  Downloaded fnv v1.0.7
  Downloaded fdeflate v0.3.0
  Downloaded errno v0.3.1
  Downloaded dirs-sys-next v0.1.2
  Downloaded byteorder v1.4.3
  Downloaded bitflags v1.3.2
  Downloaded thiserror v1.0.40
  Downloaded tauri-winres v0.1.0
  Downloaded strsim v0.10.0
  Downloaded string_cache v0.8.7
  Downloaded smallvec v1.10.0
  Downloaded slab v0.4.8
  Downloaded sha2 v0.10.6
  Downloaded serde_with_macros v2.3.3
  Downloaded wry v0.24.1
  Downloaded tao v0.16.0
  Downloaded semver v1.0.17
  Downloaded rand_core v0.6.4
  Downloaded rand v0.7.3
  Downloaded mac v0.1.1
  Downloaded instant v0.1.12
  Downloaded hashbrown v0.12.3
  Downloaded futures-macro v0.3.28
  Downloaded form_urlencoded v1.1.0
  Downloaded foreign-types-shared v0.1.1
  Downloaded filetime v0.2.21
  Downloaded fastrand v1.9.0
  Downloaded dtoa v0.4.8
  Downloaded dispatch v0.2.0
  Downloaded darling v0.20.1
  Downloaded crypto-common v0.1.6
  Downloaded core-foundation-sys v0.8.4
  Downloaded convert_case v0.4.0
  Downloaded cocoa-foundation v0.1.1
  Downloaded cfg-if v1.0.0
  Downloaded block-buffer v0.10.4
  Downloaded aho-corasick v0.7.20
  Downloaded phf_macros v0.8.0
  Downloaded phf_codegen v0.8.0
  Downloaded objc_exception v0.1.2
  Downloaded line-wrap v0.1.1
  Downloaded ico v0.3.0
  Downloaded html5ever v0.25.2
  Downloaded darling_core v0.20.1
  Downloaded phf_generator v0.10.0
  Downloaded getrandom v0.2.9
  Downloaded cssparser v0.27.2
  Downloaded cc v1.0.79
  Downloaded bytes v1.4.0
  Downloaded base64 v0.13.1
  Downloaded anyhow v1.0.71
  Downloaded tauri-macros v1.3.0
  Downloaded tauri-codegen v1.3.0
  Downloaded stable_deref_trait v1.2.0
  Downloaded simd-adler32 v0.3.5
  Downloaded serde_spanned v0.6.1
  Downloaded serde_repr v0.1.12
  Downloaded scopeguard v1.1.0
  Downloaded safemem v0.3.3
  Downloaded proc-macro2 v1.0.56
  Downloaded plist v1.4.3
  Downloaded objc-foundation v0.1.1
  Downloaded num-traits v0.2.15
  Downloaded miniz_oxide v0.7.1
  Downloaded log v0.4.17
  Downloaded lock_api v0.4.9
  Downloaded kuchiki v0.8.1
  Downloaded indexmap v1.9.3
  Downloaded ignore v0.4.18
  Downloaded iana-time-zone v0.1.56
  Downloaded hex v0.4.3
  Downloaded generic-array v0.14.7
  Downloaded fxhash v0.2.1
  Downloaded embed_plist v1.2.2
  Downloaded derive_more v0.99.17
  Downloaded crossbeam-utils v0.8.15
  Downloaded crossbeam-epoch v0.9.14
  Downloaded parking_lot_core v0.9.7
  Downloaded parking_lot v0.12.1
  Downloaded markup5ever v0.10.1
  Downloaded io-lifetimes v1.0.10
  Downloaded globset v0.4.10
  Downloaded glob v0.3.1
  Downloaded core-graphics v0.22.3
  Downloaded tinyvec_macros v0.1.1
  Downloaded rustc_version v0.4.0
  Downloaded foreign-types v0.3.2
  Downloaded crc32fast v1.3.2
  Downloaded siphasher v0.3.10
  Downloaded servo_arc v0.1.1
  Downloaded serialize-to-javascript-impl v0.1.1
  Downloaded rand_chacha v0.3.1
  Downloaded quote v1.0.26
  Downloaded proc-macro-hack v0.5.20+deprecated
  Downloaded ppv-lite86 v0.2.17
  Downloaded pin-utils v0.1.0
  Downloaded percent-encoding v2.2.0
  Downloaded open v3.2.0
  Downloaded objc v0.2.7
  Downloaded num-integer v0.1.45
  Downloaded lazy_static v1.4.0
  Downloaded json-patch v1.0.0
  Downloaded itoa v1.0.6
  Downloaded itoa v0.4.8
  Downloaded infer v0.12.0
  Downloaded getrandom v0.1.16
  Downloaded futures-task v0.3.28
  Downloaded dirs-next v2.0.0
  Downloaded darling_macro v0.20.1
  Downloaded alloc-no-stdlib v2.0.4
  Downloaded tempfile v3.5.0
  Downloaded same-file v1.0.6
  Downloaded heck v0.4.1
  Downloaded digest v0.10.6
  Downloaded crossbeam-deque v0.8.3
  Downloaded core-foundation v0.9.3
  Downloaded autocfg v1.1.0
  Downloaded adler v1.0.2
  Downloaded precomputed-hash v0.1.1
  Downloaded phf_macros v0.10.0
  Downloaded num_cpus v1.15.0
  Downloaded ident_case v1.0.1
  Downloaded futf v0.1.5
  Downloaded dtoa-short v0.3.3
  Downloaded phf v0.10.1
  Downloaded phf v0.8.0
  Downloaded num_threads v0.1.6
  Downloaded malloc_buf v0.0.6
  Downloaded http-range v0.1.5
  Downloaded cty v0.2.2
  Downloaded either v1.8.1
  Downloaded cssparser-macros v0.6.0
  Downloaded phf_shared v0.10.0
  Downloaded ctor v0.1.26
  Downloaded core-graphics-types v0.1.1
  Downloaded cpufeatures v0.2.7
  Downloaded alloc-stdlib v0.2.2
  Downloaded thin-slice v0.1.1
  Downloaded phf_generator v0.8.0
  Downloaded new_debug_unreachable v1.0.4
  Downloaded matches v0.1.10
  Downloaded 220 crates (17.6 MB) in 3.43s (largest was `tao` at 2.4 MB)
   Compiling proc-macro2 v1.0.56
   Compiling unicode-ident v1.0.8
   Compiling quote v1.0.26
   Compiling cfg-if v1.0.0
   Compiling libc v0.2.142
   Compiling autocfg v1.1.0
   Compiling serde_derive v1.0.160
   Compiling serde v1.0.160
   Compiling ppv-lite86 v0.2.17
   Compiling syn v1.0.109
   Compiling siphasher v0.3.10
   Compiling getrandom v0.1.16
   Compiling proc-macro-hack v0.5.20+deprecated
   Compiling phf_shared v0.8.0
   Compiling log v0.4.17
   Compiling phf_shared v0.10.0
   Compiling memchr v2.5.0
   Compiling lock_api v0.4.9
   Compiling parking_lot_core v0.9.7
   Compiling fnv v1.0.7
   Compiling scopeguard v1.1.0
   Compiling thiserror v1.0.40
   Compiling strsim v0.10.0
   Compiling ident_case v1.0.1
   Compiling crc32fast v1.3.2
   Compiling convert_case v0.4.0
   Compiling bitflags v1.3.2
   Compiling smallvec v1.10.0
   Compiling cc v1.0.79
   Compiling crossbeam-utils v0.8.15
   Compiling version_check v0.9.4
error[E0635]: unknown feature `proc_macro_span_shrink`
  --> /Users/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/proc-macro2-1.0.56/src/lib.rs:92:30
   |
92 |     feature(proc_macro_span, proc_macro_span_shrink)
   |                              ^^^^^^^^^^^^^^^^^^^^^^

   Compiling new_debug_unreachable v1.0.4
For more information about this error, try `rustc --explain E0635`.
error: could not compile `proc-macro2` (lib) due to previous error
warning: build failed, waiting for other jobs to finish...
       Error failed to build app: failed to build app

Desktop Postflop (Windows packaged version) won't start

I'm not expecting any kind of "customer" support for free software, I was just wondering if anyone else had the same problem:

Error Logs:

Fault bucket 1654007552443956294, type 4
Event Name: APPCRASH
Response: Nicht verfügbar
Cab Id: 0

Problem signature:
P1: Desktop Postflop.exe
P2: 0.2.6.0
P3: 64145315
P4: Desktop Postflop.exe
P5: 0.2.6.0
P6: 64145315
P7: c000001d
P8: 00000000000c8da7
P9: 
P10: 
Faulting application name: Desktop Postflop.exe, version: 0.2.6.0, time stamp: 0x64145315
Faulting module name: Desktop Postflop.exe, version: 0.2.6.0, time stamp: 0x64145315
Exception code: 0xc000001d
Fault offset: 0x00000000000c8da7
Faulting process id: 0x2218
Faulting application start time: 0x01d98e04944e2bb9
Faulting application path: A:\Program Files\b_inary\Desktop Postflop\Desktop Postflop.exe
Faulting module path: A:\Program Files\b_inary\Desktop Postflop\Desktop Postflop.exe
Report Id: 508a18ba-aa1f-486d-8283-1a761d023561
Faulting package full name: 
Faulting package-relative application ID:  

GPU Support

In my Ryzen 7 3700X environment, the following evaluate method consumes about70% of the execution time.

https://github.com/b-inary/postflop-solver/blob/8eefab68e5e9b839504ceac9aa7f2d136f656889/src/game.rs#L177-L183

To my knowledge, we cannot expect GPUs to improve performance because this method itself is neither suitable for parallelization nor GPU processing (for example, it requires a sequential process for showdown). Therefore, we are currently adopting an approach to perform independent evaluations in parallel. So, at present, the answer is no.

Edit: I recall having read a paper that claims to have accelerated the evaluation with GPUs. However, I have no idea how to do it at present. https://arxiv.org/abs/2007.10442

Originally posted by @b-inary in #1 (comment)

I'm not familiar with rust itself, but I work in ML and skimmed through the paper. It looks more about running a specific kind of neural network as agent than about the parallelization of the depth tree.
I think about the possibility of GPU support like this: After you build the tree there are N bottom leaves, which need to be calculated to calculate the previous moves. These are the last moves done by the last player before the pot ends in any way (Showdown or Fold). How expensive is this computation?
We can assign GPU cores to calculate the values of each leaf and then recursively use them to build the previous ones. This largely depends on the operation of the leaf. Can you elaborate on that? I checked the code but I think I'd need to take a deep dive to get that information.

View for full strategies against non-optimal strategies

Great solver! Thanks a lot for your hard work!

In practice, we often face non-optimal opponents and need to avoid being exploited. For example, we could face a pot-size bet when the solver tells us there is no reason for the opponent to bet a pot. We need to defend with a different frequency from the strategies against the optimal strategy to avoid exploitation.

I wonder if you would like to make it possible to view strategies against non-optimal strategies in the next releases.

The best

Build failed on MacOS Similar the other issue with Mac OS

So I get to this step- $ npm run tauri build

And I get this script fail and have know clue how to fix it...I am not a software engineer or coder in any way, shape or form. So please forgive me. Also I used the tar.gz release. I was guessing this was the correct one for a Mac, though ran into the same issue with the zip file as well.

npm run tauri build
Running beforeBuildCommand npm run build
warnings when minifying css:
▲ [WARNING] Expected identifier but found "-" [css-syntax-error]

<stdin>:1889:2:
  1889 │   -: ,;
       ╵   ^

(!) Some chunks are larger than 500 kBs after minification. Consider:

  • Using dynamic import() to code-split the application

  • Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks

  • Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
    Compiling proc-macro2 v1.0.52
    Compiling libc v0.2.140
    Compiling proc-macro-hack v0.5.20+deprecated
    Compiling siphasher v0.3.10
    Compiling parking_lot_core v0.9.7
    Compiling crossbeam-utils v0.8.15
    Compiling log v0.4.17
    Compiling lock_api v0.4.9
    Compiling scopeguard v1.1.0
    Compiling new_debug_unreachable v1.0.4
    error[E0635]: unknown feature proc_macro_span_shrink
    --> /Users/gregorygazzano/.cargo/registry/src/index.crates.io-6f17d22bba15001f/proc-macro2-1.0.52/src/lib.rs:92:30
    |
    92 | feature(proc_macro_span, proc_macro_span_shrink)
    | ^^^^^^^^^^^^^^^^^^^^^^

    Compiling byteorder v1.4.3
    For more information about this error, try rustc --explain E0635.
    error: could not compile proc-macro2 (lib) due to previous error
    warning: build failed, waiting for other jobs to finish...
    Error failed to build app: failed to build app

Thank you so much for making this program and helping all of us out!

Resquest: Let the solver play against the solver to get GTO frequencies for mass data analysis.

From the other issue, it seems that you are working on saving strategies, aggregate reports for flops and play vs GTO solution on "random" flops. Considering those, it would be great if there was an option to let a GTO opponent play against another GTO opponent to either create stats report or better, directly create "gto" hand histories.

Something that is extremely hard to come by are "global GTO frequencies". It's something that is kept in closed circles and/or are extremely costly $$. Those are used to compare against different pools of players in data analysis to find exploits.

For example, considering a single raised pot BB vs BU. flop goes X/X, on the turn the GTO frequency for BB to probe/bet is ~30%, while a pool of NL50 players are ~40%.

The question is, how do I know the GTO probe frequency is 30% to start with, or any other turn/river frequency? After asking around and does some research, it seems that people manage to create hand histories based on the strategy found by solvers.

Basically, if you've got a subset of solved flops you can take those strategy to make 2 gto players play against each other and save the result as a standard hand history from any site, and once you've got enough hands you simply import them in any hud software like PT4 or Hand2Note (for the range research). Obviously, 2 gto players would give gto hand histories.

In the case of your project, considering that you're already planning a "play against GTO" feature, I don't think it would be that difficult to implement. Play vs GTO would already use the strategy to simulate a gto villain, while showing the gto options to hero and wait for him to click a button.

I might even tinker with this myself if/when the play vs gto feature comes out. Can't wait!

Hopefully that made sense... thanks again for your work on this!

Trouble building on Windows

A couple of issues:

  1. Build instructions are not very clear. I looked at .github/workflows/release.yml to figure out how to build, but this should be made more explicit in README.md

  2. Dependency issue with once_cell. I've tried running both

  • cargo build from src-tauri, and

  • npm run tauri build -- --target x86_64-pc-windows-msvc

    and both have failed with message:

    desktop-postflop\src-tauri> cargo build
        Updating git repository `https://github.com/bkushigian/postflop-solver`
        Updating crates.io index
    error: failed to select a version for `once_cell`.
        ... required by package `sysinfo v0.27.7`
        ... which satisfies dependency `sysinfo = "^0.27.7"` (locked to 0.27.7) of package `desktop-postflop v0.2.3 (C:\Users\bkush\PostflopSolver\desktop-postflop\src-tauri)`
    versions that meet the requirements `^1.0` (locked to 1.17.0) are: 1.17.0
    
    all possible versions conflict with previously selected packages.
    
      previously selected package `once_cell v1.17.1`
        ... which satisfies dependency `once_cell = "^1.17.1"` of package `postflop-solver v0.1.0 (https://github.com/bkushigian/postflop-solver#b821c60c)`
        ... which satisfies git dependency `postflop-solver` of package `desktop-postflop v0.2.3 (C:\Users\bkush\PostflopSolver\desktop-postflop\src-tauri)`
    
    failed to select a version for `once_cell` which could resolve this conflict
    

    I've never run into Cargo dependency issues before, and especially since this is all a fresh clone this is a weird problem to be running into.

My setup

I'm on Windows 10 OS build 19045.2604. I cloned the repo and followed the Tauri install instructions. I'm using stable Rust.

Build failed on mac os

I'm using a MacBook pro with Apple M1 Pro. MacOs Ventura 13.3.1.
I followed the simple instructions in the README and got the following output.

allen@chez-Allen-3 desktop-postflop % rustc --version
rustc 1.71.0-nightly (a368898de 2023-05-02)
allen@chez-Allen-3 desktop-postflop % npm --version  
9.6.4
allen@chez-Allen-3 desktop-postflop % npm run tauri build

> [email protected] tauri
> tauri build

     Running beforeBuildCommand `npm run build`

> [email protected] build
> vue-tsc && vite build

vite v4.2.0 building for production...
✓ 1868 modules transformed.
warnings when minifying css:
▲ [WARNING] Expected identifier but found "-" [css-syntax-error]

    <stdin>:1843:2:
      1843 │   -: ,;
           ╵   ^


dist/index.html                   0.38 kB
dist/assets/index-573c4c91.css   33.31 kB │ gzip:   6.94 kB
dist/assets/index-fc70353c.js   583.80 kB │ gzip: 194.03 kB

(!) Some chunks are larger than 500 kBs after minification. Consider:
- Using dynamic import() to code-split the application
- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
✓ built in 2.31s
   Compiling proc-macro2 v1.0.56
   Compiling unicode-ident v1.0.8
   Compiling quote v1.0.26
   Compiling cfg-if v1.0.0
   Compiling libc v0.2.142
   Compiling autocfg v1.1.0
   Compiling serde v1.0.160
   Compiling serde_derive v1.0.160
   Compiling ppv-lite86 v0.2.17
   Compiling siphasher v0.3.10
   Compiling syn v1.0.109
   Compiling getrandom v0.1.16
   Compiling phf_shared v0.8.0
   Compiling proc-macro-hack v0.5.20+deprecated
   Compiling log v0.4.17
   Compiling phf_shared v0.10.0
   Compiling memchr v2.5.0
error: failed to run custom build command for `serde_derive v1.0.160`

Caused by:
  process didn't exit successfully: `/Users/allen/projects/desktop-postflop/src-tauri/target/release/build/serde_derive-54327cbd26356c32/build-script-build` (signal: 4, SIGILL: illegal instruction)
  --- stdout
  cargo:rerun-if-changed=build.rs
warning: build failed, waiting for other jobs to finish...
error: failed to run custom build command for `quote v1.0.26`

Caused by:
  process didn't exit successfully: `/Users/allen/projects/desktop-postflop/src-tauri/target/release/build/quote-74f46820b5496051/build-script-build` (signal: 4, SIGILL: illegal instruction)
  --- stdout
  cargo:rerun-if-changed=build.rs
error: failed to run custom build command for `proc-macro2 v1.0.56`

Caused by:
  process didn't exit successfully: `/Users/allen/projects/desktop-postflop/src-tauri/target/release/build/proc-macro2-650073d5c660aea3/build-script-build` (signal: 4, SIGILL: illegal instruction)
  --- stdout
  cargo:rerun-if-changed=build.rs
error: failed to run custom build command for `libc v0.2.142`

Caused by:
  process didn't exit successfully: `/Users/allen/projects/desktop-postflop/src-tauri/target/release/build/libc-774578e3c4332360/build-script-build` (signal: 4, SIGILL: illegal instruction)
  --- stdout
  cargo:rerun-if-changed=build.rs
error: failed to run custom build command for `libc v0.2.142`

Caused by:
  process didn't exit successfully: `/Users/allen/projects/desktop-postflop/src-tauri/target/release/build/libc-30e64bea18a55965/build-script-build` (signal: 4, SIGILL: illegal instruction)
  --- stdout
  cargo:rerun-if-changed=build.rs
error: failed to run custom build command for `syn v1.0.109`

Caused by:
  process didn't exit successfully: `/Users/allen/projects/desktop-postflop/src-tauri/target/release/build/syn-4eae64dcd3b89175/build-script-build` (signal: 4, SIGILL: illegal instruction)
error: failed to run custom build command for `serde v1.0.160`

Caused by:
  process didn't exit successfully: `/Users/allen/projects/desktop-postflop/src-tauri/target/release/build/serde-8380539360733aa0/build-script-build` (signal: 4, SIGILL: illegal instruction)
  --- stdout
  cargo:rerun-if-changed=build.rs
error: failed to run custom build command for `getrandom v0.1.16`

Caused by:
  process didn't exit successfully: `/Users/allen/projects/desktop-postflop/src-tauri/target/release/build/getrandom-f71f503ca3233acc/build-script-build` (signal: 4, SIGILL: illegal instruction)
error: failed to run custom build command for `proc-macro-hack v0.5.20+deprecated`

Caused by:
  process didn't exit successfully: `/Users/allen/projects/desktop-postflop/src-tauri/target/release/build/proc-macro-hack-0dcde2d0bb5faddd/build-script-build` (signal: 4, SIGILL: illegal instruction)
       Error failed to build app: failed to build app

Only a single constant size bet is supported

Say for example you set the bet sizes to 5c, 50, 10c. Only the last constant bet size is used.
image

{
  "oopRange": "AA",
  "ipRange": "22",
  "config": {
    "board": [
      "4h",
      "7s",
      "Jc"
    ],
    "startingPot": 60,
    "effectiveStack": 166,
    "rakePercent": 0,
    "rakeCap": 0,
    "donkOption": false,
    "oopFlopBet": "5c, 50, 10c",
    "oopFlopRaise": "",
    "oopTurnBet": "",
    "oopTurnRaise": "",
    "oopTurnDonk": "",
    "oopRiverBet": "",
    "oopRiverRaise": "",
    "oopRiverDonk": "",
    "ipFlopBet": "",
    "ipFlopRaise": "",
    "ipTurnBet": "",
    "ipTurnRaise": "",
    "ipRiverBet": "",
    "ipRiverRaise": "",
    "addAllInThreshold": 150,
    "forceAllInThreshold": 20,
    "mergingThreshold": 10,
    "expectedBoardLength": 0,
    "addedLines": "",
    "removedLines": ""
  }
}

Limit of Groups is 3

Hi, is there anyway to increase the number of groups one can consecutively make, I have some preflop charts that describe action that are heavily nested depending on lots of actions - going roughly 12 groups fully nested. When I'm trying to import these charts, I'm getting the error:
Error: Import failed.

  • Invalid data
    I know that the data is correct because I've confirmed it with other exports and the formats match, I think the problem lies with the number of groups being limited.

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.