Турнир жана миссиялардын модулу: окуялар, рейтингдер, сыйлыктар
1) Бизнес максаттары жана иш түрлөрү
Максаттары: сактоо өсүшү (D1/D7), ARPPU, сессиялардын тереңдигин жогорулатуу, жаңы оюндарды жана рынокторду илгерилетүү.
Форматтары:- Турнирлер: упайлардын/утуштардын/мультипликаторлордун суммасы боюнча, спринттер (30-60 мин), күндүзгү, сезондук.
- Миссиялар/квесттер: тапшырмалардын ырааттуулугу (спиндердин N ойноо, X утуп алуу, провайдерди Y аракет кылуу), этап-этабы боюнча прогресс жана сыйлыктар менен.
- Лидборддор: глобалдык, рыноктор/оюндар/коюмдар, жеке (достор/VIP).
- Jackpots/студиялардын рейтинги: "жуманын мыкты провайдерлери", "көбөйткүчкө аңчылык".
KPI: катышуу ≥ 12-25% активдүү аудитория, 10-20% жарнамалык киреше үлүшү, даттануулар <0. Катышуучулардын 5% ы, берилген байге фонду ≤ план.
2) Архитектура жана маалымат агымдары
Компоненттер
1. Events Gateway → оюн иш-чараларды кабыл алуу (spin, bet, win, round_end) оюн-gateway/провайдерлер.
2. Rules Engine → турнирлердин/миссиялардын эрежелери боюнча матчит окуялар, упай (idempotent).
3. Leaderboard кызматы → көз айнек топтойт, жогорку/кесип сактоо, сорттоо жана тай-брейк колдойт.
4. Progress Service (миссия) → милдеттердин/этаптардын абалы, аралык сыйлыктарды берүү.
5. Rewards Service → эсептөө жана коопсуз төлөм (капчык аркылуу: cash/bonus/fs/points).
6. Admin/Studio UI → түзүү, пландаштыруу, алдын ала экономика, симуляция.
7. Realtime/WS → leadboard, прогресс, билдирүүлөрдү жарыялоо.
8. Anti-Abuse → лимиттери, тобокелдик сигналдары, антифроддук/бот-менеджер менен интеграция.
9. Storage/Cache → KV/Redis үчүн Hot Top, OLTP үчүн фактылар, DWH үчүн аналитика.
Агым (e2e)
`game_event → gateway → rules_match → points → leaderboard_update → (progress_update) → notify → rewards_at_close → wallet_postings`
3) Окуя модели (минималдуу талаа)
json
{
"event_id": "e_9f2",  "ts": "2025-10-23T17:41:26Z",  "user_id": "u_123",  "market": "DE",  "brand": "X",  "game": {"id":"g_77", "provider":"PragmaticPlay", "type":"slot"},  "bet": {"amount_minor": 100, "currency":"EUR"},  "win": {"amount_minor": 250, "multiplier":2. 5},  "round": {"id":"r_abc","status":"ended"},  "device": {"platform":"mobile","asn":"mno"},  "trace_id": "t_…"
}Транспорт - Kafka/HTTP, idempotent иштетүү (dedupe 'event _ id'), провайдер/оюн шлюз кол (HMAC).
4) Турнирлердин эрежелери жана тапшырмалардын конструктору
Декларативдик схема (YAML мисалы):yaml id: t_october_sprint window: {start: 2025-10-25T18:00Z, end: 2025-10-25T19:00Z, tz: Europe/Kyiv}
scope:
markets: [DE, SE]
providers: [PragmaticPlay, Hacksaw]
scoring:
formula: "points = min(win. amount/bet. amount, 50) 100" # көбөйткүч боюнча min_bet_minor: 50 eligible_games: ["g _"]
leaderboard:
type: "best_n_rounds" # мыкты N тегерек кошуу N: 20 tiebreaker: ["highest _ single _ multiplier"", earliest _ finish _ ts"]
rewards:
pool: {currency: EUR, total_minor: 1000000}
distribution: "ladder" # тепкич, жогорку 100 anti_abuse:
min_round_duration_ms: 800 max_rps_per_user: 0. 5 exclude_asn_categories: ["hosting", "proxy"]yaml mission_id: m_halloween steps:
- id: s1 goal: {type: "spin_count", game_type: "slot", count: 50}
reward: {type: "freespins", value: 10, game: "g_66"}
- id: s2 goal: {type: "win_multiplier", min: 10}
reward: {type:"bonus", amount_minor: 500}
completion_reward: {type: "points", amount: 1000}5) Рейтингдер жана эсептөө алгоритмдери
Негизги моделдер
Упай суммасы: сызыктуу/логарифмдик/бир раундга капка менен.
Мыкты N тегерек: "pay-to-grind" азайтуу, "спринт" динамикасын кармап турат.
Максималдуу көбөйткүч (xWin): валюталарды жана чендерди жөнгө салат.
MMR/рейтинг системасы: PvP/достук атаандаштык таблицалар үчүн ELO окшош.
Тай-брейктер
1. 'highest _ single _ multiplier' → 2) 'fewest _ rounds' → 3) 'earliest _ finish _ ts' → 4) 'user _ id' лексикографиялык (эрежелерде белгиленген).
Өндүрүмдүүлүк
Top K сактоо (мисалы, 10k) Redis Sorted Set 'ZADD key score member'.
"Мыкты N тегерек" үчүн: колдонуучу жана суммасы боюнча акыркы мыкты N min-heap сактоо, "учуп".
Мезгил-мезгили менен snapshot (ар бир 30-60 секунд) OLTP/объект.
6) Сыйлыктар жана төлөмдөр
Сыйлыктардын түрлөрү: cash/bonus/free spins/points/буюмдар/билеттер.
Эрежелер:- Берүү гана аяктагандан кийин (даттануу терезе 5-10 мин).
- Бардык төлөмдөр - Rewards Service → Wallet (ledger) аркылуу: double-entry, 'reward _ id' боюнча демпотенттик.
- Миссиялардын аралык этаптары үчүн - "жумшак" сыйлыктарды берүү (FS/points), cash - чынжыр аяктагандан кийин.
- KUS/жоопкерчиликтүү оюн: эсеп бөгөттөлгөндө - текшерүү алдында сыйлыкты кармап туруу/тоңдуруу.
- Fixed ladder: алдын ала белгиленген баскычтар (1-орун 30%, 2-орун 20%,...).
- Proportional: көз айнек бассейнден үлүшү, бирок бир жерге cap.
- Ticket-based: миссиялар "билеттерди" берет, билеттер боюнча чүчү кулак (ачык-айкын RNG).
7) Анти-кыянаттык, чынчылдык жана комплаенс
eligibility чыпкалар: min чени/тегерек узактыгы, "0-bet" кошпогондо, кайра-жарылып, "микро-чендерди" конвейер.
Бот сигналдары: headless-UA, аномалдуу мезгилдүүлүк, аномалдуу туруктуу RPS, прокси-ASN → жашыруун чакырыктар/көз айнек тоңдуруу.
Дедуп/идемпотенттүүлүк: 'event _ id' боюнча окуялар, 'score _ id' боюнча эсептөөлөр.
Audit trail: лидборддун сүрөттөрү, RNG (ticket-чүчү кулак үчүн), эрежелердин версиясы, хэш эсептөөлөр.
Юридикалык: эрежелер/базарлар боюнча чектөөлөр, жашы, өзүн-өзү жоюу.
8) Турнирлердин экономикасы
Budget guardrails: көлмөнүн жогорку чек + динамикалык "safety valve" (ысып жатканда орто бонустарды азайтуу).
Ийкемдүүлүк: маржа кармоо үчүн акча ордуна points/FS менен сыйлыктарды жылдыруу.
Өзүн актоо коэффициенттери: байге фонду/турнир оюндарынын сегментинен түшүүлөр; максаттуу 8-15%.
Администратордо симулятор: тарыхый окуяларды басып өтүү → төлөмдөрдү/катышууну болжолдоо.
9) API-контракттар (жөнөкөйлөштүрүлгөн)
Активдүү турнирлерди/миссияларды алуу
http
GET /v1/contests? market=DE&brand=X
→ 200 [{"id":"t_october_sprint","start":"…","end":"…","type":"xwin","status":"live"}]Оюн окуясы (ingest)
http
POST /v1/events
{"event_id":"e_9f2", "...": "..."}
→ 202 {"accepted":true}Лидборд (Top-K жана колдонуучунун абалы)
http
GET /v1/leaderboards/t_october_sprint? top=100&me=u_123
→ 200 {"top":[{"pos":1,"user":"u_9","score":18400},...],    "me":{"pos":342,"score":5600,"delta":+200}}Прогресс миссиясы жана сыйлык
http
GET /v1/missions/m_halloween/progress? user=u_123
→ 200 {"steps":[{"id":"s1","done":true},{"id":"s2","done":false}],"reward_ready":true}
POST /v1/rewards/claim
{"context":"mission","id":"m_halloween","step":"s1"}
→ 201 {"status":"granted","reward_id":"rw_77"}10) Сактоо жана масштабдоо
Hot жол: Redis (Sorted Sets/Hash) жогорку жана прогресс үчүн; TTL боюнча "ызы-чуу" ачкычтар, sharding 'contest _ id'.
Чындык: OLTP (Postgres/MySQL) - көз айнек/прогресс/төлөм фактылары (WORM-сүрөттөр).
кезек: Kafka - окуялардын агымы; Региондор/бренддер боюнча керектөөчү топтор.
Кэш: кыска TTL 1-5 с; коомдук топтор үчүн stale-while-revalidate (CDN аркылуу).
WebSocket: realtime астында өзүнчө кластер/бассейн, батч-жөнөтүү жана rate-limit билдирүүлөр.
11) Байкоо жана сапатын контролдоо
SLI/SLO:- `leaderboard_update_latency_p95 ≤ 250мс`
- `events_ingest_success ≥ 99. 9%`
- `rewards_grant_success ≥ 99. 9%`
- `ws_push_rtt_p95 ≤ 120мс`
- адилетсиздик боюнча даттануулар <0. 5% катышуучулар.
- rate окуялар/катышуучулар, уникалдуу оюнчулар, чен/оюн бөлүштүрүү, орточо көбөйткүч; 'grant _ errors', 'dedupe _ hits'.
- Tracks: ingest → rules → score → LB update → reward; tags 'contest _ id', 'rule _ id'.
- Логи: 'trace _ id' менен JSON, PII тыюу салуу; аудит үчүн WORM.
12) Окуялар жана runbook 'i (кыскартылган)
A. Лидборд артта (lag> 2с)
Иш-аракеттер: Kafka керектөөчүлөрүн көбөйтүү, партиялык "ысык ачкычты" (repartition) азайтуу, батчинг update камтыйт.
Убактылуу: realtime-анимацияларды тоңдуруп, "~ 1-2с кечигүү".
B. Сыйлыктарды берүүдөгү каталар
Иш-аракеттер: жаңы 'grant' токтотуп, snapshot менен текшерип, idempotent 'grant' сабап; лоббисинде статус-апдейт.
C. Бузукулук (прокси ASN)
Иш-аракеттер: eligibility күчөтүү, көзгө көрүнбөгөн чакырык күйгүзүү, убактылуу шектүү сессияларга упай эске алуу, пост-текшерүү.
13) UX жана локалдаштыруу
Реалдуу убакыт: "Live" көрсөткүчү, жылмакай дельта көз айнек, орду жана кийинки жерге аралык.
Ачык эрежелер: формула/тай-брейк/чектөөлөргө жетүү.
Нотификация: "5 мүнөт калды", "сен топ-50", "жеткиликтүү сыйлык".
Локализация/укуктук тексттер: рыноктор боюнча, убакыт алкактары (Европа/Киев жана жергиликтүү катышуучулар).
14) Коопсуздук жана купуялык
Коомдук топ оюнчулардын псевдонимдери; демейки PII жашыруу.
Вебхуктардын/окуялардын кол тамгалары, mTLS; edge боюнча "кэш-пойзон" коргоо.
Rate-limit API, кэш-бастингден коргоо, 'idempotency _ key' контролдоо.
GDPR: сактоо мөөнөтү, алып салуу укугу (anonymous) аудит зыян жок.
15) Сыноо жана симуляция
Эрежелерди жана экономиканы валидациялоо үчүн тарыхый окуялардын репликасы.
Жүктөө: башталганга чейин 30-120 менен bursts; soak 2-4 саат.
Property-based: инварианттар ("берилген сыйлыктардын суммасы ≤ бюджетке", "тай-брейк аныкталат").
A/B: көз айнектин ар кандай формулалары, тепкичтин тереңдиги, миссиялардын форматы.
16) Продакшн-даярдык чек-тизмеси
- Декларативдик эрежелер (версиялар, кол тамгалар), экономиканын симулятору.
- Аныктыгы: 'event _ id', 'score _ id', 'reward _ id'; Inbox/Outbox.
- Тай-брейк эрежелеринде белгиленген, детерминизм сорттоо.
- Leaderboard: Redis + Snapshot Top K; анти-бороон (jitter, coalescing).
- Anti-abuse: eligibility, боттор/ASN, velocity-чеги.
- Double-entry аркылуу Rewards → Wallet; акча алдында KYC-чек.
- Байкоо: SLI/SLO, Dashboard, Алерт; WORM аудит.
- DR/Failover: multi-AZ, backaps/restore, "freeze & finalize" скрипт.
- Локализация, лицензиялар, коомдук эрежелер жана consent.
- Runbook 'жана lag/мүчүлүштүктөр grant/Splash боттор, байланыш шаблондору.
Резюме
Турнирлердин жана миссиялардын ийгиликтүү модулу - бул окуя шинасы + детерминацияланган эрежелер + тез алдыңкы такталар + коопсуз төлөмдөр. Катуу тай-брейктерди, анти-бузууларды, экономикалык симуляторду жана СЛОнун байкалуучулугун кошуңуз, бардык транзакцияларды демпотенттик жана аудитордук түрдө сактаңыз - жана сиз оюнчулар, жөнгө салуучулар жана колдоо тобу менен талашсыз тартуу жана кирешени өстүрүүчү куралды аласыз.
