I got irritated by the maximalism and lack of aesthetics present in modern software when trying to find a nice solitaire.
A solitaire does not need a score, levels - and most of all it does not need to download anything, have user log in or do anything else except maintain game state.
So since software comes automatically nowadays, I decided as a weekend project to create the last solitaire I'll ever need.
The application is built on Rust so I can compile it to native. But it runs just as well as web app!
I geeked out completely on design (it may look like "default" but that's the point) to create as non-intruding yet aesthetically pleasing experience as I could.
I might have accidentally put in a complete card design system with a content pipeline (maybe I'll do default blackjack next) - but as a player you only see the one pack of cards.
Anyway, hope someone here appreciates the minimalistic aesthetics.
The game state is saved in the url so if you want to save a nice game you can do it by copypasting the link.
The game engine is versioned so if I ever change the engine or state schema there will be support for the current version as well.
There _is_ a novelty.
If you click the "teach" button it shows all the available free moves as arrows.
Hope this is fun for someone!
I have made 20+ solitaire games in different contexts since 1999 with the latest version being https://dailyplay.com/play/solitaire
Here is cheat sheet to make a game people will actually play
1. The vast majority of players prefer flip one, not flip three.
2. You want the text on your cards so large as you can.
3. People expect that if they click a card, it moves to where it can go.
4. People do not like hard games, give people games that can all be won.
5. You want your pile to sit on the right - at-least for mobile players, reaching across the screen is annoying.
6. People WANT the score. I A/B tested this, people hate when there is no scores.
7. People do not care about sounds.
Things I like from your versions I am totally going to steal.
1. Teach is amazing
2. Showing cards left in the pile
Suggestions
1. The teach arrows are to small, people who play this game have bad eyesight on average.
2. Make teach only show moves that drives the game towards the win state.
3. Add animations, I have AB tested this and the game performs better if you have the basic set
4. Make it load faster, people have industrial attention deficit disorder, you loose 8% of users for each second your game takes to start.
Bugs
1. Reloading the page I can't seem to undo back to the start of the game.
I am getting an error.
Thanks for your feedback!
Can you please test again?
I added WebGL2 backend as separate binary selected during page loading if browser does not support WebGPU.
I left out WebGL rendering backend to shave off few megabytes but might have jumped the gun on WebGPU support.
The better choice clearly was offering both :)
Would you mind sharing which browser you use?
(WebGPU is getting really nice support finally - https://caniuse.com/webgpu - not _full_ coverage yet but getting quite prominent)
"The game could not start. Check your connection and that WebGPU is enabled and available on this device."
Same here. I don't know if WebGPU works on my computer, but it really isn't needed for a 2D card game.
“WebGPU … isn’t needed”
Yes! That’s why the headline says “overdesigned”:)
It’s designed as a universal native app. So browser here really is just a platform for deployment.
The design is for a an application that is a single download and few megabytes in size that runs the same on desktops natively (after compilation) and in the browser. Rust ecosystem is getting _really_ nice for that.
So it’s Egui with WebGPU backend.
So if the requirement is ”an universal app” it’s nicer alternative than using Electron but Tauri might have been a more reasonable choice if I didn’t want to leave the door open more for more options on rendering backend on desktop.
Sort of same lineage in thinking as Flash, Java apps (circa 2000 :) ) etc. Or something like Ghostty.
The downside is that it does not use native GUI for much which means it’s closer to a game than ”professional” desktop app.
”If WebGPU works …”
It’s ”almost” fully supported: https://caniuse.com/webgpu
Edit: There is now also WebGL2 backend
Thanks!
I would appreciate if you could try again.
I added a WebGL2 rendering backend.
[flagged]