球員現在打一場正常場就會即時累積天梯分(SLP)並升段;賽事、球證、飯圈、排行榜、通行證全部接上真實後端與 realtime。
| Phase | 內容 | 實作 |
|---|---|---|
| 1 賽季骨架 | seasons + athlete_season_stats + 段位 UI | ✅ 開了「2026 賽季 1」(3 個月);個人頁「賽季段位」卡(盾牌+SLP+進度) |
| 2 規模權重 | 野場/區域/全國 加權 | ✅ 野場 ×1.0;戰隊賽事記分 → 兩隊成員加 SLP(區域 ×2.5 / 全國 ×5) |
| 3 防作弊 v1 | 結構性 gate | ✅ 只算正常場、裁判≠球員、每日規模賺分上限(野場60/區域200/日)、重複對手衰減(今天同一對手第3次起×0.7ⁿ) |
| 4 信任分 | 0–1 integrityMult | ✅ athlete_trust:對手越多樣分越高、老是對同幾人越低,直接乘進 SLP |
| 5 球證 + 飯圈 | 數位球證 + 10km 優惠 | ✅ 球證卡(段位卡面+QR)、綁定 customer_loyalty_id、飯圈店家清單(依段位解鎖) |
| 6 排行榜 + 全國賽 | SLP 榜 + 規模 | ✅ 本館/全國排行榜(即時)、全國規模、seasons.prize_pool 獎金池欄位 |
| 7 通行證 + 掛牌 | 賽季通行證 + 申請制 | ✅ 10 級獎勵軌(免費+進階)、XP 累積、領取/升級;賽事可申請掛牌(全國 SLP 需 app 方核准才生效,防自抬規模) |
單場SLP = base(勝8/負3) × 規模(1/2.5/5) × 信任(0.3–1) × 重複對手衰減(0.7ⁿ)
再套「每日規模賺分上限」。練習場 = 0。
通行證 XP 與 SLP 分離(打一場 +15/+30 XP),符合雙幣制:天梯純競技、通行證走參與獎勵。
ArenaMate = 業餘運動員的「天梯人生」:在真實場館打球 → 累積段位與生涯 → 段位變成在地特權(飯圈優惠)與賽事門票,最終由 App 方統籌全國賽事與獎勵經濟。
核心飛輪:球員密度 → 場館價值 → 賽事規模 → 獎勵與段位 → 吸引更多球員,並與 ChefsMate 餐飲會員卡互相導流。
| 階段 | 觸發 | 開放 | 變現 | 防作弊 |
|---|---|---|---|---|
| P0 冷啟動 | 第一批場館 | 全免費:揪團/配對/計分/段位 | 無(衝密度) | 結構 gate |
| P1 區域賽 | 單城夠多場館 | 場館辦區域賽(scope 已有) | 場館訂閱 SaaS | + 跨場館校準 |
| P2 全國賽 | 全國上線 | App 方辦全國賽 + 排行榜 | 門票/報名費抽成+贊助 | + 實體驗證 |
| P3 大型賽 | 品牌成形 | 申請制掛牌大賽 | 申請費+抽成+通行證+飯圈廣告 | 最高:現場核身 |
把「技術分 / 天梯分 / 裝飾幣」徹底分開,否則防作弊與賽季設計都會崩。
| 指標 | 用途 | 歸零 | 好不好洗 |
|---|---|---|---|
| 技術分 ELO(已有 rating_points) | 配對 / 平衡分隊 | 否 | 零和,難洗 |
| 天梯分 SLP(新增) | 解鎖段位+真獎品 | 每季軟重置 | 靠公式+防制把關 |
| 裝飾幣 / 經驗值 | 賣裝飾、爽度 | 看設計 | 不影響公平 |
段位:青銅 → 白銀 → 黃金 → 白金 → 鑽石 → 大師 → 傳說(每段 3 小階)。
新SLP = 段底 + (舊 − 段底) × 0.5,保留梯度又給重新衝刺動力。單場SLP = base(勝8/負3) × 規模權重 × 對手品質 × 信任分 × 重複對手衰減 規模權重: 野場 1.0 / 區域賽 2.5 / 全國賽 5.0
| 規模桶 | 每日/週 SLP 上限 | 含意 |
|---|---|---|
| 野場 | 低(每日 ~60) | 鼓勵練習但擋無限刷 |
| 區域賽 | 中(每週 ~400) | 認真打天花板更高 |
| 全國賽 | 無上限 | 最高含金量、最難作弊 |
只有「正常場(滿員有效)」計 SLP;練習場一律 0。
| 手法 | 防制 |
|---|---|
| 互打 / win-trading | 重複對手衰減;偵測 A↔B 高頻;單對手 SLP 上限 |
| 人頭場 / 虛報 | GPS geofence(已有)+ 入場 QR(已有)+ 各球員不同裝置/位置 + 時長合理性 |
| 小號虐菜 | 對手品質趨近 0;新帳號定位賽 + 臨時信任分;裝置關聯偵測 |
| 自己當裁判亂報 | 裁判≠球員(已有唯一裁判);競技場強制中立裁判或雙方確認 |
| 狂刷數量 | 練習場 0 分;規模桶週上限;每場最短時長/分數門檻 |
| 整館互餵 | 場館級異常偵測;跨場館校準;場館信任分/掛牌審核 |
| GPS spoof | 位置跳變/IP 交叉檢查;大獎綁實體現場核身,遠端偽造不了 |
integrityMult —— 連續懲罰可疑,不誤殺正常玩家。直接重用 ChefsMate 現成鐵軌:Wallet 卡、會員/loyalty、餐廳端、推播。不重建。
customer_loyalty_id(UUID),嚴禁電話比對(遵既有鐵則)。打球 → 升段 → 球證更香 → 飯圈吃飯享優惠 → 帶店家客流 ↑ │ └── 店家贊助場館賽事 / ChefsMate 導客回場館 ←┘
seasons(id, name, starts_at, ends_at, tier_cutoffs, soft_reset_factor)
athlete_season_stats(athlete_id, season_id, slp, tier, peak_tier,
matches_by_scale, placement_done)
athlete_trust(athlete_id, trust_score, signals, last_review_at)
gym_matches + scale, competitive, verified, confirmed_by, duration_secs
gym_tournaments+ sanction_level, ticketed, entry_fee, ticket_price, rake_pct
gym_athletes + chefsmate_loyalty_id -- 綁球證↔會員卡
partner_offers(restaurant_id, gym_radius_km, min_tier, discount, terms)
pass_redemptions(loyalty_id, restaurant_id, season, tier_at_use, at)
SLP/信任結算放純函數 Gate(computeMatchSLP、computeTrust)+ Orchestrator;賽季軟重置走排程 edge function。
computeMatchSLP(先野場)+ 個人頁段位 UI。gym_matches.scale(野場/區域/全國)。arena:)