跳轉到

MatchRPG Unlimited Constants DB Cap Strategy

概念概覽

企劃慣例:99999999999 = 遊戲設計上無上限

核心知識

企劃慣例:99999999999 = 遊戲設計上無上限

常數表(FixedValueConfig.xlsx)中填入 99999999999 是企劃表達「遊戲設計上無上限」的慣例語義,不是真實數字。伺服器不能照單全收,否則可能造成: - DB 整數欄位溢出 - 不合理的資源累積 - 前端顯示異常

Cap 策略(正確做法)

// 讀取常數表值
constantsValue := getConfig("staminaMax")  // 可能是 99999999999

// cap 在設計文件規定的 DB 保護上限
const DB_PROTECT_CAP = 2000  // 設計文件規定
actualMax := min(constantsValue, DB_PROTECT_CAP)

注意:這裡的 2000 是設計文件規定的 DB 保護上限,hardcode 在伺服器端是合理的(有文件依據),不需要每次從常數表讀取。

為何不用 min(fallback, constants_value)

因為常數表的大數值是**設計語義**(表示無上限),不是真實數字。正確做法是: 1. 理解語義(99999999999 = 無上限) 2. 在伺服器端根據設計文件 cap 到安全上限 3. 不採用 min(fallback, constants_value),因為這把設計語義當成真實數字來比較

經驗教訓

  • 常數表的大數值是設計語義,不是真實數字,必須在伺服器端根據設計文件 cap

  • DB 保護上限 hardcode 在伺服器端是合理的,需有設計文件依據

  • 不知道「99999999999 = 設計無上限」這個慣例,很容易直接存入 DB 造成整數溢出

常見陷阱

  • 直接將常數表的 99999999999 存入 DB,造成整數溢出

  • 使用 min(fallback, constants_value) 誤把設計語義當真實數字比較

  • 未建立「無上限常數處理規範」,導致不同開發者處理方式不一致

最佳實踐

  • 建立規範:常數表填 99999999999 = 設計無上限,伺服器端必須 cap 在設計文件規定的安全上限

  • DB 保護上限應有明確的設計文件引用,不能只是隨意 hardcode

  • 讀取常數表後,先判斷是否為「無上限語義值」,再決定 cap 策略

相關概念

來源 Sessions

日期 Session 貢獻摘要

| 2026-04-02 | 45b7e5f8-50d6-4529-afa9-e872dd553db2 | 確立「常數表大數 = 設計無上限,伺服器端需 cap」的規範,防止直接存入 DB 造成整數溢出 |


本概念頁面由 Semi-Brain Wiki 系統自動維護

最後更新: 2026-04-02