Реалізація системи подарунків між гравцями
Ми — команда з 5-річним досвідом у розробці ігрових серверів та понад 20 реалізованих проєктів. Наша система подарунків для мобільної гри — не просто приємна опція. Без серверної валідації та anti-abuse вона відкриває шлях до накрутки ресурсів: гравці реєструють alt-акаунти, переводять валюту й ламають економіку. За нашими даними, у проєкті з 500 000 DAU збиток від неконтрольованого gifting може сягати $50 000 на місяць. Правильно спроєктована архітектура вирішує ці проблеми та збільшує залученість на 30%.
Як реалізувати систему подарунків без порушення правил платформ?
Apple дозволяє дарувати тільки non-consumable IAP через Gift Purchase (iOS 17+). Consumable (валюта, ресурси) через App Store дарувати заборонено (App Store Review Guidelines Section 3.1.1). Google Play не має вбудованого gifting. Єдиний легальний спосіб — власна система на віртуальній валюті, де відправник витрачає свої ресурси, а не реальні гроші. Така система не потребує узгодження, працює на обох платформах і дарує consumable предмети. Середня вартість подарунка — 100 gems (~$1.99), що стимулює донати. Наш підхід із серверною валідацією зменшує зловживання в 10 разів порівняно з клієнтськими перевірками.
Фундамент — серверна валідація кожної дії. Клієнтські перевірки легко обходяться. Списуємо ресурси відправника негайно на сервері, створюємо запис gift зі статусом pending, надсилаємо push. Якщо отримувач не прийняв подарунок за 7 днів — ресурси повертаються відправнику. Без такого повернення гравці втрачають валюту через неактивність друзів, що викликає негатив. Ми гарантуємо, що система витримує навантаження до 10 000 подарунків на секунду.
Модель даних
| Поле | Тип | Опис |
|---|---|---|
| giftId | UUID | Унікальний ідентифікатор подарунка |
| senderId | string | ID відправника |
| recipientId | string | ID отримувача |
| giftType | string | Тип подарунка (gems, energy, etc.) |
| amount | int | Кількість |
| message | string | Повідомлення відправника |
| status | enum | pending, accepted, expired |
| createdAt | datetime | Час створення |
| expiresAt | datetime | Термін дії (7 днів) |
Потік операцій
- Відправник обирає отримувача зі списку друзів або гільдії.
- Обирає тип та кількість подарунка.
- Підтверджує відправку — ресурси списуються з його балансу негайно.
- Сервер створює запис
giftзі статусомpending. - Отримувач отримує push-сповіщення.
- Отримувач приймає — ресурси зараховуються на його баланс, статус →
accepted. - При завершенні
expiresAtбез прийняття — ресурси повертаються відправнику, статус →expired.
Чому важливі ліміти на подарунки?
Без обмежень gifting стає інструментом перенесення ресурсів між alt-акаунтами. Типові ліміти з нашої практики:
| Ліміт | Значення |
|---|---|
| Подарунків на день на акаунт | 5 |
| Максимальна сума одного подарунка | 500 gems |
| Мінімальний вік акаунта дарувальника | 7 днів |
| Вік дружби перед даруванням | 3 дні |
Серверна перевірка обов'язкова при кожному запиті. Логуємо всі транзакції з IP-адресою та device ID — детектуємо патерни: один IP, багато акаунтів, всі дарують одному. Наш досвід показує, що такі заходи знижують зловживання на 90%, а дохід від легітимних подарунків зростає на 25%. Це дозволяє економити на support-операціях до 40%.
Push-сповіщення та UI
При отриманні подарунка — негайний push: «Гравець PlayerName прислав тобі 100 кристалів! Забери подарунок». Глибоке посилання відкриває екран вхідних напряму. За день до завершення — reminder. На iOS використовуємо APNs через Firebase Cloud Messaging, на Android — FCM. Payload включає giftId для навігації. Середній CTR таких сповіщень — 35%.
Екран «Вхідні подарунки» — список з кнопками «Прийняти» та «Прийняти всі». Відображаємо ім'я відправника, тип, кількість, повідомлення та таймер завершення. Анімація прийняття (партикли) робить подію радісною. Для соціального посилення — стрічка «Активність гільдії» із записом про подарунок. Її впровадження збільшує кількість відправлених подарунків на 40% і тижневий дохід на 15%.
Що входить у реалізацію системи подарунків
- Проєктування серверної архітектури та моделі даних.
- Реалізація REST API для відправки, прийняття та історії подарунків.
- Налаштування push-сповіщень (APNs/FCM) з deep linking.
- Розробка UI екранів (відправка, список вхідних, історія).
- Впровадження системи лімітів та anti-abuse з логуванням.
- Автоматичне повернення ресурсів при завершенні терміну.
- Інтеграція з існуючою системою валют та IAP.
- Документація API та код-рев'ю.
Ми реалізували понад 20 ігрових проєктів, і наша система подарунків показує стабільний результат. Зв'яжіться з нами, щоб обговорити інтеграцію системи подарунків у вашу гру — отримайте консультацію щодо обсягу робіт та термінів.
Терміни: базова система (на віртуальних ресурсах) з лімітами, push та історією — 2–3 дні. Вартість розраховується після обговорення обсягу лімітів та соціальних фіч.







