top | item 42983699

The Deck: An open-source cross-platform multiplayer card game engine in Flutter

323 points| igor_st | 1 year ago |github.com

79 comments

order

blopker|1 year ago

Nice work! I'm happy to see the server is in Dart, no Firebase!

I wish the Dart server ecosystem was more mature though. Being able to compile Dart into a static binary is so nice for deployment.

hoppp|1 year ago

I wrote some dart servers years ago, there is a nice framework called aqueduct that makes it very easy and productive.

I stopped using it because I needed to make money and my work was with nodejs.

satvikpendem|1 year ago

Serverpod and Dart Frog are both pretty good backend Dart frameworks, what are you looking for?

desumeku|1 year ago

> I wish the Dart server ecosystem was more mature though. Being able to compile Dart into a static binary is so nice for deployment.

Considering that both are made by Google, I can imagine that they just use Go for everything servers.

igor_st|1 year ago

Agree, Dark is pretty nice, but ecosystem is not mature.

satyrnein|1 year ago

This is very cool! Somewhat similar, I recently bought a Nintendo Switch version of Ticket to Ride, which supports using a "companion app" on other devices to show each player their private hand.

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.

adamredwoods|1 year ago

An obvious answer is to play the physical game, but I also wonder if people are starting to adapt to virtual tabletop games? Virtual tangible? How intriguing!

bsimpson|1 year ago

Adobe was trying to figure out how to position Flash in the aftermath of the iPhone. I will forever remember one of their concepts was using a variety of devices to share one experience, like your example of a board game that uses different devices for common and private elements.

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.

account-5|1 year ago

This looks cool, well done.

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.

sntran|1 year ago

When VR was starting to gain attraction, I had this idea of a virtual playing card deck. Everybody joining the game could move the phone around to see the virtual cards either on their hand or on the surface chosen as the "table". The idea came from the need to play cards in the hall of college department without showing that we were playing cards.Unfortunately, my college education did not equip me enough skills to make that happen. I'm glad that somebody else made this. Looks very nice!

kybernetikos|1 year ago

You may be interested in Tabletop Simulator from Berserk Games, which is on Steam and has VR mode.

david422|1 year ago

There was an old android app called "Flick Hearts" (2011) that had the same concept of a center table (tablet) and individuals playing on their phones. I always thought it was pretty imaginative for the time, haven't really seen it since.

Hortinstein|1 year ago

I thought this was an incredible well executed/engineered art/commentary on using an incredible amount of technology to create a similar....likely sub par experience to getting a deck of cards for <10 dollars

I love it!

sawyna|1 year ago

I got really excited to play a custom card game with my friends who are spread across the world. Was looking to see how I can add my own game, but when I downloaded the app to try out some sample games, I see that all the players have to be connected to the same WiFi. Does this mean the app is only for games played in person but on phone?

tomaytotomato|1 year ago

Maybe try some sort of private VPN/LAN network tool?

I remember back in the day I used to use Hamachi to play Xbox LAN with my friends in different universities.

pcioshill|1 year ago

Check out playingcards.io or VirtualTableTop. These do exactly that, although the interface is a bit cumbersome on mobile

igor_st|1 year ago

Yes, for now, it supports only the local network. But... I think I can deploy server to make it online as well

satvikpendem|1 year ago

Not sure if the author is on this post but how was it like working with Flutter? Does this project run on web and desktop as well as mobile. Also, I'd look into replacing fvm with puro or mise instead, both are much faster.

frenchie4111|1 year ago

Very awesome project, can't wait to get a chance to try it out.

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)

igor_st|1 year ago

Thanks, just updated Readme with more screenshots!

unification_fan|1 year ago

Ah I thought this was about computer games. For a second I thought that it was an engine to build arbitrary cross-platform card games with solid online multiplayer. But this seems rather specific, and cross-platform only means "Android/iOS" which is a stretch since they both run on the same kind of devices.

mmanfrin|1 year ago

Same. I feel like it's almost a rite of passage of anyone who has built sideproject card games/hex games t think about building their own little engine (especially after spending time on red blob game's tutorials).

menzoic|1 year ago

I’m building what you thought it was. DM to beta test!

igor_st|1 year ago

I don't think there are any hard dependencies to deploy it on the web, tho have not tried. Might need to find a few alternative packages.

I agree that `engine` is a strong word - still early days :)

gagzilla|1 year ago

This looks really cool. A while ago I was thinking of putting together something similar but for very different reasons but this would enable bringing them to life much more easily.

Have you published as yet, how to create a new game on this?

ncruces|1 year ago

I've wanted to do something like this for about a decade. Good job!

lukeh|1 year ago

Not to hijack the thread but, I'm building a personal monitor mixer (AoIP in, headphone out) with the control plane written entirely in Swift and the UI in Flutter. It works very nicely and we get an iOS/Android remote for free.

https://forums.swift.org/t/an-embedded-audio-product-built-w...

mdaniel|1 year ago

How in the world is this "not hijacking the thread" when your thing is not even related to shared gaming experiences, and almost certainly is not cross platform? Did you chime in just because you wrote something in Flutter?

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

pkstn|1 year ago

Nice! Also check out my multiplayer deck of cards on just pure web: https://deck.of.cards

Hope to finish the new version soon

bsimpson|1 year ago

It's disappointing that Steam doesn't have a free publishing option for open source apps. The $100 publishing fee can be enough to relegate a game to GitHub rather than Steam, and I'd much rather install from Steam than figure out how to use an AppImage or whatever got posted to a GitHub Releases page.

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.

tinix|1 year ago

this is getting a lot of hate here, surprisingly: people saying this is antisocial or you should just go to the store and buy a deck of cards, etc...

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!

milesrout|1 year ago

It isn't getting any "hate" at all unless some comments have been deleted that I cannot see.

It has some very mild conceptual criticism from two top level comments.

tomw1808|1 year ago

I think its an awesome showcase project, no doubt - I starred it and bookmarked it, probably like so many others.

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.

sejje|1 year ago

If you're playing cards, people are going to be staring at their [cards] in their hand staring at the [cards].

In this case, your cards are digital. Presumably you can choose some people who just want to play cards, not doomscroll instagram.

mikehotel|1 year ago

This is a good point. We are easily distracted, especially when waiting for people to take their turn. The device based distractions can be stopped by using Guided Access. It can temporarily lock a device to one app, and block notifications from popping up.

enduser|1 year ago

The main project website is cropped horizontally and vertically (bottom) on iOS Safari

igor_st|1 year ago

Thanks, I will take a look

egypturnash|1 year ago

The inspiration for “The Deck” came from a situation many of us have experienced. Imagine gathering with friends for a game night, only to realize that nobody has the necessary cards. Frustrating, right? This dilemma sparked the idea of leveraging technology to create a solution.

This feels like a lot of work compared to popping down to the corner store for a pack of cards.

jancsika|1 year ago

On the other hand, it would be prohibitively expensive to, say, auction off the whitespace of each card to the highest bidder in a realtime auction.

With apps players may get this functionality right out of the box.

jsnell|1 year ago

Leaving aside the efficency of the solution, I find it hard to believe that the problem is all that frequent. Yes, there are people who don't keep around decks of cards or other basic game components. But do those people organize game nights?

sram1337|1 year ago

Really? It looks like everyone just opens the app, one person hosts, and everyone scans their phone. Done. Works over wifi. No "searching" for the hosted server.

20 seconds vs. 30 minutes to drive to the store and back.

delduca|1 year ago

I will never trust on a Google technology.

rmrf100|1 year ago

well, I think that's not necessary, Google have a lot of good technology.