Input của người có đường truyền kém tới server lúc thưa lúc dồn. Nếu server áp dụng đúng số lượng nhận được ở mỗi tick, trong mắt người khác nhân vật đó sẽ khựng lại rồi đi một lúc nhiều bước.
Vì sao: Lệnh di chuyển của người chơi chậm có tick tới 0 lệnh, có tick tới 2–3 lệnh → Dẫn đến: Server áp dụng cùng lúc ở tick nhận được, nên vị trí nhân vật đó thay đổi như bậc thang → Trên màn hình: Trên màn hình người khác, chỉ nhân vật đó khựng lại rồi di chuyển dồn cục một lượt. Những thứ khác vẫn bình thường
Triệu chứng: Tua nhanh, Dịch chuyển tức thời · Phụ trách chính Phát triển server (Đội phát triển game) · Phối hợp Bên ngoài (Bên ngoài)
Ở server xử lý và thông báo ngay khi gói tin tới, các hành động dồn lại của người chơi chậm sẽ được thực thi liên tiếp ngay lập tức.
Vì sao: Yêu cầu skill, di chuyển của người chơi chậm tới dồn lại → Dẫn đến: Server thực thi theo thứ tự ngay khi nhận và thông báo ngay cho mọi người → Trên màn hình: Trong mắt người khác, người đó dùng nhiều skill trong một khoảnh khắc hoặc di chuyển như tua nhanh
Triệu chứng: Tua nhanh · 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)
Nếu server gom input của mỗi người một chút rồi lấy ra một input mỗi tick, người khác thấy mượt, nhưng thời điểm hành động của chính người đó được xác nhận trên server sẽ muộn đi tương ứng.
Vì sao: Server gom input của người chơi chậm vào bộ đệm và áp dụng một input mỗi tick → Dẫn đến: Bộ đệm nhỏ thì hay bị trống, nhân vật đó đứng yên tại chỗ hoặc server đoán theo input cuối để di chuyển; bộ đệm lớn thì input của chính người đó được xác nhận muộn → Trên màn hình: Nhỏ thì trong mắt người khác bị khựng, lớn thì kết quả skill của chính người đó ra muộn (trễ thao tác)
Triệu chứng: Giật khựng, Trễ thao tác · 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)
Người chơi dùng đường truyền có jitter lớn có input tới dồn cục, nên hay bị vướng các bước kiểm tra tốc độ và hồi chiêu của server.
Vì sao: Jitter của đường truyền thuộc một nhà mạng hoặc khu vực tăng vào buổi tối → Dẫn đến: Server coi input hợp lệ tới dồn lại là chạy quá tốc độ hoặc vi phạm hồi chiêu → Trên màn hình: Chỉ người chơi dùng nhà mạng đó bị kéo ngược, bị từ chối skill, nặng thì bị server đá ra và mất kết nối
Triệu chứng: Kéo ngược, Nuốt thao tác·rollback, Mất kết nối · Phụ trách chính Phát triển server (Đội phát triển game) · Phối hợp Hạ tầng mạng (Đội hạ tầng)
Trong cơ chế raid đòi hỏi mọi người cùng phản ứng vào một thời điểm định sẵn, phản ứng muộn của một người chậm sẽ thành thất bại của cả tổ đội.
Vì sao: Cơ chế tập thể như “tất cả cùng tản ra một lúc”, “một người bấm nút” → Dẫn đến: Người chậm thấy cảnh báo muộn, input cũng tới muộn → Trên màn hình: Cả tổ đội bị diệt vì một người đó, các đồng đội khác cảm thấy “tại người bị lag”
Triệu chứng: Nuốt thao tác·rollback, Trễ thao tác · 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)
Có những game giao việc tính di chuyển của quái cho client của một người chơi ở gần để giảm tải server. Nếu đường truyền của người đó kém, con quái đó di chuyển kỳ lạ trên màn hình của mọi người.
Vì sao: Server giao việc tính di chuyển của quái cho client của người chơi gần nhất (hoặc đến trước) → Dẫn đến: Báo cáo kết quả của người được giao tới server muộn hoặc dồn lại → Trên màn hình: Chỉ con quái đó khựng lại rồi dịch chuyển tức thời trên màn hình của mọi người xung quanh. Trên màn hình của chính người được giao thì vẫn bình thường
Triệu chứng: Dịch chuyển tức thời, Giật khựng, Tua nhanh · Phụ trách chính Phát triển server (Đội phát triển game)
Nhân vật tích hàng nghìn vật phẩm, thư, hoặc có danh sách bạn bè, danh sách chặn, buff nhiều bất thường thì lượng dữ liệu phải xử lý khi vào game, khi lưu và khi thông báo cho xung quanh lớn gấp nhiều lần người khác. Chỉ nhân vật đó chậm, bất kể đường truyền.
Vì sao: Nhân vật chơi lâu năm hoặc nhận nhiều phần thưởng sự kiện có tới hàng nghìn món trong túi đồ, hộp thư → Dẫn đến: Mỗi lần vào game, chuyển bản đồ, lưu đều phải đọc và ghi DB tương ứng, thông tin trang bị và buff gửi cho xung quanh cũng lớn → Trên màn hình: Chỉ nhân vật đó loading vào game lâu, khựng khi mở túi đồ hoặc hộp thư. Nếu server chờ lưu trên thread game thì cả những người xung quanh cũng bị đứng hình chốc lát
Triệu chứng: Không vào được·kẹt loading, Trễ thao tác, Đứng hình · Phụ trách chính Phát triển server (Đội phát triển game) · Phối hợp Hạ tầng DB (Đội hạ tầng)
Nếu hai nhân vật ở khác kênh hoặc khác instance, hoặc ở “phasing” khác nhau (NPC hiển thị khác nhau tùy tiến độ nhiệm vụ), hai bên sẽ thấy hai thế giới khác nhau.
Vì sao: Nhân vật thứ hai được xếp vào kênh khác hoặc đang ở bước nhiệm vụ khác → Dẫn đến: Server không gửi NPC đó cho nhân vật này (bình thường) → Trên màn hình: Chỉ một bên không có NPC. Trông như lỗi nhưng đúng theo thiết kế
Triệu chứng: Không hiển thị·đối tượng ma · 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)
Ngay khi nhân vật vào zone, server gửi thông báo xuất hiện của các NPC xung quanh, nhưng client vẫn đang tải bản đồ nên bỏ thông báo đó đi.
Vì sao: Server gửi thông báo xuất hiện của các đối tượng xung quanh ngay sau khi xử lý vào zone → Dẫn đến: Client đang loading nên chưa có message handler, thông báo bị bỏ → Trên màn hình: Server coi như đã gửi nên không gửi lại. NPC không hiển thị cho đến khi ra khỏi tầm nhìn rồi quay lại
Triệu chứng: Không hiển thị·đối tượng ma · 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)
Nếu thời điểm nhân vật được đăng ký vào lưới tầm nhìn trùng với thời điểm NPC chuyển ô lưới, thông báo xuất hiện của NPC đó có thể bị sót.
Vì sao: Việc xử lý vào zone, chuyển kênh, teleport trùng cùng lúc với việc NPC di chuyển → Dẫn đến: NPC đó bị sót khi tính “các đối tượng mới lọt vào tầm nhìn” → Trên màn hình: Chỉ vài NPC cụ thể không hiển thị, hoặc NPC đã rời đi vẫn còn đó
Triệu chứng: Không hiển thị·đối tượng ma · Phụ trách chính Phát triển server (Đội phát triển game)
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
Triệu chứng: Không hiển thị·đối tượng ma, Dịch chuyển tức thời · 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)
Ngược lại, nếu bỏ lỡ thông báo “đã biến mất”, NPC hoặc người chơi đã chết hay đã rời đi vẫn còn trên màn hình của riêng bạn.
Vì sao: Thông báo chết, rời đi, ra khỏi tầm nhìn bị mất hoặc sai thứ tự → Dẫn đến: Client cho rằng đối tượng đó vẫn còn → Trên màn hình: Quái bị đánh mà không phản ứng, người chơi đã thoát vẫn đứng đó
Triệu chứng: Không hiển thị·đối tượng ma · 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)
Ngay khi nhân vật bước vào zone, server gửi cùng lúc thông tin xuất hiện của vài chục đến vài trăm đối tượng xung quanh. Nếu gửi chúng qua kênh không tin cậy (unreliable), hoặc bộ đệm nhận bị tràn trong lúc client đang loading nên không đọc socket, một phần sẽ biến mất và không được gửi lại.
Vì sao: Ngay sau khi vào, thông tin xuất hiện dồn tới trong khoảnh khắc ngắn → Dẫn đến: Client đang loading đọc socket muộn nên bộ đệm nhận của OS bị tràn, hoặc gói UDP lớn bị phân mảnh nên chỉ mất một fragment là mất cả gói. Nếu là kênh không tin cậy thì cũng không được gửi lại → Trên màn hình: Chỉ ở client loading chậm hơn mới thiếu vài NPC. Ra khỏi tầm nhìn rồi quay lại thì thấy
Triệu chứng: Không hiển thị·đối tượng ma · 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)
Khi NPC đã chết xuất hiện lại mà server dùng lại cùng ID đối tượng, client đã bỏ lỡ thông báo rời đi trong khoảng đó sẽ nhầm NPC mới là NPC cũ.
Vì sao: NPC chết rồi xuất hiện lại với cùng ID đối tượng → Dẫn đến: Client đã bỏ lỡ thông báo rời đi coi đây là “đối tượng đã biết” nên bỏ qua thông báo xuất hiện, hoặc giữ nguyên trạng thái đã chết → Trên màn hình: NPC không có trên màn hình của một bên, hoặc hiện ở trạng thái đã gục, cũng có khi hiện thành hình dạng của NPC khác
Triệu chứng: Không hiển thị·đối tượng ma · 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)
Nếu client được viết để dùng một cổng cục bộ cố định, client thứ hai trên cùng PC sẽ không dùng được cổng đó hoặc phải chia gói tin nhận được với client thứ nhất.
Vì sao: Hai client cùng mở một cổng UDP cục bộ (dùng tùy chọn reuse để ép dùng chung) → Dẫn đến: OS chỉ chuyển gói tin đến cho một socket, hoặc không bảo đảm bên nào nhận. Router và server cũng thấy hai client là cùng một địa chỉ → Trên màn hình: Một bên không nhận được gói tin thế giới nên NPC và người chơi khác không hiển thị, hoặc bị mất kết nối
Triệu chứng: Không hiển thị·đối tượng ma, Mất kết nối, Không vào được·kẹt loading · 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)
Nếu server hoặc server trung gian phân biệt kết nối bằng IP hay ID thiết bị, hai client trên cùng một PC (cùng IP công cộng) sẽ bị coi là một người.
Vì sao: Bảng phiên được lập theo IP hoặc IP + ID thiết bị → Dẫn đến: Thông tin của client thứ hai ghi đè lên hoặc bị trộn vào phiên thứ nhất → Trên màn hình: Một bên không thấy NPC, bên kia bị mất kết nối hoặc nhận nhầm thông tin của người khác
Triệu chứng: Không hiển thị·đối tượng ma, Mất kết nối · 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)
Nếu module bảo mật hoặc chính sách server giới hạn nhiều client trên một PC, client thứ hai sẽ bị chặn chạy hoặc chặn kết nối, hoặc client bật trước bị mất kết nối. Một số game chỉ chặn tính năng của client chạy thêm.
Vì sao: Module bảo mật phát hiện chạy trùng, hoặc server giới hạn kết nối thêm từ cùng một thiết bị → Dẫn đến: Từ chối lần chạy hoặc kết nối thứ hai, hoặc ngắt một bên. Hiếm khi chỉ chặn một phần tính năng của client chạy thêm → Trên màn hình: Không vào được hoặc một bên mất kết nối. Ở game chỉ chặn tính năng thì chỉ một bên không thấy NPC, cửa hàng
Triệu chứng: Không vào được·kẹt loading, Không hiển thị·đối tượng ma, Mất kết nối · 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)
Với client ở cửa sổ chạy nền, game, engine và OS đều giảm khung hình và việc xử lý. Gói tin nhận được không được xử lý kịp nên bị dồn lại hoặc tràn.
Vì sao: Giới hạn khung hình khi chạy nền trong tùy chọn game hoặc driver đồ họa (ví dụ driver NVIDIA cho chọn từ 20 đến 200 khung hình mỗi giây), tiết kiệm điện, cấu hình tạm dừng khi chạy nền của engine. OS cũng ưu tiên cấp CPU và GPU cho cửa sổ đang ở phía trước (foreground) → Dẫn đến: Số gói xử lý mỗi khung hình giảm nên hàng đợi dồn lại, bộ đệm nhận tràn thì gói bị bỏ → Trên màn hình: Đưa cửa sổ lên phía trước thì mọi thứ hiện ra dồn một lượt, hoặc một số NPC mãi không hiển thị
Triệu chứng: Không hiển thị·đối tượng ma, Tua nhanh, Mất kết nối · Phụ trách chính Phát triển client (Đội phát triển game) · Phối hợp Bên ngoài (Bên ngoài)
Nếu hai client cùng ghi vào một thư mục cache hoặc khóa file, một bên sẽ không tải được model, texture của NPC.
Vì sao: Hai client cùng lúc ghi file cache, file patch trong cùng một thư mục cài đặt → Dẫn đến: Khóa file thất bại hoặc đọc phải file đang ghi dở nên tải thất bại → Trên màn hình: NPC có bảng tên nhưng không có model nhân vật, hoặc trong suốt
Triệu chứng: Không hiển thị·đối tượng ma · Phụ trách chính Phát triển client (Đội phát triển game)
Khi hai client dùng chung bộ nhớ đồ họa, không còn chỗ để nạp model, texture mới cần dùng nên một phần không được vẽ.
Vì sao: Hai client dùng chung VRAM và RAM. OS cũng có thể giảm hạn mức bộ nhớ đồ họa của cửa sổ chạy nền trước → Dẫn đến: Engine không nạp được model, texture mới hoặc liên tục gỡ ra rồi nạp lại → Trên màn hình: NPC xuất hiện muộn, bị mờ hoặc không hiển thị, giật khựng
Triệu chứng: Không hiển thị·đối tượng ma, Giật khựng · Phụ trách chính Phát triển client (Đội phát triển game) · Phối hợp Bên ngoài (Bên ngoài)
Nếu các tùy chọn như giới hạn số người hiển thị, ẩn bảng tên hoặc model NPC, chế độ cấu hình thấp khác nhau giữa hai client, những gì nhìn thấy sẽ khác nhau.
Vì sao: Chỉ một client bật “giới hạn số nhân vật xung quanh được hiển thị” hoặc chế độ cấu hình thấp → Dẫn đến: Không vẽ các NPC ở xa hoặc có mức ưu tiên thấp (bình thường) → Trên màn hình: Chỉ một bên không có NPC
Triệu chứng: Không hiển thị·đối tượng ma · Phụ trách chính Phát triển client (Đội phát triển game)
Nếu client thứ hai là bản cài đặt khác hoặc chưa cập nhật xong, nó không biết ID NPC mới mà server gửi nên âm thầm bỏ qua.
Vì sao: Bản cài đặt ở thư mục khác, hoặc client được chạy khi đang cập nhật → Dẫn đến: Nhận ID NPC hoặc ID model không biết thì bỏ qua → Trên màn hình: Chỉ NPC mới thêm không hiển thị ở một bên
Triệu chứng: Không hiển thị·đối tượng ma · 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)
Nếu server đặt giới hạn lượng gửi cho từng kết nối và gửi những thứ ở gần trước, bên có giới hạn thấp sẽ nhận NPC ở xa muộn hoặc không nhận được.
Vì sao: Ở nơi đông người, server gửi theo thứ tự quan trọng trong giới hạn lượng gửi của từng kết nối → Dẫn đến: Với kết nối có băng thông ước tính thấp (ví dụ bên ở cửa sổ chạy nền nên gửi xác nhận đã nhận muộn), các đối tượng xếp sau cứ bị hoãn mãi → Trên màn hình: NPC ở xa chỉ hiển thị muộn hoặc không hiển thị ở một bên
Triệu chứng: Không hiển thị·đối tượng ma, Trễ thao tác · 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)
Nếu giờ server mà client ước tính bị sai, client sẽ giữ lại thông tin đối tượng vừa tới vì cho là “vẫn còn ở tương lai”, hoặc bỏ đi vì cho là “quá cũ”.
Vì sao: Giờ server mà một client ước tính bị lệch nhiều (đo trong lúc loading, vừa thoát chế độ tiết kiệm điện) → Dẫn đến: Thời điểm mốc của nội suy và thời điểm trong thông tin đối tượng không khớp → Trên màn hình: Đối tượng xuất hiện muộn hoặc hiện ở trạng thái đứng yên
Triệu chứng: Không hiển thị·đối tượng ma, Giật khựng · Phụ trách chính Phát triển client (Đội phát triển game)