The game supports 2, 3, and 4 players, including the team-based 2vs2 mode, and ships with multiple authentic rule variants — Classic, Klabor, and Kharkiv — so communities that grew up playing their own local version of Deberts feel right at home. From the 32-card deck and trump-selection bidding to declarations like terc, fifty, belle, and debertz, every rule of the game is faithfully implemented and independently verifiable against a formal rules specification.
Our goal was to deliver a card game that is technically robust, visually beautiful, and genuinely fun — a real-time product that feels instant and reliable on a phone, yet flexible enough to support the many regional rule variations that make Deberts beloved across Eastern Europe and beyond.
Tech Stack
- Mobile: Flutter / Dart, GetX
- Real-time: WebSockets (web_socket_channel) with custom reconnection
- Networking: REST API via Dio (custom interceptors)
- AI / Game logic: Custom bot engine, ISMCTS, Monte Carlo simulation
- Backend services: Firebase (Auth, Cloud Messaging, Analytics, Crashlytics)
- Auth: Sign in with Apple, Google Sign-In
- Attribution & analytics: AppsFlyer, Firebase Analytics
- Media: flutter_soloud (audio), Lottie animations
- DevOps: GitLab CI/CD, Fastlane, automated App Store & Google Play delivery
Project Duration
6 month
Team
- 2 Flutter (mobile) developers
- 2 Backend developer
- 1 QA
- 2 UX/UI
- 1 PM
- 1 BA
- 1 DevOps
- 1 PO
Business challenges
Building a competitive, real-time multiplayer card game for mobile presented several layered challenges:
Faithful, configurable game rules
Deberts is not one game but a family of regional variants. Card rankings, trump logic, combination scoring, bidding obligations, and edge cases (four sevens re-deal, trump-seven exchange, belle protection) differ between rule sets. We needed a single engine that could be configured to play Classic, Klabor, or Kharkiv rules correctly — and prove it.
Real-time play that survives the real world.
Mobile networks drop. Players background the app, lose signal in an elevator, or switch from Wi-Fi to cellular mid-trick. A multiplayer card game has to handle disconnects and reconnects gracefully without corrupting game state or unfairly penalizing players.
A believable offline opponent.
To let users play instantly — without waiting for a live table — the app needed AI bots strong enough to be challenging and human enough to be fun, across every supported rule variant and player count.
Cross-platform parity
The same gameplay, scoring, animations, and feel had to be identical on both iOS and Android from a single codebase.
Engagement and retention
As a casual-competitive game, success depends on social play, smooth onboarding, push-driven re-engagement, and a frictionless sign-in experience.
App Store and Google Play compliance.
Shipping and continuously updating a game on both stores — including Apple Sign-In requirements, tracking transparency, and consent flows — demanded a reliable release pipeline.
Key Results
By designing and developing the project, the team delivered:
A single cross-platform Flutter application running natively on iOS and Android with shared game logic and a consistent player experience.
A complete real-time online multiplayer mode built on WebSockets — lobby, room creation with custom filters, waiting room, live play, and in-game messaging — with robust reconnection handling that restores a player back into the live game after a dropped connection.
A fully offline mode against AI opponents, powered by a custom bot engine, so players can start a game instantly with no internet connection.
Support for 2/3/4 players and 2v2 team play, with three configurable rule variants (Classic, Klabor, Kharkiv) and granular custom-rule settings.
Social and engagement features: friends system, invitations, presence (online status), quick in-game chat messages, complaints/blocking for fair play, and push notifications.
Multi-language support out of the box — Ukrainian, English, and Russian.
A fully automated CI/CD pipeline delivering builds straight to the App Store and Google Play.
Our Solution
Cross-platform client in Flutter
The entire app is built on Flutter (Dart) from a single codebase, using a clean, modular feature architecture (GetX for state management and dependency injection). This gave us native performance and pixel-perfect parity across iOS and Android while keeping development efficient.
Frictionless onboarding and engagement
Sign in with Apple and Google Sign-In, SMS/PIN flows, deep links and app-links for invitations and sharing, Firebase Cloud Messaging push notifications, and App Tracking Transparency / consent handling for store compliance.
A configurable rules engine, verified against a spec
All game rules live in a dedicated game-logic layer (deck management, card tracking, combination detection, score calculation). The rules are formalized in a written specification covering every parameter — trump selection, combinations, validity of moves, scoring — and the implementation is continuously checked for conformance against it, which is how we guarantee correct play across Classic, Klabor, Saltivka and Kharkiv variants.
Polished game feel
Custom animations, a sound engine (SoLoud + audio session management), Lottie animations, native splash and adaptive launcher icons, and in-game contextual phrases give the game a premium, lively feel.
Intelligent AI bots
The offline opponent is a custom bot engine combining hand evaluation, bidding and declaration evaluators, opponent modeling, and an Information Set Monte Carlo Tree Search (ISMCTS) strategy alongside a Monte Carlo simulator. Bot archetypes and tunable traits make opponents feel varied and human, and the same engine respects whichever rule variant the player has selected.
Real-time engine over WebSockets
Online play is driven by a dedicated socket service with separate lobby and game channels. We engineered resilient reconnection logic — including state-hash validation on reconnect — so a player who loses connection mid-game is seamlessly returned to the exact live state rather than being kicked or desynced. A REST API (via Dio, with auth, language, error, and logging interceptors) handles everything outside the live table.
Our Achievements
We built a complete, production-grade real-time mobile game with:
-
A GitLab-based CI/CD pipeline that runs unit tests, builds Android APK/AAB and iOS artifacts via Fastlane, and publishes automatically to Google Play (internal/alpha tracks) and the App Store — with separate dev and prod environments and secure secret/keystore management.
-
A clean, layered architecture (core / data / features) that isolates game logic from UI and networking, making the codebase scalable and easy to extend with new rule variants or mod.
-
Unit and conformance test coverage for the rules engine and bots, including dedicated audits comparing front-end and back-end bot behaviour to keep online and offline play consistent.
-
Product analytics and stability tooling baked in: Firebase Analytics, Crashlytics, and AppsFlyer for attribution — giving the business real visibility into player behaviour, crashes, and acquisition.
-
Localization-ready from day one (Ukrainian, English, Russian) with a centralized localization service.
Kashcheiev Maksym
Head of Business Development
contact us: