I'm curious what language you would be developing that in
Planning to develop a cross platform chess GUI and DB
I'm thinking about a desktop app... written in HTML5 or Flutter. If it were HTML5, it could be a progressive web app... possibly later features could be cloud storage and collaboration.
But would need to revive the UI/UX and decide on MVP features.
I think MVP would look like this...
- Create a game manually from starting position... i.e. manually move pieces and the game is recorded (this requires a chess board, pieces and logic for legal moves)
- Import a game from PGN
- View a game... i.e. going forwards and backwards to view the game move-by-move
- Add and view game annotation
- Save game in DB
- List games in DB
- Open game from DB
- ?? Search DB... search criteria to be determined
Here's HIARCS. This is a common layout.
Do others have a favourite layout?
I like how Lichess does game notation. 2 ply per line.
This is an old design of mine... it just looks very macOS centric. I'm thinking something that would look modern cross platform.
How many game you DB should handle?
There many GUI (free, paid) which can handle several millions of games, some of them can handle up to int32 limit (about 4.3bln games), but none of them can handle more
This doesn't exist yet. Many chess GUI's use a PGN file for storing games... and this may be the reason for the limitation. Storing in a relational DB would likely have different limitations.
lila-openingexplorer on github, based on facebook rocksdb can handle trillions position, DB and GUI combined.
I understand you want to create something new, will you plan to add anything unique, which has not been implemented yet?
In post #5 I list the MVP features before getting to truly new or unique things. I would like to open source it. I think the DB storage would be the primary different from stockfish and other apps. I'd also like it to be cross platform with Flutter or HTML.
Is there something you think is missing in most apps today?
I miss data visualization on the board, currently you have to add at least one table view to the board to get full info, for example, computer evaluation of the move – square color gradient (red – bad, green – good), frequency of the move – piece transparency (all have strong transparency, like shades, but more frequently – more solid), human trap – square boarder like pressed button style.
While on PC there is no problem having supplementary tables, on the phone it is a problem
About functions, there is one, non-trivial, but interesting, mostly relevant for opening stage
Lets imagine we have a position we want to occur in the game while playing white, what is the best move sequences to get it?
From black we need pawn on d5, knight on f6 and on c6. D5 and Nf6 are not a problem, the most difficult part is Nc6. For the simplicity assume that first move is always d4, so the question what to move first knight or bishop to increase the probability? It’s not an easy task with current GUI but can be easily calculated and visualize (have to think how) on the board that certain position can be reached with 2-3 main flow. There are at least two main applications.
- What is the sneakiest way to lure opponent into trap.
- Cross opening knowledge share, you can play your opening and experience some rare sidelines, which you try to study but not found much information, but it can be a main line for other opening you don’t play.
I think an important feature that no other (that I know of) chess GUI has is the ability to quiz yourself on opening knowledge. I envision being given the opening name somewhere, and you have to play out one side while the app plays out the other half. If correct, the square lights up green where the piece moved, if not, red and it resets the move. If you cannot find the right move in 3 guesses, you have the option to see the opening in it's entirety, then start from scratch.
Here's a bit more breakdown on the chess.com GUI. Here are the screens for library, explorer and analysis.
Here's a bit of evolution. Thoughts? I'm thinking I could re-use the code I've been creating to import games into an SQLite DB.
The dialog on the right is very primitive. I'll look at prettying it up. The idea is, once you select a game you can then browse the game and the right dialog focus on the selected game.
In the past I spent time designing a chess GUI but never continued to develop the code.
If you're interested in UI/UX design and software development let me know. I might like to revive this project of mine and create a ochessbase clone.