Modul Turneu și Misiune: Evenimente, Evaluări, Premii
1) Obiective de afaceri și tipuri de activitate
Obiective: Mențineți creșterea (D1/D7), ARPPU, creșteți profunzimea sesiunii, promovați noi jocuri și piețe.
Formate:- Turnee: cu suma de puncte/victorii/multiplicatori, sprinturi (30-60 minute), în timpul zilei, sezonier.
- Misiuni/misiuni: secvențe de sarcini (joacă rotiri N, câștigă X, încearcă furnizorul Y), cu progres și recompense de etapă.
- Clasamente: global, pe piețe/jocuri/pariuri, privat (prieteni/VIP).
- Jackpot-uri/evaluări de studio: „furnizorii de top ai săptămânii”, „vânează un multiplicator”.
KPI: participarea ≥ 12-25% din publicul activ, ponderea veniturilor din promo 10-20%, reclamații <0. 5% dintre participanți, fondul de premiere ≤ planul emis.
2) Arhitectura și fluxurile de date
Componente
1. Evenimente Gateway → recepția evenimentelor de joc (rotire, pariu, câștig, round_end) de la game-gateway/furnizori.
2. Reguli Motor → meciuri evenimente pe regulile de turnee/misiuni, puncte de premiere (idempotent).
3. Leaderboard Service → agregează puncte, stochează topuri/felii, suportă sortarea și cravatele.
4. Serviciul Progress (misiuni) → stadiul sarcinilor/etapelor, emiterea de premii intermediare.
5. Recompense Serviciu → decontare și plată în siguranță (prin portofel: cash/bonus/fs/points).
6. Admin/Studio UI → creație, planificare, previzualizare economică, simulări.
7. Realtime/WS → publicarea de actualizări ale consiliului de conducere, progrese, notificări.
8. Anti-abuz → limite, semnale de risc, integrare cu anti-fraudă/bot manager.
9. Stocare/Cache → KV/Redis pentru topuri fierbinți, OLTP pentru fapte, DWH pentru analiză.
Stream (e2e)
'game _ event gateway puncte
3) Modelul evenimentului (câmpuri minime)
json
{
„ :”  „” ts': „ ”: „ ”: „” piață „:” DE „,” brand „:” X „:” joc „: {” id': „g _ 77”, „furnizor”: „PragmaticPlay”, „tip”: „slot”}, „pariu”: {„sumă _ minor”: 100, „valută”: „EUR”}, „win”: {„sound _ minor”: 250, „multiplicator”: 2. 5}, "round": {"id':" r _ abc', "status": "end'}," device ": {" platform ":" mobile "," asn': "mno"}, "trace_id":" t_... "
}Transport - Kafka/HTTP, procesare idempotentă (dedupe by 'event _ id'), semnătură gateway furnizor/joc (HMAC).
4) Regulile turneului și proiectantul de sarcini
Schema declarativă (exemplu YAML):yaml id: t_october_sprint fereastră: {start: 2025-10-25T18:00Z, end: 2025-10-25T19:00Z, tz: Europa/Kiev}
domeniul de aplicare:
pieţe: [DE, SE]
furnizori: [PragmaticPlay, Hacksaw]
notare:
formula: "puncte = min (win. suma/pariul. suma, 50) 100” # înmulțit cu min_bet_minor: 50 eligible_games: [„g _"]
clasament:
tip: "best_n_rounds" # rezumă cele mai bune runde n: 20 tiebreaker: ["highest _ single _ multiplicator", "earliest _ finish _ ts']
recompense:
pool: {valută: EUR, total_minor: 1000000}
distribuție: „scara” # scara, top 100 anti_abuse:
min_round_duration_ms: 800 max_rps_per_user: 0. 5 exclude_asn_categories: [„hosting”, „proxy”]yaml mission_id: m_halloween pași:
- id: s1 goal: {type: „spin_count,” game_type: „slot”, număr: 50}
recompensă: {type: "freespins", valoare: 10, joc: "g_66"}
- id: s2 goal: {type: „win_multiplier,” min: 10}
recompensă: {tip: „bonus”, amount_minor: 500}
completion_reward: {tip: „puncte”, sumă: 1000}5) Evaluări și algoritmi de calcul
Principalele modele
Total puncte: liniar/logaritmic/cu capac pe rotund.
Cele mai bune runde N: scade pay-to-grind, păstrează impulsul sprintului.
Multiplicator maxim (xWin): normalizează valutele și ratele.
MMR/sistem de rating: ELO-like pentru mesele de concurs PvP/friendly.
Cravate-breaks
1. 'highest _ single _ multiplicator' → 2) 'fewest _ rounds' → 3)' earliest _ finish _ ts' → 4) 'user _ id' lexicographic (fixat în reguli).
Performanță
Stocați partea de sus K (de exemplu, 10k) în setul Redis Sorted 'Membru scor cheie ZADD'.
Pentru „cele mai bune runde N”: păstrați min-heap de cele mai recente cele mai bune N pe utilizator și suma, actualiza pe zbor.
Instantaneu periodic (la fiecare 30-60 s) în OLTP/obiect.
6) Recompense și plăți
Tipuri de premii: numerar/bonus/rotiri gratuite/puncte/articole/bilete.
Reguli:- Problema numai după finalizare (fereastra de apel 5-10 minute).
- Toate plățile sunt prin Serviciul Recompense → Portofel (registru): intrare dublă, idempotență prin "recompensă _ id'.
- Pentru etapele intermediare ale misiunilor - emiterea de premii "soft' (FS/puncte), numerar - la sfârșitul lanțului.
- CCM/joc responsabil: atunci când blocați un cont, țineți/înghețați premiul până când este verificat.
- Scară fixă: trepte predefinite (locul 1 30%, 20% 2,...).
- Proporțional: o parte din piscină în puncte, dar cu un capac la fața locului.
- Pe bază de bilet: Misiunile dau „bilete”, desen pe bilete (RNG transparent).
7) Anti-abuz, onestitate și conformitate
Filtre de eligibilitate: pariul min/durata rundei, excluderea „0-bet”, re-fisuri repetate, „micro pariuri” în conductă.
Semnale bot: fără cap-UA, frecvență anormală, RPS anormal de stabil, ASN proxy → provocări ascunse/ochelari de congelare.
Dedup/idempotency: events by 'event _ id', accruals by' score _ id'.
Traseu de audit: fotografii din clasament, semințe RNG (pentru tragerea la sorți a biletelor), versiunea regulamentului, hash de calcul.
Legal: reguli/restricții pe piețe, vârstă, autoexcludere.
8) Economia turneului
Garnituri bugetare: limita superioară a bazinului + „supapa de siguranță” dinamică (reducerea bonusurilor intermediare la supraîncălzire).
Elasticitate: Transferarea recompenselor în puncte/FS în loc de numerar pentru a deține marja.
Ratele de recuperare: fondul de premiere/încasările din segmentul jocurilor de turneu; ţintă 8-15%.
Simulator în panoul de administrare: desfășurarea evenimentelor istorice → prognoza plăților/participării.
9) contracte API (simplificate)
Obțineți turnee/misiuni active
http
GET/v1/concursuri? piață = DE & brand = X
→ 200 [{„id':” t _ october _ sprint „,” start „:”..., „end':”..., „type”: „xwin”, „status”: „live”}]Eveniment de joc (ingera)
http
POST/v1/evenimente
{„event _ id':” e _ 9f2 „,”...: „...”}
→ 202 {„acceptat”: adevărat}Leadboard (poziția de top K și utilizator)
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}}Progresul și recompensa misiunii
http
GET/ v1/missions/m_halloween/progress? user = u _ 123
→ 200 {„pași”: [{„id':” s1 „,” done „: true}, {” id': „s2”, „done”: false}], „reward _ ready”: true}
POST/v1/recompense/revendicare
{"context": "misiune", "id':" m _ halloween "," pas ":" s1 "}
→ 201 {"status": "acordat", "recompensă _ id':" rw _ 77 "}10) Stocare și scalare
Hot way: Redis (Seturi sortate/Hash) pentru topuri și progres; TTL pentru cheile „zgomotoase”, sharding by 'contest _ id'.
Adevărat: OLTP (Postgres/MySQL) - puncte/progres/fapte de plată (instantanee WORM).
Cozi: Kafka - fluxul de evenimente; Grupuri de consumatori pe regiuni/mărci.
Cache: scurt TTL 1-5 s; revalidat pentru topurile publice (prin CDN).
WebSocket: un cluster separat/piscină pentru mesaje în timp real, lot de corespondență și rate-limită.
11) Observabilitatea și controlul calității
SLI/SLO:- 'leaderboard _ update _ latency _ p95 ≤ 250мс'
- 'events _ inger _ success ≥ 99. 9%`
- 'recompense _ grant _ succes ≥ 99. 9%`
- 'ws _ push _ rtt _ p95 ≤ 120мс'
- plângeri de nedreptate <0. 5% dintre participanți.
- rata evenimentelor/participanților, jucători unici, distribuția pe pariuri/jocuri, multiplicatorul mediu; 'grant _ errors',' dedupe _ hits'.
- Trasee: ingera reguli → → scor → LB actualizare → recompensă; 'contest _ id',' rule _ id' tags.
- Busteni: JSON cu 'trace _ id', ban PII; WORM pentru audit.
12) Incidente și runbook "și (abreviat)
A. Leader bord lag (lag> 2s)
Acțiuni: creșterea consumatorilor Kafka, reducerea „cheii fierbinți” a partidului (repartiție), activarea actualizării loturilor.
Temporar: îngheață animații în timp real, arată „~ 1-2s întârziere”.
B. Erori de premiere
Acțiuni: opriți noul „grant”, verificați cu instantaneul, reluați „grant” în mod idempotic; actualizarea stării în hol.
C. Spike abuz (proxy ASN)
Acțiuni: consolidarea eligibilității, permiterea provocării invizibile, ignorarea temporară a punctelor către sesiuni dubioase, post-verificare.
13) UX și localizare
Timp real: indicator „live”, delte netede de puncte, poziția și distanța până la următorul loc.
Reguli transparente: acces la formula/tiebreakers/restricții.
Notificări: „5 minute rămase”, „sunteți în top 50”, „recompensa este disponibilă”.
Localizare/texte juridice: pe piață, fusuri orare (Europa/Kiev și locațiile participanților).
14) Securitate și confidențialitate
Player pseudonime pe topuri publice; Ascunde PII în mod implicit.
Semnăturile de webhooks/evenimente, mTLS; protecție împotriva „otravă cache” pe margine.
Rate-limit API, protecție cache basting, control 'idempotency _ key'.
GDPR: păstrarea evenimentului, dreptul de a șterge (anonimiza) fără a deteriora auditul.
15) Testare și simulări
Replay de evenimente istorice pentru validarea regulilor și economie.
Încărcare: explozii 30-120 s înainte de începere; se înmoaie 2-4 ore.
Pe bază de proprietate: invarianți („suma de premii emise ≤ buget”, „tie-break determinat”).
A/B: diferite formule de notare, adâncimea scării, formatul misiunii.
16) Lista de verificare a pregătirii pentru producție
- Reguli declarative (versiuni, semnături), simulator de economie.
- Idempotency: 'event _ id',' score _ id', 'reward _ id'; Inbox/Outbox.
- Cravatele sunt fixate în reguli, sortând determinismul.
- Clasamente: top K în Redis + instantanee; anti-furtună (jitter, coalescing).
- Anti-abuz: eligibilitate, bots/ASN, limite de viteză.
- Recompense → portofel prin dublă intrare; Cec KYC înainte de numerar.
- Observabilitate: SLI/SLO, tablouri de bord, alerte; Audit WORM.
- DR/Failover: multi-AZ, backup-uri/restaurare, „congela & finaliza” script.
- Localizare, licențe, reguli publice și consimțământ.
- Runbook 'și pe lag/erori acordă/izbucni roboți, modele de comunicare.
Rezumat reluare
Modulul de succes al turneelor și misiunilor este event bus + reguli deterministe + clasamente rapide + plăți sigure. Adăugați tiebreakuri stricte, anti-abuz, simulator economic și observabilitate SLO, păstrați toate operațiunile idempotente și auditabile - și veți obține un instrument care crește angajamentul și veniturile fără a discuta cu jucătorii, autoritățile de reglementare și echipa de sprijin.
