Розробка мобільної карточної гри
Карточні ігри — жанр з високою залежністю від балансу даних та надійності стану матчу. Якщо баг анімації у файтингу можна не помітити одразу, то неправильно розраховуваний ефект карти в карточній грі руйнує досвід миттєво.
Стек стану матчу
Кожен хід — транзакція. Гравець зіграв карту → ланцюжок ефектів → новий стан дошки. Якщо посередині ланцюжка відбувся крах або розрив з'єднання, стан не повинен залишитися «наполовину застосованим».
Реалізація: паттерн Command для всіх ігрових дій. PlayCardCommand, AttackCommand, DrawCardCommand — кожна команда має Execute() та Undo(). Весь хід — це стек команд, який або застосовується повністю, або откатывается. Це також дає replay функціональність безплатно: збережіть стек команд + початковий seed — отримаєте воспроизводимий матч.
Real-time vs асинхронний PvP
Синхронний PvP (обидва гравці онлайн): Photon Realtime з користувацьким Room State. Ходи передаються як события (RaiseEvent), сервер виступає relay. Для валідації — окремий сервіс на сервері, який перевіряє легальність ходу до трансляції опоненту.
Асинхронний PvP (Push & Pull): хід зберігається на сервері, опоненту приходить FCM push-сповіщення. Працює навіть при поганому з'єднанні, більш толерантен до мобільної аудиторії. Для колоди та балансу — Firebase Firestore з security rules.
Візуальне представлення карт
Карти у Unity — Canvas з RectTransform для UI-based рендера або окремі SpriteRenderer mesh'и для ігрової дошки. UI-підхід зручніший для анімації та drag-and-drop через IBeginDragHandler, IDragHandler, IEndDragHandler. DOTween для ефектів розигрування карти: вильот з руки, свічення, shake при атаці.
Динамічна генерація арту карт з шаблону: RenderTexture + Camera offscreen — рендеримо 3D-модель карти з потрібними параметрами в текстуру, використовуємо як спрайт. Дозволяє мати 500+ унікальних карт без 500 окремих текстур.
Графік: однопользувацька карточна гра з ІІ-опонентом — 3–5 місяців; з PvP та режимом deck-building — 5–9 місяців.







