遊戲 Lag 白皮書 › 只有部分人遇到的問題
以 IP/裝置區分 session 的 bug Session keyed by IP or machine ID
原因 ID pt-session-key · 主要負責 遊戲開發團隊(伺服器開發) · 協同 遊戲開發團隊(用戶端開發)
在含圖解與實驗的完整版中開啟卡片 →
伺服器或中介伺服器以 IP 或裝置 ID 區分連線時,會把同一台電腦(同一個公用 IP)的兩個用戶端視為同一個人。
為什麼 session 表以 IP 或 IP + 裝置 ID 建立 → 於是 第二個用戶端的資訊覆蓋或混入第一個 session → 畫面上 一邊看不見 NPC,另一邊斷線或收到別人的資訊
- 症狀
- 看不見/幽靈物件, 斷線
- 因素
- 遺失
- 誰會遇到
- 同一台電腦只有其中一個用戶端, 同一個家, 特定地區/電信業者
- 何時
- 剛登入/維護剛結束
- 負責單位
- 主要負責 遊戲開發團隊(伺服器開發) · 協同 遊戲開發團隊(用戶端開發)
- 遊戲開發團隊要做的事
- 伺服器:伺服器與中介伺服器都以每條連線唯一的 session token 區分;同一個家(分享器 NAT 後方)的多人,以及電信業者把一個 IP 分給多個用戶的行動網路(CGNAT)玩家也會遇到同樣的問題,務必修正。用戶端:每個執行中的用戶端使用各自取得的 session token。
- 圖表上
- 只有部分偏高 · 同一公用 IP 的同時 session 數、session 覆蓋次數
- 查看位置
- 在伺服器與中介伺服器 log 記錄尋找 session 時使用的 key、session token、用戶端 IP 與 port,查看同一 IP 進來第二個連線的瞬間,既有 session 是否被改變。在同一台電腦上依序開啟兩個用戶端即可重現
- 符合的跡象
- 第二個用戶端連線的瞬間,第一個 session 的位址或角色資訊改變,且同一台分享器或行動網路(CGNAT)後方的其他玩家也出現同樣的斷線
- 不符合的跡象
- 同一 IP 的兩個 session 以不同 token 各自維持時,就不是這個原因。兩個處理程序使用同一個本機 port 時,是固定 UDP port 衝突
- 確認方式
- 需要遊戲伺服器/用戶端的 log 與指標
出處
- RFC 6269: Issues with IP Address Sharing IETF
多個用戶透過 NAT、CGN 共用一個 IPv4 位址時,光靠 IP 無法區分使用者
相關原因
同一層:只有部分人遇到的問題
同一症狀(看不見/幽靈物件)在其他層的原因
查看含圖解與實驗的完整版卡片