Mô phỏng lag game và mất gói tin
Netcode được viết trên kết nối cục bộ với ping 1 ms và được người chơi thử trên wifi khách sạn. Thứ này thu hẹp khoảng cách đó ngay trên máy bạn, chỉ trên tiến trình game, trong khi phần còn lại của máy vẫn dùng được.
Bắt đầu từ đây
Nhắm vào ứng dụng khách của game, cho nó một kết nối tệ thực tế, và để nó tự dừng sau năm phút:
BeanNetworkTester.exe --latency 120 --jitter 60 --loss 3 --target mygame.exe --duration 300
Cũng có sẵn một dòng thời gian cho việc này: overloaded-game-server.json trong thư mục scenarios đưa kết nối vào tình trạng nghẽn rồi ra lại, để bạn xem ứng dụng khách xử lý cả hai chiều thay đổi. Xem kịch bản theo thời gian.
Vì sao game thấy mất gói còn trình duyệt thì không
Phần lớn lưu lượng game là UDP, và UDP không có gì để giấu sự mất gói. Một trang web qua TCP lặng lẽ gửi lại và chỉ mất nhiều thời gian hơn, nên trình duyệt có thể thấy ổn ở mức mất 5 % trong khi một trận đấu cùng mức 5 % đó giật, kéo nhân vật về và mất đồng bộ.
Nhờ vậy game là nơi trung thực để thử mất gói: bạn đặt gì thì ứng dụng khách trải nghiệm đúng thế.
Đặt gì, và nó phơi bày điều gì
| Thiết lập | Thử | Nó phơi bày gì |
|---|---|---|
| Độ trễ | 80 đến 250 ms | Dự đoán và nội suy. Nhân vật của bạn có bị kéo lùi sau một phát bắn không? |
| Jitter | 40 đến 100 ms | Bộ đệm. Một mức 200 ms đều đặn dễ che giấu hơn một ping cứ thay đổi. |
| Mất gói | 2 đến 10 % | Các bản cập nhật trạng thái bị thiếu, và việc ứng dụng khách phục hồi hay lệch dần. |
| Cú giật | 1 giây, hiếm khi | Cú khựng do chuyển giao giữa các trạm phát. Thường là thứ xấu xí nhất. |
| Bật tắt đường truyền | chu kỳ 10 s, mất mạng 30 % | Kết nối lại và vào lại. |
Hãy đo jitter bằng khoảng cách giữa phân vị 95 và trung vị chứ không phải bằng trung bình: jitter hầu như không làm trung bình nhúc nhích, vì thế một lần chạy có thể trên giấy giống hệt nhưng chơi thì khác.
So hai bản build cần có seed
Mất gói ngẫu nhiên khiến hai lần chạy khác nhau, nên “bản build mới tệ hơn” không phải bằng chứng. Cùng seed phát lại cùng sự mất gói và cùng jitter, biến cảm giác thành phép so sánh:
BeanNetworkTester.exe --latency 120 --jitter 60 --loss 5 --seed 42 --target mygame.exe --duration 180
Nó không làm được gì
Công cụ này định hình lưu lượng của máy của bạn. Nó không làm máy chủ chậm đi, không đổi tick rate của máy chủ, và không đặt những người chơi khác vào kết nối tệ, nên nó kiểm tra ứng dụng khách của bạn trước một đường truyền kém, không phải máy chủ của bạn dưới tải. Với phía máy chủ bạn cần kiểm thử tải, và với một sảnh đầy kết nối tệ bạn cần hơn một máy.