한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Sách trắng lag game › Thiết kế đồng bộ

Khung phán định ngắn bị ping ăn mất Timing window too short for latency + reaction

ID nguyên nhân sy-short-window · 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), Hạ tầng server (Đội hạ tầng)

Mở thẻ gốc có hình minh họa và thí nghiệm →

Nếu thời gian phải phản ứng ngắn như né tránh, parry, đỡ đòn, ping sẽ ăn mất khoảng thời gian đó và tạo ra những đòn không thể né.

Vì sao Khung phán định ngắn, như cảnh báo đòn đánh của boss 0,5 giây, phán định parry 0,2 giây → Dẫn đến Thấy cảnh báo muộn (độ trễ chiều xuống + nội suy), input của bạn cũng tới muộn (độ trễ chiều lên + chờ tick) → Trên màn hình Rõ ràng đã né mà vẫn trúng, parry bị nuốt

Triệu chứng
Nuốt thao tác·rollback, Trễ thao tác
Yếu tố
Độ trễ
Ai gặp phải
Chỉ mình tôi, Chỉ một tính năng
Khi nào
Khi làm một thao tác nhất định
Phụ trách
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), Hạ tầng server (Đội hạ tầng)
Việc cần làm (Đội phát triển game)
Server: đặt lịch cảnh báo đòn đánh theo giờ server và gửi trước, nới khung phán định thêm bằng ping (bù trễ). Client: phát cảnh báo nhận được đúng theo giờ server đã hẹn.
Việc cần làm (Đội hạ tầng)
Đặt server gần khu vực có nhiều người chơi (server khu vực) để giảm chính ping.
Con số tham khảo
Ping 150 ms, nội suy 100 ms thì mất khoảng 0,18 giây để cảnh báo hiện trên màn hình của bạn, và khoảng 0,1 giây để input của bạn tới server. Cộng thêm thời gian phản ứng của con người 0,25 giây thì gần như không thể né cảnh báo 0,5 giây.
Trên đồ thị
Chỉ một phần cao · Tỷ lệ né, parry thất bại (theo khoảng ping)
Chỗ cần xem
Ghi vào log server thời điểm bắt đầu và kết thúc khung phán định, thời điểm input của người chơi tới server, RTT của người chơi đó, rồi chia tỷ lệ thất bại theo khoảng ping (ví dụ mỗi 50 ms)
Đúng nếu
khoảng ping càng cao thì tỷ lệ thất bại càng cao rõ rệt, và input thất bại tới ngay sau khi khung phán định kết thúc (trong phạm vi RTT cộng thời gian nội suy)
Loại trừ nếu
tỷ lệ thất bại tương tự nhau bất kể khoảng ping → vấn đề độ khó của pattern. Input tới trong khung phán định mà vẫn bị tính là thất bại → xem code phán định hoặc bước kiểm tra phía server
Cách kiểm tra
Cần log và chỉ số của server, client game

Nguồn

  1. Factors influencing the latency of simple reaction time (Frontiers in Human Neuroscience, 2015) Frontiers
    Thời gian phản ứng đơn giản trung bình khoảng 231 ms (213 ms khi đã hiệu chỉnh độ trễ thiết bị), các nghiên cứu quy mô lớn gần đây cho kết quả 233–400 ms
  2. Latency and Player Actions in Online Games (Communications of the ACM, 2006) ACM
    Hành động càng cần chính xác và có hạn chót càng ngắn thì càng nhạy với độ trễ (giới hạn ở khoảng 100 ms với góc nhìn thứ 1, khoảng 500 ms với góc nhìn thứ 3, khoảng 1.000 ms với góc nhìn toàn cảnh)
  3. NetworkTime and ticks (Netcode for GameObjects 2.5) Unity
    Cách đặt lịch sự kiện theo giờ server (ServerTime) để mọi client phát cùng một khoảnh khắc

Nguyên nhân nên xem cùng

Cùng tầng: Thiết kế đồng bộ

Nguyên nhân ở tầng khác gây cùng triệu chứng (Nuốt thao tác·rollback)

Xem thẻ gốc có hình minh họa và thí nghiệm