跳轉到

Twirp Error Code Single Channel Architecture

概念概覽

架構核心

核心知識

架構核心

MatchRPG Server 的錯誤碼系統是**單通道設計**:只有 Twirp meta.error_code(string 格式)是實際在 runtime 傳遞的錯誤碼。Proto enum(如 commonv1.ErrorCode不做 wire serialization,只是 string emit 的來源。

Dead Code 識別

commonv1.ErrorCode enum 是 dead code(0 個 runtime consumer)。ErrorHandlingReference.md 描述的是這個已死掉的 enum,不是實際運行的錯誤碼系統。這是一個長期存在的架構誤解。

安全性含義

因為是 string emit 而非 wire integer,重新編號(如 Dungeon 從 1-20 改到 3000-3099)不影響協議相容性。但已生成的 pb.go 和 Unity CS 檔案仍需要重新 regenerate。

經驗教訓

  • 回答架構問題前必須先讀設計文檔(SoT),不能憑假設

  • proto enum 存在 ≠ proto enum 有 wire 效果,需區分 string emit vs wire serialization

  • 文檔描述的系統可能已是 dead code,需要交叉驗證 runtime consumer 數量

常見陷阱

  • ErrorHandlingReference.md 描述的是死掉的 commonv1.ErrorCode,不是實際錯誤碼系統,容易誤導

  • 刪除 dead enum 前需確認 Unity 客戶端是否有 literal 比對(外部依賴不易發現)

最佳實踐

  • 架構澄清必須以 doc 33 §1.1 range table 為 SoT

  • 新模組分配錯誤碼區段前,先 grep 確認無衝突

相關概念

相關視角

以下頁面與本概念共享主題,但從不同角度切入。保留獨立視角同時提供交叉參考:

來源 Sessions

日期 Session 貢獻摘要

| 2026-04-07 | 13536126-c4f1-4c71-ae73-a6544e9167bf | 確認 Twirp meta.error_code 是唯一實際的錯誤碼通道,proto enum 不做 wire serialization |


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

最後更新: 2026-04-07