The Deck: An open-source cross-platform multiplayer card game engine in Flutter
github.com
github.com
I wish the Dart server ecosystem was more mature though. Being able to compile Dart into a static binary is so nice for deployment.
I stopped using it because I needed to make money and my work was with nodejs.
There's not really a backend that takes advantage of all that. In theory, one server binary could handle REST, web sockets, background workers, and have generated type safe client packages for every platform. Dart also has a great Rust ffi story. It would be great to see that leveraged.
ServerPod is a great start, but it's really Flutter focused. The web apis feel like second class.
Additionally, database management isn't a solved problem yet. ServerPod uses yaml to define models, and the other main option is just a Prisma wrapper. Dart needs something like Drizzle.
I personally use Rust backends and Flutter frontends for my apps. I'd use pure Rust for the entire thing but Rust frontends are nowhere near the capabilities and maturity as Flutter, but I use FFI like flutter_rust_bridge and rinf at least, as you mention.
Kotlin Native is a toy for JetBrains to eat some of that Apple pie and capture teams that want to share logic between their mobile codebases.
Kotlin Native has no std, they cut down platform support with K2, performance and compilation speed are atrocious and there are no plans to improve any of that short term.
Kotlin without JVM can’t hold a candle to Dart. Which is a real shame for Dart, because Dart has improved dramatically last couple years while Kotlin has not introduced anything major last 5 years since release of coroutines.
Their K2 compiler, that was supposed to promise major compilation speed improvements, was mostly a flop and we are yet to see if they’ll do anything good with it. Context receivers are not even close, pattern matching is not even on a roadmap and they’re refusing to consider union types. Kotlin lives on a borrowed time.
1. runs on every platform (KNative runs natively on Linux, Mac, Windows, Android, iOS. It can also run under the JVM non-natively, and anywhere Javascript runs non-natively. The native code can build for a variety of architectures including ARM and x86)
2. compiles to native (As above, compiles to native on Linux/Mac/Windows/Android/iOS)
3. has real parallelism via isolates (Kotlin can spawn and interact with full processes, OS threads, and/or green threads in any admixture)
4. native async (Kotlin has native async/await support via coroutines, which work under KNative)
5. native type safety (Kotlin has a strong static type system which is available for native code as well and encompasses native types interactive with Kotlin code in either direction)
I don't think anything you said pertains to the listed five features. Especially complaining about compile speed is a strange thing to be doing in the context of this conversation.
Considering that both are made by Google, I can imagine that they just use Go for everything servers.
However, one unfortunate bit is that the board (in my case, the TV connected to the Switch) is "read-only" and you don't interact with it, unlike real life. You pick which card to play on your phone, and then place it onto the board also on your phone. So basically, all the action is on your phone, and the central board is kind of an afterthought. It doesn't feel as much like interacting with a shared space as I was hoping.
I'm not really sure how to solve that. I thought of some weird stuff (like, maybe after you pick your card, your phone is just a touchpad controlling the card as it now moves around on the big screen) but nothing seemed practical.
That said, while I love physical games, some digital aspects seemed potentially appealing: automatic scoring, rules enforcement to prevent mistakes, not taking up space, ability to try new ones out easily, etc.
20y later, it's disappointing that this is still a novelty. I think Nintendo had a tank game for the Switch, but I never got to try it because everyone needed his own copy and a Switch. Jackbox are the only ones I've seen ship something people actually play this way.
Adaptive design still hasn't been capitalized on as well as it ought to be. Everything is so optimized for metrics and commerce, and good design often gets lost in the fray.
Incidentally it's also one of the few times I've seen a dart/flutter project on the front page of HN, and even had some non-critical comments, so again well done.
More details on the implementation are here (same content)
https://dev.to/ilbets/game-night-just-got-a-digital-upgrade-...
https://medium.com/@igorsteblii/game-night-just-got-a-digita...
I love it!
I remember back in the day I used to use Hamachi to play Xbox LAN with my friends in different universities.
I feel like you would benefit from having a real-life photo of "The deck" feature. Your description does it justice, but your graphic does not. (To me)
I agree that `engine` is a strong word - still early days :)
Have you published as yet, how to create a new game on this?
https://forums.swift.org/t/an-embedded-audio-product-built-w...
To carry this further, were you hoping that some DJ who likes playing card games would stumble upon this post and pivot onto your thing?
If you're proud of it, submit it as its own Show HN
Hope to finish the new version soon
There's enough weird anime porn garbage on Steam that I think they can handle a few hundred/thousand open source games of varying quality.
about 10 years ago my wife and I wanted to make a card game something like a twist on cards against humanity or madlibs, that could be played in person or remotely. I built a back-end and protocol for organizing and conveying cards and such, and she got all the content put into the backend, and my buddy started on a mobile front end. my vision was to build it very abstractly, like a card game framework, so it could be any card game (and users could even make their own games). one mode was to use a tablet as the deck on the table and then everyone can hold their hand on their phones.
unfortunately, life got in the way, priorities changed, and we never finished it.
I had this idea that we could sell/license packs of card content by actual physical card game publishers... phase 10, uno, CAH, etc...
don't let the jerks here get you down, I for one appreciate this project (in spirit, haven't looked at the code) and might try to use it to finish our game one day.
thank you for sharing!
It has some very mild conceptual criticism from two top level comments.
However, I would never use it as a game. Ever.
One of my primary objectives playing card games with a group of people in a local setting is the social aspect. It means: no phones. I find it utterly asocial to sit there in a group of people all with their phones in their hand staring at the phone, then at some point getting distracted with doom scrolling instagram. Its so disturbing. Maybe I am old (40), I don't doubt that. Maybe I reach that point where I simply "don't get it" anymore. But I stand by it. It's not for me. Maybe I am alone, but I doubt that.
In this case, your cards are digital. Presumably you can choose some people who just want to play cards, not doomscroll instagram.
It's how you interact with the cards.
You are not staring in your cards. Maybe you are sorting the cards. You are observing what other people are doing with their cards. Sometimes you are just glancing at cards and putting them back on the table (e.g. poker).
Everything vanishes with a phone doing that for you. It takes away the magic of card games for me.
Again, I am strictly speaking of myself, but if I go with a group of people to play cards and then they pull out their phones, I'll simply leave the table and go home or do something else.
Electronic cards would allow you to play more widely (presumably we all don’t walk around with a deck in our pockets). But I don’t often get into spontaneous card games. They are usually planned and at a location with easy access to decks.
Especially card games are offline games for me. They're (my personal) go-to tech detox social thing and doing that with phones is simply weird for me. That's maybe why I felt so strong to make this point.
Again, awesome project. Maybe its for some, but not for me.
too much negativity in this thread!
if you have nothing nice to say just don't say anything at all.
First of all, I feel bad that my comment before apparently conveyed the wrong message: The project is well executed, code wise. It was (most likely?) a ton of work and I did not mean to comment anything negative towards the project at all.
Second, if anything in that project would have hinted even a tiny inch towards more inclusivity in card games, I would probably never had said anything. But it doesn't.
The project markets itself as solving a problem I never heard of anyone ever had ("a situation many of us have experienced") and therefore does not resonate with me or most likely anyone I ever played cards with in all-nighters. Instead, it would've been a buzzkill to play on the phone. But ok, I (or anyone I played with) might not be the target group. As I said, it was my personal opinion and that's what I expressed.
but then ... "if you have nothing nice to say don't say anything at all" ... because?
Shutting my mouth there would basically equal to a lie. I am not a liar and I am not becoming one just because my criticism is making anyone uncomfortable.
I am that kind of person who is telling people if they have spinach between their teeth, I tell people if they sat accidentally on a chewing gum and I definitely tell people if I think they are solving a non-existent problem (or their marketing message is not on par). Last time I checked, that is what this platform is for. If criticism makes people uncomfortable, great. Uncomfortable is where the comfort zone ends.
Mind you, at no point I got rude or personal or unreasonable, I hope. I stated its my opinion. My personal one. Based on my experience. And at no point I mentioned the code was bad, or at any point I was downtalking the devs, insulting or otherwise. Instead I respect their work to the utmost level. But I simply do not understand the problem they solve, instead it goes against what I experienced in my life. And on this platform I sure hope this is something that is not only allowed, but very welcome.
I would guess the assets[1] would be more legally problematic versus the game mechanics, which AIUI are only subject to patent claims, not copyright
1: https://github.com/xajik/thedeck/blob/86c2219d7c2aba47edd616...
This feels like a lot of work compared to popping down to the corner store for a pack of cards.
A feature to allow users to create their own game rules for playing and sharing would be a great addition, IMO.
Neither of these points changes the mind of anyone who would rather play with the physical board game, but I think the ideal market for this is probably not that group.
20 seconds vs. 30 minutes to drive to the store and back.
This feels like a "neat, but why" project. Odds are the app is going to be difficult to use compared to a real deck.
With apps players may get this functionality right out of the box.