比赛和任务模块:赛事,排名,荣誉
1)业务目标和活动类型
目标:增加保留率(D1/D7),ARPPU,增加会议深度,促进新游戏和市场。
格式:- 比赛:总分/获胜/乘数,冲刺(30-60分钟),白天,季节性。
- 任务/任务:任务序列(扮演N旋转,赢得X,尝试提供商Y),每个阶段都有进步和奖励。
- 领导板:全球,按市场/游戏/博彩,私人(朋友/VIP)。
- 工作室头奖/收视率:"本周顶级提供商","乘数狩猎"。
KPI:参与≥ 12-25%的活跃受众,10-20%的促销收入份额,<0的投诉。5%的参与者,颁发的奖金≤计划。
2)体系结构和数据流
元件
1.Events Gateway →从游戏门户/提供商接收游戏事件(旋转,bet,win,round_end)。
2.Rules Engine →锦标赛/任务规则中的赛事对决,并获得积分(偶数)。
3.Leaderboard Service →汇总眼镜,存储顶部/切片,支持排序和抢七。
4.进步服务(任务)→任务/阶段状态,颁发中间奖励。
5.奖励服务→计算和安全支付(通过钱包:现金/奖金/fs/积分)。
6.Admin/Studio UI →创建、规划、经济预览、模拟。
7.Realtime/WS →发布领导层更新,进度,通知。
8.Anti-Abuse →限制,风险信号,与防冻剂/机器人管理器的集成。
9.Storage/Cache → KV/Redis用于热顶,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处理(通过"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:
类型:"best_n_rounds"#总结最佳N轮n: 20决胜局:["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回合:降低"按需付费",保持"冲刺"动态。
最大乘数(xWin):配给货币和利率。
MMR/评级系统:用于PvP/友好竞争表的 ELO样。
决胜局
1.'highest_single_multiplier' → 2) 'fewest_rounds' → 3) 'earliest_finish_ts' → 4) 'user_id'词典化(规则固定)。
生产力
在Redis Sorted Set "ZADD关键得分会员"中存储前K(例如10k)。
对于"最佳N回合":在用户和总和上存储最新最佳N的min-heap,"即时"更新。
在OLTP/对象中,周期性快照(每30-60秒)。
6)奖励和付款
奖励类型:现金/奖金/免费旋转/积分/物品/门票。
规则:- 只有在最后确定之后才予以引渡(5-10分钟)。
- 所有付款都是通过Rewards Service → Wallet(ledger)支付的:double-entry,通过"reward_id"的幂等。
- 对于任务的中间阶段-发出"软"荣誉(FS/points),现金-在链条完成后。
- KUS/负责任游戏:在锁定帐户时-在检查前保留/冻结奖品。
- Fixed ladder:预设步骤(第一名30%,第二名20%.)。
- 可选性:分数从池中得分,但从帽子到位。
- 基于票务:任务提供"门票",抽奖(透明RNG)。
7)反借口,诚实和合规性
Eligibility过滤器:min投注/回合持续时间,不包括"0-bet",重复re裂缝,流水线中的"微投注"。
机器人信号:无头UA,异常周期性,异常稳定的RPS,代理的ASN →隐藏的挑战/眼镜冻结。
Dedup/Idempotity:"event_id"上的事件,"score_id"上的事件。
审计小径:领导板快照,种子RNG(用于门票抽签),规则版本,计算哈希。
法律:市场规则/限制,年龄,自我排斥。
8)锦标赛经济学
Budget guardrails:池的上限+动态"安全阀门"(过热时中间奖金的减少)。
弹性:将奖励移至积分/FS而不是现金以保持利润。
回报率:锦标赛游戏部分的奖金/收入;target 8-15%。
admink中的模拟器:历史事件的运行→付款/参与预测。
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}领导板(前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)存储和扩展
热路:Redis(Sorted Sets/Hash)上衣和进步;TTL到"嘈杂"的钥匙,在"contest_id"上摇摇欲坠。
真相:OLTP(Postgres/MySQL)-积分/进度/付款(WORM快照)的事实。
队列:kafka-事件流;按地区/品牌划分的消费者团体。
缓存:短的TTL 1-5 s;stale-wile-revalidate公共顶部(通过CDN)。
WebSocket: realtime下的单独群集/池,batch邮件和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%的参与者。
度量标准:- 比例事件/参与者,独特的玩家,投注/游戏分配,平均乘数;"grant_errors","dedupe_hits"。
- Traces: ingest → rules →得分→ LB Update → reward;"contest_id","rule_id"标签。
- Logi:JSON带有"trace_id",PII禁令;WORM用于审核。
12)事件和运行手册"和(缩写)
A.领导层积压(lag> 2c)
行动:增加Kafka消费者,减少批量"热键"(repartition),启用击球更新。
暂时:冻结实时动画,显示"~ 1-2秒延迟"。
B.颁发奖项的错误
行动:停止新的"grant",用snapshot钻探,以偶然的方式重播"grant";地位升级到大厅。
C.激增(proxy ASN)
行动:加强可行性,包括隐形挑战,暂时不考虑可疑会议的积分,后验证。
13) UX和本地化
实时:"实时"指标,流畅的眼镜三角洲,位置和到下一个位置的距离。
透明规则:访问公式/抢断/限制。
Notization:"还剩5分钟","你进入前50名","奖励可用"。
本地化/法律文本:按市场,时区(Europe/Kyiv和参与者所在地)。
14)安全和隐私
公共上衣玩家的别名;默认隐藏的PII。
Webhook/事件签名,mTLS;edge上的缓存点保护。
Rate-limit API,缓存破坏保护,"idempotency_key"控制。
GDPR:事件保留时间,删除权(匿名)而不破坏审计。
15)测试和模拟
历史事件的反射,以验证规则和经济。
负载:起始前的bursts 30-120;soak 2-4小时。
基于物业:不变量("颁发的奖励总和≤预算","决胜局确定性")。
A/B:不同的眼镜公式,楼梯深度,任务格式。
16)生产准备工作清单
- 声明规则(版本,签名),经济学模拟器。
- 相同性:"event_id","score_id","reward_id";Inbox/Outbox.
- 决胜局固定在规则中,排序决定论。
- 领导板:Redis+snapshots的前K;反风暴(jitter,coalescing)。
- Anti-abuse: eligibility、bots/ASN、velocity限制。
- Rewards → Wallet通过双入口;现金前的KYC支票。
- 观察力:SLI/SLO,dashbords,Alertes;WORM审核。
- DR/Failover: multi-AZ、backaps/restore、"freeze&finalize"脚本。
- 本地化,许可,公共规则和同意。
- Runbook和lag/grant错误/机器人激增,通信模式。
二.总结
成功的锦标赛和任务模块是事件总线+确定性规则+快速领导板+安全支付。添加严格的决胜局,反抽签,经济模拟器和SLO可观察性,保持所有操作的平均水平和可审核性-并且您将获得一种工具,无需与玩家,监管机构和支持团队争执即可提高参与度和收入。
