Nếu mỗi khung hình chỉ xử lý một lượng gói tin cố định, số gói dồn tới sẽ liên tục bị đẩy sang khung hình sau.
Vì sao Ở nơi đông người, mỗi giây có hàng nghìn bản cập nhật đổ về → Dẫn đến Main thread chạm giới hạn xử lý mỗi khung hình nên đọc không hết → Trên màn hình Chuyển động của người khác hiện ra ngày càng trễ và dồn cục
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: nhận và giải mã trên thread riêng, gộp các bản cập nhật vị trí cũ của cùng một đối tượng và chỉ áp dụng bản mới nhất. Server: ở nơi đông người, gửi cập nhật của nhân vật ở xa thưa hơn để giảm lượng dữ liệu gửi.
Con số tham khảo
Gói tin chưa xử lý mà dồn lại thì chỉ vài giây là đã trễ tới 1 giây.
Trên đồ thị
Tăng theo số người và tải · Số gói nhận chưa xử lý, độ trễ từ lúc nhận đến lúc áp dụng
Chỗ cần xem
Ghi log số gói client để lại chưa xử lý ở mỗi khung hình và độ trễ từ lúc gói tới đến lúc áp dụng vào game, rồi đối chiếu với số người xung quanh
Đúng nếu
ở nơi đông người, số gói tồn và độ trễ áp dụng tăng liên tục, trong khi ping và khoảng cách gửi của server cùng lúc đó vẫn bình thường
Loại trừ nếu
không có độ trễ áp dụng nhưng bản thân gói tin tới muộn → đoạn mạng. Frame time tăng mạnh → “Tải render khi đông người”
Cách kiểm tra
Cần log và chỉ số của server, client game
Nguồn
Actor Priority in Unreal EngineEpic Games Khi thiếu băng thông, thay vì replicate mọi actor mỗi lần, engine xếp ưu tiên theo khoảng cách tới người xem và thời gian kể từ lần replicate cuối
Replication Graph in Unreal EngineEpic Games Game có nhiều người kết nối và nhiều đối tượng cần replicate (như MMORPG) phải gom theo vị trí và chỉ gửi đối tượng cần thiết thì mới tránh được nghẽn CPU server