Với cách server chỉ gửi “những gì khác so với lần trước”, nếu mất thông tin đầy đủ (bản gốc) gửi một lần lúc đầu thì các phần thay đổi sau đó không thể áp dụng được.
Vì sao Gói thông tin đầy đủ (bản gốc) của đối tượng bị mất hoặc bị bỏ trước khi xử lý → Dẫn đến Client không có đối tượng để áp dụng các phần thay đổi về sau nên bỏ qua → Trên màn hình Đối tượng đó không hiển thị, hoặc một lúc lâu sau mới đột ngột xuất hiện
Phụ trách chính Phát triển server (Đội phát triển game) · Phối hợp Phát triển client (Đội phát triển game)
Việc cần làm (Đội phát triển game)
Server: bản gốc phải được truyền lại cho đến khi nhận được xác nhận (ACK), chỉ tạo phần thay đổi dựa trên bản gốc mà client đã xác nhận đã nhận. Client: chỉ gửi xác nhận (ACK) sau khi đã thực sự áp dụng bản gốc, khi nhận phần thay đổi của đối tượng lạ thì yêu cầu server gửi lại.
Trên đồ thị
Thỉnh thoảng vọt lên bất chợt · Số lần nhận phần thay đổi của đối tượng lạ
Chỗ cần xem
Đối chiếu số lần và ID đối tượng mà client bỏ phần thay đổi vì không có bản gốc với thời điểm server gửi bản gốc của đối tượng đó và thời điểm nhận ACK. Trong môi trường dev, thêm mất gói (loss của tc netem, tỷ lệ mất gói trong mô phỏng mạng của Unreal) để tái hiện
Đúng nếu
với đối tượng không hiển thị, server đã gửi bản gốc nhưng chưa nhận ACK mà vẫn liên tục chỉ gửi phần thay đổi, và client bỏ các phần thay đổi đó
Loại trừ nếu
bản gốc đã được ACK và áp dụng ở client mà vẫn không thấy → xem mất thông báo rời đi hoặc nhầm lẫn do dùng lại ID đối tượng
Cách kiểm tra
Cần log và chỉ số của server, client game
Nguồn
Snapshot CompressionGaffer On Games Phần thay đổi chỉ được tạo dựa trên bản gốc (baseline) mà bên kia đã xác nhận (ack) đã nhận, còn trạng thái ban đầu được gửi riêng
tc-netem(8) — Linux manual pageiproute2 Công cụ thử nghiệm giả lập mạng thực bằng cách thêm độ trễ, jitter (delay TIME JITTER) và mất gói (loss random PERCENT) vào gói tin đi ra
Using Network Emulation in Unreal EngineEpic Games Thử nghiệm bằng cách đặt độ trễ tối thiểu, tối đa và tỷ lệ mất gói cho server và client; trên console thì cấu hình như NetEmulation.PktLag