gittech. site

for different kinds of informations and explorations.

The Deck: An Open-Source Cross-Platform Multiplayer Card Game Engine in Flutter

Published at
Feb 8, 2025
alt text

The Deck

πŸ•ΉοΈ Mobile multiplayer offline card games aggregator πŸš€ πŸ‘¨β€πŸ’» Written πŸ’― in Dart and Flutter πŸ”¨

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.

alt text

The primary goal of β€œThe Deck” is to provide a user-friendly and cooperative digital game environment for playing classic games that were usually played with cards on paper. One of the standout features of β€œThe Deck” is its unique ability to assign one device as the β€œtable” (a.k.a. deck). By placing this device in the middle of the group, all players can witness the real-time state of the cards. This adds a new level of immersion making it a truly captivating experience.

alt text

Gameplay

  1. Select a game πŸ“š
  2. Connect to the room πŸ”—
  3. Start game πŸš€
Image 3 Image 4 Image 5

Read more

Other

Contribute

Contribution is welcome 🀝

If you contributed and build a new Game, ping me if you wish it to be released on the store markets. [email protected]

Flutter

Setup

Use FVM to manage Flutter SDK version

  • install fvm with brew
  • Setup Flutter version from pubspec fvm use x.y.z
    • Read version here: fvmrc
  • run with fvm flutter run

MR / Pull Request

Naming convention, start commit description with:

  • (FEAT) - feature
  • (FIX) - bug fix
  • (CHORE) - refactoring, updating dependencies, etc
  • (TEST) - tests

Release

Android

  • For App Store release ⭐️
    • fvm flutter build appbundle --release
  • Fat APK with all ABI
    • fvm flutter build apk --release
    • Upload file to Play store
  • For split-abi APK testing
    • fvm flutter build apk --release --split-per-abi

iOS

  • Archive for App store upload ⭐️
    • fvm flutter build ipa --release
    • open file with Xcode, validate and upload
  • IPA file to drag & drop into iphone:
    • fvm flutter build ipa --release --export-options-plist="/Users/igor.steblii/Projects/foundation_tone/ft_fe/build/ios/archive/Runner.xcarchive/Info.plist"

Common errors

  • In case VS code fail with missing Cocoapods

    • fvm flutter clean + fvm flutter pub get + Reload VSCode
  • For normalize': Unicode Normalization not appropriate for ASCII-8BIT (Encoding::CompatibilityError)

  • Run: export LC_ALL=en_US.UTF-8

  • for wrong locale export LANG="en_US.UTF-8

  • Run locale if there is any C, then run export LC_ALL=en_US.UTF-8

  • For flutterfire script fails with "unhandle JSON exception"

  • Download json/plist form Firebase and update in respective folders (https://github.com/invertase/flutterfire_cli/issues/30)

  • iOS Device require permission to connect to local network, which cannot be access from code. To emulate access query local IP address

  • Another way is to add permission to Info.plist to ask on app start:

    • NSLocalNetworkUsageDescription
    • Access to the local network required to create and connect to game rooms
  • For Error when reading 'lib/objectbox.g.dart': No such file or directory

    • Run: fvm flutter pub run build_runner watch --delete-conflicting-outputs

Tools

To generate a new Redux template see scripts

License

This project is licensed under the terms of the MIT license.