Mobile integration of tournaments and quests
1) Architecture and embedding points
Navigation: lobby → "Tournaments "/" Quests" tab; quick access from the header (progress badge icon).
Diplinks: 'app ://event/{ id}', 'app ://mission/{ id}', 'app ://leaderboard/{ id}? tab = my' - a single router for in-app, fluffs and web widgets.
Embedding content:- Native/React Native/Flutter for leaderboards, mission cards and timers.
- WebView - only for static InfoRules critical real-time cannot be rendered.
2) Mission Card: Mobile Anatomy
Title ≤ 2 lines, type icon, short description (what/where/how much time).
Progress bar + number (2/3), time estimate (≈ 20-25 min), complexity (•).
Awards: tokens/cosmetics with mini-icons, without "monetary" subtext.
CTA one: "Start/Continue/Pick." Secondary: "Change" (cooldown), "More."
Timer to deadline (soft colors, red in the last 10%).
on_hold status: "We check the result (up to 3 minutes). Reward saved."
3) Leaderboards on mobile (no flicker)
Columns: # place, player (avatar/frame/nickname), points, prize zone, timer.
Sticky "I" + button "to yourself." Jump to rank.
Updates by batches once every 1-2 seconds, animation movement 120-200 ms.
Pagination: infinite scrolling + "to the beginning/to oneself."
Only diff strings (virtualization, windowing) are visible.
4) Fluffs and in-app notifications (orchestration without spam)
Rule: priority of in-app cards → push → email.
Windows: intersection of the probable online user with the event schedule (model "activity in the next 90-120 minutes").
Frequency: ≤ N/week, ≤ M/day; quiet hours; "smart silence" after the mute.
Payloads: short text + diplink + award preview.
Examples: `push. payload`:json
{
"title": "Evening sprint, 20 minutes," "body": "Start in 15 minutes. Rare cosmetics in the prize zone. ", "deeplink": "app://event/ev. s5. sprint20? highlight=reward"
}
In-app card: "≈20 -25 min, 3 providers, rare drop 10%."
5) Offline and weak network
24-48h mission/schedule cache; "Last sync: 14:02" label.
Offline states: "View rules" and "Plan participation," without starting.
Repeat button for network errors; ETag/If-None-Match for savings.
6) Performance and battery
List virtualization (300 + rows).
Lottie/sprites, VFX duration limit (0. 6–1. 2 s), without heavy shaders.
Timers are a single teak shader, not one 'setInterval' per element.
Background updates: BG App Refresh/WorkManager with frequency cap and response size.
Telemetry: WebSocket/SSE → compression; backoff at background.
7) Safety, honesty and anti-abuse
The server solves the RNG, the client only the visual.
Awards idempotence: one event → one accrual (server-side).
Humanity challenges instead of captcha (micro-gestures) are included at risk.
Restriction "change mission" (cooldown), variability of requirements (anti-farm).
Onboarding "How it works": drop odds, pity, caps, league rules.
8) RG guards on mobile
Toggle switches "quiet mode," "muffle other people's effects," reminders of pauses.
For fatigue signals - reducing complexity, offering a break, prohibiting long formats.
Quick opt-out from personalizing notifications and minigames.
9) Rights and confidentiality
iOS ATT/Notifications: explain value, ask permission after micro-onboarding.
Android 13 + runtime resolutions for fluff; notification channels (low/normal/high).
Data collection - aggregates; PII minimum; screens with policy and Delete Data.
10) Analytics and Metrics
Mission Cards: CTR, Start Rate, Completion Rate, Median TTC, Equip Rate/Duration for Cosmetics.
Tournaments: Join Rate, share "to yourself," table visibility time, P95 time to reward.
Notifications: Hit Rate windows (hit the active session), Join Uplift, Mute/Unsub Rate.
Economy: Emission to GGR, Prize ROI, Gini by SP.
Stability: crumbs for network errors, render duration, ANR/Crash-free.
11) A/B plan
1. Progress bar: numeric + visual vs visual only.
2. Time evaluation on the card: on/off.
3. Leadboard update frequency: 1 s vs 2 s.
4. Push time: T-30 vs T-15 min.
5. Card format: one CTA vs two equals.
6. "To": pinned string vs button.
12) Platform nuances
iOS: BG App Refresh Limited; use pooches with 'content-available' for quiet updates (careful).
Android: WorkManager/Foreground Service only with explicit activity; notification channels are mandatory.
React Native/Flutter:- RN: FlatList with 'getItemLayout '/' windowSize', Reanimated 3 for diff animations.
- Flutter: `ListView. builder '+' AnimatedList '/' ImplicitlyAnimatedReorderableList ', isolates for heavy logic.
13) Content model (JSON) and diplinks
Mission
json
{
"id": "m. s5. play. providers. 3," "title": "Open three providers," "summary": "Play with 3 different providers in 30 minutes," "difficulty": "medium," "est_time_min": 25, "progress": {"current": 1, "target": 3}, "rewards": {"tokens": 12, "cosmetic_drop": {"rarity": "Rare," "p": 0. 1}}, "expires_at": "2025-10-28T18:00:00Z", "state": "available", "deeplink": "app://mission/m. s5. play. providers. 3? start=true"
}
Tournament
json
{
"event_id": "ev. s5. sprint20", "title": "Вечерний спринт 20 мин", "stage": "qualifier", "ends_at": "2025-10-24T21:00:00Z", "leaderboard": {"league": "Gold I", "my_rank": 128, "delta_to_next": 42}, "rewards_preview": [{"type": "cosmetic", "rarity": "Epic"}], "deeplink": "app://event/ev. s5. sprint20? tab=leaderboard"
}
URI scheme
app://event/{id}
app://mission/{id}
app://leaderboard/{id}?tab=my app://quests/today
14) States, errors, skeletons
Loading: skeletons 3-5 lines/tiles, shimmer ≤ 1. 2 c.
Empty: useful text + "Get a launch mission."
Error: simple message + "Repeat"; offline - cache and last synchronization time.
15) Release checklist (MVP → v1. 0)
MVP (2-4 weeks):- Diplinks, basic mission cards, leaderboard with batch updates 2 s.
- In-app notification cards, one push channel, schedule cache, How it works screen.
- RG toggle switches, anti-farm (cooldown "Change mission").
- Personal "to yourself," Jump to rank, mini-warm-up game (≤ 90 s) in the qualifier.
- Quiet fluffs for background updates, reason-codes when on_hold.
- Telemetry: Hit Rate windows, Join Uplift, Gini SP.
- Full seasonal track, retro cosmetics comebacks, localization, accessibility (contrast, VoiceOver/TalkBack tags).
- Audit logs, appeals, antibot biometrics.
- A/B engine (feature flags), honesty reports.
Mobile integration of tournaments and quests works when navigation is instantaneous (diplinks), UI is readable "at a glance," updates are smooth and economical to the battery, and honesty and RG guards are built into every solution - from mission cards to push orchestration. Give the player clear goals, predictable timers and quiet VFX, keep the promo economy under your mouths and measure Hit Rate windows, Completion/Join Uplift and Gini by SP - then the mobile bundle will become a stable engagement engine without unnecessary noise.