Generated by Answer me with HTML 0.5.5 · 2026-10-22 08:27 · ★ Star on GitHub
線上世界與異常治理
完整規格直接閱讀,不必開啟其他應用程式。
設計草案 · 第 2 版
線上權責與越界恢復
最小樣本也是線上
選用 Unity Netcode for GameObjects+Unity Transport,獨立 Linux 伺服器及兩個桌面客戶端,私網直連;不啟用付費 Relay、Lobby 或雲端託管。沿用現有 GameObject 製作方式,暫不改 DOTS。以官方 2.7 文件作 API 參考,P01 用 6000.3.26f1 解析相容套件並鎖定實際版本後才使用;相容與效能尚未實測。
越界判定
伺服器依世界/區域、合法邊界、碰撞版本及最後有效狀態偵測掉落或非法位置。客戶端可送異常線索,不能指定回程座標、生命或獎勵。誤報與合法跳躍須有失敗對照,不能把每次位置差異都當作弊。
恢復與同步
伺服器驗安全落點當下仍可站立、不在障礙或未載入區,再發帶事件編號及狀態序號的校正。清除不合法速度,依規則重設動作;不因恢復補滿血或刷新冷卻。自己及附近玩家都同步,重複或過時訊息不得再次生效。
斷線與選單
開選單只停本機輸入,不停世界。主動退出與斷線保留實體 10 秒後移除,期間仍可受傷;重連同身份接回原實體,逾期則載入保存狀態。既有連線尚活時拒絕同身份第二連線。死亡、生命、冷卻及獎勵均由伺服器回覆。
N01-N04 / 線上驗收
N01 正常行走及合法二段跳不誤回傳;N02 真越界由伺服器恢復且兩客戶端一致;N03 偽造座標、重複及過時回傳被拒絕;N04 丟包、延遲及重連不造成雙角色或雙份效果;首版跨區入口關閉,交接另列後續驗收。
異常紀錄、定位與修復
自動問題事件
每次越界或恢復產生唯一事件編號,記錄時間、遊戲/地圖/碰撞版本、區域與伺服器節點、異常座標、最後有效座標、速度、動作、伺服器判定與恢復結果。玩家識別使用內部代號,不收憑證或聊天內容。
保留可重現線索
保留有界的近期輸入與伺服器狀態,例如前五秒環形紀錄;附客戶端平台、幀時間、延遲及關聯碰撞物件 ID。截圖或短片僅作補充,客戶端回報與伺服器證據分開,不把回報直接當根因。
同地點彙整
依地圖版本、區域、座標格、動作及碰撞物件彙整重複事件,保留次數與代表案例。採批次、限流及保存期限,不把每幀位置寫入長期資料庫;記錄服務故障不阻止玩家安全恢復。
工程修復閉環
問題狀態依序為待重現、已定位、已修復、已回歸驗證。工程師由事件重現位置與動作,記根因、修改與版本,再重跑同案例及相鄰邊界。上線後觀察相同版本事件頻率,不能只因玩家被救回就關單。
N05-N08 / 診斷驗收
N05 故意製造缺碰撞可產生可定位事件;N06 正常跳躍無誤報;N07 高頻重複回報不拖垮遊戲;N08 修復後同路線通過、原失敗對照能證明測試有效。沒記到資料與沒發生問題必須分開。
單一世界與百萬在線目標
目標定義
沿用既有技術企畫:單一邏輯世界、共享身份、經濟及社群,長期目標一百萬名玩家同時在線。背後允許多台機器與多個區域程序,不代表單台實體機或百萬人同一戰場;容量目前未驗證。
擴充責任
依地理區域分配模擬責任,只向玩家同步相關附近實體。跨區交接明確切換唯一所有權;角色、物品及交易不能因重送或故障重複產生。高頻戰鬥與持久資料處理分開,但初期不先建立龐大叢集。
分級容量驗證
先驗一服兩客戶端的正確性,再在可負擔資源內測 10、100、1000 及更高連線,逐級量測並調整。百萬驗收需獨立計畫、硬體與費用授權;不得以閒置連線、單機外推或局部成功證明。
測什麼才算承載
定義活躍玩家行為、每區密度、移動與戰鬥頻率、事件與交易量,再量更新耗時、延遲分位數、頻寬、記憶體及錯誤率。另驗熱點聚集、節點故障與跨區移動;總在線與同屏戰鬥分開報告。
本次交付邊界
首版固定一區、一伺服器、兩客戶端;跨區入口保持關閉,不偽造交接通過。保留世界/區域與版本欄位,但不建叢集。P01 必須驗連線及存檔;P07 測權限、重送、延遲與斷線。單區方案不等於百萬容量或跨區系統已完成。
樣本連線與存檔執行規格
權限與時間
伺服器每秒 30 次模擬、每秒 15 次發狀態;客戶端只送按鍵意圖、瞄準方向及遞增序號,不能送最終座標、傷害或獎勵。伺服器驗動作狀態、速度、碰撞及冷卻。輸入每客戶端每秒最多 60 筆、單批最多 8 筆,重複或過時序號拒絕。客戶端可立即播起手但命中須等伺服器;先不做倒帶命中補償。
測試身份
私網伺服器以管理端預配兩組不寫入 repo 的隨機連線憑證對應兩角色;不可讓客戶端任意指定存檔 ID。憑證不放網址或日誌,檔案僅擁有者可讀。不建公開註冊,外網登入與傳輸防護不在此私網樣本驗收內。
資料庫與交易
伺服器使用 SQLite 單一寫入佇列,啟用外鍵、WAL 與 synchronous=FULL;資料庫不放網路磁碟。儲存角色、進度、裝備、物品、待領、出生位、結算與版本。採參數化 SQL。P01 選用可在 Unity Linux Server 執行的 SQLite provider,先通過交易及強制中止測試才鎖定依賴,不能憑官方資料庫保證推稱整個遊戲不遺失。
恢復與位置
永久成長每次交易即寫入;位置與生命每 2 秒有界保存,正常離開前保存,損毀前最後兩秒的暫態位置可能回退,不能回退已確認的獎勵。冷卻保存結束時間;死亡重試不刷新它。更新資料格式先備份,再交易式遷移,失敗停止啟動,不清空存檔。
P01 驗證門檻
實作前先用最小雙客戶端驗連線、位置裁定、重複輸入及身份拒絕;驗交易寫入中中止、重開及重送不多領。用 100 毫秒往返延遲、2% 丟包跑 5 分鐘,不能永久漂移、複製角色或多扣血。若手感不合格先調預測與校正,不直接更換整個引擎。
研究依據與限制
來源與採用/放棄理由見 docs/design/reference-research.md 的 D010。官方、競品與研究支持方向;本案數值為 AI 可逆草案,未經遊玩驗證。