Router xóa khỏi bảng NAT các kết nối nhàn rỗi không có gói tin qua lại trong một thời gian. Đây là nguyên nhân phổ biến khiến người chơi đứng yên một lúc, vừa di chuyển là mất kết nối.
Vì sao Router ghi kết nối “thiết bị bên trong ↔ server bên ngoài” vào bảng NAT (bảng chuyển đổi địa chỉ) → Dẫn đến Không có gói tin trong một thời gian thì bị xóa khỏi bảng (với UDP thường là 30–120 giây) → Trên màn hình Gói tin từ server không vào được trong nhà nên mất kết nối
Phụ trách chính Phát triển client (Đội phát triển game) · Phối hợp Phát triển server (Đội phát triển game)
Việc cần làm (Đội phát triển game)
Client: gửi heartbeat với khoảng cách không quá một nửa idle timeout ngắn nhất (ánh xạ UDP chỉ chắc chắn được làm mới bởi gói đi ra từ trong nhà, nên client phải là bên gửi), mất kết nối thì tự kết nối lại. Server: phản hồi heartbeat, không nhận được trong một khoảng thời gian thì chủ động dọn kết nối trước; khi ánh xạ bị xóa khiến địa chỉ và cổng bên ngoài đổi, dùng session token (mã xác nhận nhận được lúc kết nối) để xác nhận vẫn là người chơi đó và nối tiếp.
Trên đồ thị
Rớt kết nối hàng loạt · Số lần mất kết nối (heartbeat timeout), thời gian nhàn rỗi trước khi mất kết nối
Chỗ cần xem
Thu thập lý do ngắt kết nối phía server và thời gian đã trôi qua kể từ gói tin cuối cùng trên kết nối đó trước khi ngắt (thời gian nhàn rỗi), rồi xem phân bố. Để thử nghiệm, tăng dần khoảng cách gửi gói UDP lên 30 giây, 60 giây, 120 giây và đo xem ở khoảng nào thì không còn phản hồi
Đúng nếu
chỉ kết nối đang nhàn rỗi mới bị ngắt, và thời gian nhàn rỗi dồn ngay sau một giá trị nhất định trong khoảng 30–120 giây. Rút khoảng cách heartbeat ngắn hơn giá trị đó thì hết
Loại trừ nếu
đang di chuyển cũng mất kết nối → phía đường truyền hoặc tuyến đường. Chỉ ở một nhà mạng di động nhất định mà dồn vào giá trị ngắn → “IP dùng chung của nhà mạng (CGNAT)”