Myracle GUI

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

Max
Posts: 274
Joined: Tue Apr 13, 2010 10:41 am

Re: Myracle GUI

Post by Max »

mar wrote: ↑Wed Nov 11, 2026 6:41 pm btw as for Phalanx: there's also non-compliant output for older Phalanx so the pgn for it doesn't show score/depth properly, even with the hack-fix.
Guenther kindly made a fix available here: https://rwbc-chess.de/download.htm
(for more information you can either e-mail him or contact him via the engine testers discord)
Thanks for the info, but it looks ok for Phalanx XXII:

Code: Select all

[Event "Gauntlet Phalanx XXII (xb)"]
[Site "Earth"]
[Date "2026.11.12"]
[Round "1.9"]
[White "Phalanx XXII"]
[Black "Cinnamon 2.4"]
[Result "0-1"]
[Time "07:43:09"]
[ECO "A16"]
[Opening "English Opening: Anglo-Indian Defense, Queen's Knight Variation"]
[Termination "black wins by checkmate"]

1. c4 {book} Nf6 {book} 2. Nc3 {book} e5 {book} 3. Nf3 {book} Nc6 {book} 4. e3 {book}
Bb4 {book} 5. d4 {book} exd4 {book} 6. Nxd4 {book} O-O {book} 7. Be2 {book} Ne4 {book}
8. Qc2 {book} Re8 {book} 9. O-O {-0.30/9 2.80s} Nxd4 {0.59/18 2.59s} 10. exd4 {0.46s}
Nxc3 {0.35/18 1.65s} 11. Bd3 {-0.19/10 3.14s} Nxa2 {0.69/17 2.53s} 12. Bxh7+ {-0.08/10
3.43s} Kh8 {1.13/17 2.49s} 13. Rxa2 {-0.06/10 1.78s} g6 {1.15/17 2.45s} 14. Bxg6 {0.77/9
1.53s} fxg6 {1.18/17 2.41s} 15. Qxg6 {0.85/9 0.90s} Re6 {1.13/16 1.49s} 16. Qh5+ {0.66/9
3.83s} Kg7 {1.05/15 2.36s} 17. d5 {0.72/9 4.40s} Qe8 {1.13/16 2.32s} 18. Qh4 {0.71/9
2.80s} Rg6 {1.04/16 2.28s} 19. Be3 {0.52/9 5.67s} a5 {1.05/14 2.25s} 20. Bd4+ {0.69/8
4.02s} Kf8 {0.97/15 2.21s} 21. b3 {0.63/7 1.54s} Raa6 {0.94/15 2.18s} 22. f3 {0.61/7
1.41s} c5 {1.16/15 2.14s} 23. dxc6 {0.24/8 2.24s} Raxc6 {1.23/14 2.11s} 24. Raf2 {0.04/8
3.12s} b6 {1.41/14 2.08s} 25. Qh8+ {-0.01/7 1.36s} Rg8 {1.51/14 2.05s} 26. Qh4 {-0.20/9
2.58s} Qe7 {1.58/16 2.02s} 27. Qf4+ {-0.23/9 4.01s} Ke8 {1.62/13 1.99s} 28. Rd1 {-0.23/8
2.00s} Re6 {1.80/13 1.97s} 29. Qb8 {-0.23/8 2.23s} Rd6 {2.04/16 1.94s} 30. Qxc8+ {-0.61/8
1.44s} Kf7 {2.21/16 1.91s} 31. Qb7 {-0.73/10 3.52s} Rxd4 {2.29/17 1.89s} 32. Rxd4 {-0.94/9
1.05s} Qe1+ {2.18/17 1.86s} 33. Rf1 {0.00s} Qe3+ {2.25/17 1.84s} 34. Kh1 {-0.96/10
1.74s} Qxd4 {2.34/16 1.82s} 35. f4 {-0.92/9 1.18s} Re8 {2.35/16 1.79s} 36. Qf3 {-1.09/9
1.99s} Re3 {2.45/17 1.77s} 37. Qh5+ {-0.86/8 1.13s} Ke7 {2.55/15 1.75s} 38. f5 {-1.27/7
1.12s} Kd8 {2.82/16 1.73s} 39. Qg5+ {-2.10/8 1.86s} Be7 {3.18/16 1.71s} 40. Qg8+ {-1.85/10
3.79s} Kc7 {2.99/17 1.69s} 41. Qa8 {-2.08/9 1.17s} Rxb3 {3.43/15 1.67s} 42. Qa7+ {-2.62/9
4.84s} Kd6 {3.41/14 1.65s} 43. h3 {-2.62/8 2.07s} Bf6 {3.52/15 1.63s} 44. Re1 {-2.75/8
2.10s} Kc5 {3.72/15 1.62s} 45. Qb7 {-2.88/8 1.28s} a4 {4.14/15 1.60s} 46. Rc1 {-2.66/8
1.69s} a3 {4.56/16 1.58s} 47. Qc8+ {-2.97/8 2.04s} Kb4 {4.90/15 1.57s} 48. Qf8+ {-3.87/9
1.66s} d6 {7.19/16 1.55s} 49. Qe8 {-5.89/9 3.37s} a2 {8.07/16 1.53s} 50. Qb5+ {0.11s}
Ka3 {11.02/17 1.52s} 51. Qa6+ {-7.96/10 0.71s} Kb2 {11.65/17 1.51s} 52. Rc2+ {-12.62/10
2.43s} Kxc2 {15.22/16 1.49s} 53. Qxa2+ {0.17s} Rb2 {+M6/18 1.48s} 54. Qa4+ {-299.74/10
1.69s} Kb1 {+M5/18 1.46s} 55. Qe8 {0.09s} Qd1+ {+M5/19 1.45s} 56. Kh2 {0.27s} Be5+ {+M4/20
1.44s} 57. Qxe5 {0.00s} dxe5 {+M4/21 1.43s} 58. Kg3 {0.08s} Qd3+ {+M3/20 1.41s} 59. Kg4 {0.00s}
Rxg2+ {+M2/19 1.40s} 60. Kh4 {0.00s} Qg3+ {+M1/20 1.39s} 61. Kh5 {0.00s} Qxh3# {+M1/21
1.38s} {black wins by checkmate} 0-1
Max
Posts: 274
Joined: Tue Apr 13, 2010 10:41 am

Re: Myracle GUI

Post by Max »

.. ah, I see the isssue in hyperbullet what is missing.

Code: Select all

[Event "?"]
[Site "?"]
[Date "2026.11.12"]
[Round "?"]
[White "Phalanx XXII"]
[Black "Cinnamon 2.4"]
[Result "0-1"]
[Time "08:41:21"]
[ECO "A05"]
[Opening "Zukertort Opening"]
[Termination "black wins by checkmate"]

1. Nf3 {book} Nf6 {book} 2. c4 {book} e6 {book} 3. g3 {book} d5 {book} 4. d4 {book}
dxc4 {book} 5. Bg2 {book} Nbd7 {book} 6. O-O {book} c6 {book} 7. a4 {book} a5 {book}
8. Bg5 {0.08s} Qb6 {0.57/11 0.30s} 9. Nbd2 {0.07s} Qa6 {0.49/13 0.18s} 10. Qc2 {0.14s}
b5 {0.29/12 0.18s} 11. e4 {0.21s} Bb7 {0.94/10 0.18s} 12. b3 {0.10s} cxb3 {1.13/11
0.18s} 13. Nxb3 {0.26s} Bb4 {0.99/10 0.18s} 14. Rfd1 {0.07s} bxa4 {1.17/10 0.17s}
15. Rxa4 {0.26s} Qb5 {0.83/11 0.17s} 16. Rda1 {0.08s} Nb6 {0.29/10 0.17s} 17. R4a2 {0.12s}
Qc4 {0.31/11 0.16s} 18. Ne5 {0.10s} Qxc2 {0.26/13 0.16s} 19. Rxc2 {0.02s} a4 {0.03/12
0.15s} 20. Nc1 {0.16s} Nfd7 {-0.05/11 0.15s} 21. Nxd7 {0.13s} Kxd7 {-0.22/13 0.15s}
22. Rb1 {0.22s} Ba5 {-0.61/13 0.15s} 23. e5 {0.25s} h6 {0.37/12 0.15s} 24. Be3 {0.26s}
Kc7 {0.17/12 0.16s} 25. Nd3 {0.16s} Nd5 {0.18/12 0.15s} 26. Nc5 {0.18s} Bb6 {0.03/13
0.15s} 27. Bxd5 {0.12s} Bxc5 {-0.01/13 0.15s} 28. Ba2 {0.11s} Ba7 {0.69/13 0.15s}
29. Rb4 {0.19s} a3 {0.32/12 0.15s} 30. h3 {0.09s} Rhb8 {0.93/10 0.15s} 31. Kh2 {0.08s}
Rd8 {1.29/10 0.14s} 32. Rc1 {0.11s} Ba6 {1.12/11 0.14s} 33. Rc3 {0.18s} Be2 {0.86/13
0.14s} 34. Kg2 {0.14s} g5 {0.41/12 0.14s} 35. Rc2 {0.20s} Ba6 {0.43/12 0.14s} 36. f3 {0.15s}
Rdb8 {1.65/13 0.14s} 37. Ra4 {0.12s} Bb6 {1.39/12 0.14s} 38. Rb4 {0.09s} Kd7 {1.62/12
0.14s} 39. Rb3 {0.15s} Bb5 {1.63/12 0.13s} 40. Rbc3 {0.08s} Ra4 {1.62/12 0.13s} 41. Rf2 {0.15s}
Ba5 {1.65/11 0.13s} 42. Rc1 {0.07s} Bd3 {1.79/13 0.13s} 43. f4 {0.10s} gxf4 {1.95/12
0.13s} 44. Bxf4 {0.16s} Rb2 {1.93/11 0.13s} 45. Bxh6 {0.08s} Rxd4 {2.04/12 0.12s}
46. Bf4 {0.12s} Bf5 {2.73/12 0.12s} 47. h4 {0.09s} Bb6 {2.87/12 0.12s} 48. Rxb2 {0.15s}
axb2 {3.22/12 0.12s} 49. Re1 {0.08s} Ra4 {8.37/12 0.12s} 50. Rd1+ {0.24s} Ke8 {9.71/12
0.12s} 51. Bb1 {0.03s} Ra1 {10.15/15 0.12s} 52. Rd3 {0.13s} Rxb1 {10.49/16 0.12s}
53. Rb3 {0.14s} Rg1+ {10.59/16 0.12s} 54. Kf3 {0.13s} b1=Q {10.97/15 0.12s} 55. Rxb1 {0.06s}
Rxb1 {11.16/15 0.11s} 56. h5 {0.16s} Rb3+ {11.28/15 0.12s} 57. Ke2 {0.26s} Bg4+ {11.42/15
0.12s} 58. Kd2 {0.25s} Bxh5 {11.49/16 0.12s} 59. Kc2 {0.20s} Ra3 {11.67/15 0.13s}
60. Kb2 {0.20s} Bc5 {11.78/16 0.13s} 61. Kc2 {0.07s} Bg6+ {11.78/15 0.13s} 62. Kd1 {0.19s}
Kd7 {12.20/15 0.13s} 63. Ke2 {0.14s} Bf5 {12.54/13 0.13s} 64. Kd2 {0.15s} Bd4 {15.51/15
0.13s} 65. Ke2 {0.16s} Ra2+ {15.64/16 0.13s} 66. Kd1 {0.08s} Bc3 {+M6/16 0.12s} 67. g4 {0.07s}
Bd3 {+M4/16 0.12s} 68. Be3 {0.02s} Re2 {+M4/17 0.12s} 69. Bd2 {0.00s} Rxd2+ {+M3/18
0.11s} 70. Ke1 {0.00s} Rh2+ {+M1/17 0.11s} 71. Kd1 {0.00s} Rh1# {+M1/18 0.10s} {black
wins by checkmate} 0-1
mar
Posts: 3115
Joined: Fri Nov 26, 2010 2:00 pm
Location: Czech Republic
Full name: Martin Sedlak

Re: Myracle GUI

Post by mar »

build 175 up:
- new clone tournament feature: open an existing/finished tournament and press clone button in tournament tab,
will open new tournament dialog filled with participants and parameters from current tour
useful for repeating the same tournament at a different tc, for example
mar
Posts: 3115
Joined: Fri Nov 26, 2010 2:00 pm
Location: Czech Republic
Full name: Martin Sedlak

Re: Myracle GUI

Post by mar »

let's dive into some details about what Myracle actually is and how much effort actually went in, because I'm a bit annoyed of being
compared to what I consider low effort vibecoded GUIs (let's not get into plagiarising ideas, I understand it's necessary
to borrow good ideas and I borrowed a few as well, naturally; just that being copied the other day feels a bit ... awkward :)
let's not forget that many of the ideas come from Andres, Dany and John and from the feedback of many people in this thread
(especially Erik for the tournament scheduler weights idea) and also external feedback via e-mail, and I'd like to thank
all of them again for their help.

so, let's list some features first:

- a clean and very simple UI
- stable, doesn't leak memory or handles, small memory footprint, doesn't require a GPU to run nor a local web browser
- doesn't put random stuff in special folders or registry, 100% portable, no install
- battle tested (Andres is running tournaments 24/7)
- create arena-compatible logs for broadcasting, even with tour concurrency enabled
(again can be seen here in action thanks to Andres, using his myracle broacast tools: https://myracle.cc)
- was the first GUI I'm aware of to support multiple concurrent tournaments as far as I know (among other unique things)
- the first to do automatic anomaly log tracking as far as I know
- can run 1 million games in a single run (1sec sudden death, producing ~2GB PGN)
- written in C++, the resulting Window binary (as of build 174) is 2.8MB for whe Windows version and 3.6MB for the Linux version while requiring an additional ~1.6MB zip file with gui data, without additional dependencies like dozens/hundreds of dlls; feel free to compare with your favorite GUI
(of course that is including the internal tournament manager)
- the bundled SVG piece sets were painted by me using Inkscape, one design based on a puzzle from 1950ies german newspaper
- the figurine font was also created be me using FontForge based on one of my SVG piece sets
- the lowpoly 3D models were also handmade by me using Blender, design based on some staunton set image I found on the internet

now some more details about the code itself:
- every single line of code was written by a human, ~2300 sloc goes for Pyrrhic, a syzygy probing library in C (and the only third party code that I use) (sloc = source lines of code, here excluding blanks and comments)
- ~49k sloc is the chess GUI itself, including first-party portions of my engine's Cheng bitboard and movegen code and everything else including tournament management and UI design - every line written by me
note that the trinomial SPRT algorithm was modeled after CuteChess
- ~114k sloc is my base framework I used to build the GUI on top, with zero third-party dependencies,
including custom collections (arrays, queues, priority queues, hash sets, red-black trees and more), a job system, streams,
custom inflate/deflate, png and jpeg implementations, a simple lexer,
temporary and pool allocators, PRNGs, SIMD wrappers, thread wrapper, process wrapper and basic time handling routines,
low level audio code and sample mixer, ttf and svg parser,
rectangle regions for efficient tracking of paint regions,
muti-span antialised rasterized used for rendering polygons (horizontal coverage with vertical supersampling - something to improve in the future perhaps),
bezier curves are tesselated using de casteljau, the same rasterizer is used for unhinted text rendering with subpixel antialiasing (similar
to cleartype), for 3d rendering I use my state of the art subpixel correct software scanline rasterizer with perspective correct n-attribute interpolators
and (reverse) depth buffering, srgb conversion helpers and tables, low level UI code support including simple native windows, then many basic widgets, automatic layouts.
note that the framework contains quite a bit more things that were not used for this project.
every pixel inside the windows (except for non-client area) is rendered manually.
again every single line of base framework is written by me.

the whole project including the framework (optimized release build) builds in ~15 seconds on my 16-core rig, without precompiled headers or modules or unity build

the base framework weighs 530 files, the GUI itself (including pyrrhic) is 254 files and spans 1431 git commits
the first commit for Myracle itself comes from 12-30-2025, so it took ~10 and half months to build, a solo dev spare time effort while also partially building parts of the underlying UI framework on the fly.
my plan was to spend 1 year on this project so I still got about 1.5 months left, then I'll move on to other projects.
the framework crystalized from a portion of my old game engine that I've been working on for ~10 years since 2014