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

Sách trắng lag game › L9 Tiến trình game phía server

Tính toán tầm nhìn (AOI) bùng nổ (N²) Area-of-interest explosion

ID nguyên nhân sp-aoi · Phụ trách chính Phát triển server (Đội phát triển game)

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

Nếu so sánh mọi người với nhau để xem ai thấy được ai, số người tăng 10 lần thì khối lượng tính toán tăng 100 lần.

Vì sao So khoảng cách giữa mọi nhân vật với nhau, hoặc dù đã chia lưới (grid) vẫn có hàng trăm người dồn quanh một ô → Dẫn đến 100 người thì khoảng 10.000 lần so sánh, 1.000 người thì khoảng 1 triệu lần → Trên màn hình Ở nơi đông người như world boss hay công thành chiến, tick tăng vọt, gây quay chậm và giật khựng

Triệu chứng
Quay chậm, Giật khựng
Yếu tố
Ngưng trệ
Ai gặp phải
Một địa điểm hoặc kênh, Cả server
Khi nào
Khi đông người
Phụ trách
Phụ trách chính Phát triển server (Đội phát triển game)
Việc cần làm (Đội phát triển game)
Chia thành lưới hoặc vùng để chỉ so với đối tượng ở gần, cập nhật thưa hơn cho đối tượng ở xa, giới hạn số người mà một người nhìn thấy.
Con số tham khảo
Nếu cả việc so khoảng cách lẫn cập nhật danh sách thấy/không thấy mất 0,1 µs (một phần mười triệu giây) cho mỗi cặp hai người, thì 1.000 người (khoảng 1 triệu cặp) tốn 100 ms mỗi tick. Gấp đôi budget của 20 tick (50 ms).
Trên đồ thị
Tăng theo số người và tải · Thời gian tick của server, số người tụ tập ở một chỗ
Chỗ cần xem
Số người và thời gian tick theo từng zone và kênh trên cùng đồ thị, cùng với thời gian tính toán tầm nhìn trong tick được đo riêng. Nếu không đo riêng, xem tỷ trọng CPU theo từng hàm của tiến trình game bằng perf top -p
Đúng nếu
số người tụ tập ở một chỗ tăng gấp đôi thì thời gian tick tăng gần 4 lần, và các hàm tính tầm nhìn, khoảng cách chiếm phần lớn thời gian CPU
Loại trừ nếu
thời gian tick tăng tỷ lệ thuận với số người, hoặc các hàm gửi và serialize chiếm tỷ trọng lớn → broadcast bùng nổ hoặc chi phí serialize và nén
Cách kiểm tra
Cần log và chỉ số của server, client game

Nguồn

  1. Comparing Interest Management Algorithms for Massively Multiplayer Games ACM
    Bài báo NetGames 2006 (bản tác giả công bố). Cách đo khoảng cách của mọi cặp không kham nổi khi số người tăng; chia lưới ô vuông thì chỉ cần kiểm tra 9 ô xung quanh
  2. Replication Graph in Unreal Engine Epic Games
    Cách mặc định xét mọi kết nối cho từng actor trở thành điểm nghẽn CPU của server khi có nhiều người chơi và actor; MMORPG và các game tương tự chia thế giới thành lưới và dùng lại danh sách theo từng ô
  3. perf-top(1) — Linux manual page perf
    Hiển thị theo thời gian thực tỷ trọng CPU theo từng hàm (symbol) của tiến trình (-p) hoặc thread (-t) đang chạy

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

Cùng tầng: L9 Tiến trình game phía server

Nguyên nhân ở tầng khác gây cùng triệu chứng (Quay chậm)

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