Việc xác định các vấn đề hiệu suất thường có nghĩa là phân tích một trong ba loại: tốc độ khung hình (tính toán), bộ nhớ hoặc thời gian tải.
Roblox có nhiều công cụ để xác định các vấn đề hiệu suất, một số trong đó có sẵn trong khách hàng Roblox (và do đó trong Studio) và một số chỉ có sẵn trong Studio. Trong khi bạn có thể quan sát hành vi của khách hàng trực tiếp, bạn phải sử dụng các công cụ để chẩn đoán các vấn đề của máy chủ.
Công cụ chẩn đoán
| Công cụ | Mô tả | Địa điểm | Phím tắt | Môi trường |
|---|---|---|---|---|
| Console Nhà phát triển | Một bảng điều khiển với thông điệp ghi log thời gian thực, lỗi và thông tin chi tiết về bộ nhớ, mạng và hiệu suất kịch bản. Nó hữu ích để xem mức tiêu thụ bộ nhớ, các chỉ số sức khỏe của máy chủ, thông số hiệu suất kịch bản và để khởi động MicroProfiler của khách hàng hoặc máy chủ. | Studio Trong trò chơi | F9 | Kiểm tra Studio Phiên trực tiếp |
| MicroProfiler | Một công cụ gỡ lỗi phân tích thời gian tính toán tiêu tốn trong mỗi khung. Nó có thể tạo ra các bản dump để phân tích hiển thị một phân tích chính xác của các khung đơn lẻ, hữu ích để xác định nhiệm vụ cụ thể gây ra các vấn đề hiệu suất. Bạn có thể chạy profiler trên khách hàng hoặc máy chủ, tùy thuộc vào bên nào gặp sự cố. | Studio Trong trò chơi | CtrlAltF6 (⌘⌥F6) | Kiểm tra Studio Phiên trực tiếp |
| Phân tích Cảnh | Cung cấp thông tin so sánh qua lại về tài nguyên mà khách hàng và máy chủ đang sử dụng và các phiên bản nào chịu trách nhiệm cho việc sử dụng tài nguyên đó. | Studio | N/A | Kiểm tra Studio |
| Thống kê Hiệu suất | Một thanh công cụ với các số liệu hiệu suất cơ bản, bao gồm mức tiêu thụ bộ nhớ, CPU, GPU, dữ liệu mạng đã gửi và nhận, và thời gian ping. | Trong trò chơi | CtrlAltF7 (⌘⌥F7) | Kiểm tra Studio Phiên trực tiếp |
| Thống kê Gỡ lỗi | Các lớp phủ với thông tin chi tiết xung quanh đồ họa, vật lý, lưu lượng mạng, và FPS. | Studio Trong trò chơi | ShiftCtrlF1 (Shift⌘F1), ShiftCtrlF2 (Shift⌘F2), ShiftCtrlF3 (Shift⌘F3), ShiftCtrlF4 (Shift⌘F4), ShiftCtrlF5 (Shift⌘F5) | Kiểm tra Studio Phiên trực tiếp |
| Mô phỏng Mạng | Các thuộc tính mô phỏng điều kiện mạng trong thế giới thực như độ trễ, jitter và mất gói để kiểm tra các kết nối. | Studio | AltS(⌥S) | Kiểm tra Studio |
| Bảng điều khiển Hiệu suất | Một bảng điều khiển với các biểu đồ tổng hợp cho mức sử dụng bộ nhớ của khách hàng và máy chủ, tốc độ khung của khách hàng, nhịp tim máy chủ, và tỷ lệ sự cố trong thời gian thực. Nó hữu ích để phân tích các mẫu hiệu suất theo thời gian. Xem giám sát hiệu suất. | Bảng điều khiển Người sáng tạo | N/A | Phiên trực tiếp |
Tính toán máy chủ
Nhịp tim máy chủ bị giới hạn ở 60 FPS cho tất cả các trò chơi, vì vậy các giá trị thấp hơn có thể chỉ ra một vấn đề hiệu suất. Để kiểm tra nhịp tim máy chủ:
Với Console Nhà phát triển - Trong tab Công việc của Máy chủ, mở rộng hàng Nhịp tim và kiểm tra giá trị Bước trên giây, đại diện cho nhịp tim của trò chơi của bạn.
Với MicroProfiler, bạn có thể kiểm tra đồ thị để xem liệu khung mất hơn 16.67 ms.
Một triệu chứng khác của nhịp tim máy chủ kém là độ trễ tăng cao (thường được gọi là ping). Thời gian máy chủ mất để hoàn thành tính toán của nó trong mỗi khung càng lâu, thời gian để xử lý dữ liệu mạng gửi và nhận từ khách hàng sẽ càng lâu. Để kiểm tra ping trung bình cho tất cả người chơi kết nối với một máy chủ, hãy vào tab Thống kê Máy chủ trong Console Nhà phát triển.
Tính toán khách hàng
Giới hạn tốc độ khung hình mặc định của khách hàng là 60 FPS. Tuy nhiên, người dùng có thể tăng giới hạn tốc độ khung của họ lên 240 FPS trên Windows.
Tốc độ khung khác nhau rất nhiều giữa các thiết bị. Ví dụ, một PC cao cấp có thể "ép buộc" một vấn đề tính toán và chỉ trải nghiệm một sự sụt giảm tốc độ khung không thể nhận thấy. Nếu bạn kiểm tra trên các thiết bị mức thấp hơn, các vấn đề thường nghiêm trọng hơn và do đó dễ dàng nhận thấy hơn.
Để kiểm tra tốc độ khung của trò chơi của bạn:
Trong khách hàng, nhấn ShiftF5 để hiển thị tóm tắt thống kê gỡ lỗi.
Từ menu Cửa sổ của Studio, chọn Hiệu suất để bật Thống kê nhằm kích hoạt thống kê gỡ lỗi.
Với MicroProfiler, bạn có thể kiểm tra đồ thị để xem liệu khung mất hơn 16.67 ms.
Bộ nhớ máy chủ
Cố gắng giữ mức sử dụng bộ nhớ máy chủ dưới 50%. Tổng bộ nhớ máy chủ sử dụng công thức sau:
6.25 GiB + (100 MiB * số_lượng_người_chơi_kết_nối_lớn_nhất)
Ví dụ, một máy chủ với 30 người chơi kết nối có khoảng 9.18 GiB bộ nhớ tổng. Máy chủ có thêm bộ nhớ khi có người chơi kết nối, nhưng không mất mát khi người chơi ngắt kết nối. Nếu 10 người chơi rời đi, máy chủ vẫn còn 9.18 GiB bộ nhớ thay vì giảm xuống còn 8.2 GiB.
Khi các máy chủ ngừng hoạt động (ví dụ: khi chúng trống hoặc là một phần của quá trình cập nhật), các máy chủ thay thế bắt đầu với một lượng bộ nhớ cơ bản và bắt đầu mở rộng khi có người chơi kết nối.
Bộ nhớ khách hàng
Có một số cách để kiểm tra mức sử dụng bộ nhớ cho một trò chơi:
- Mở Console Nhà phát triển và chuyển sang tab Bộ nhớ. Tab này cung cấp một tổng quan về cách bộ nhớ đang được phân bổ. Sử dụng khách hàng thay vì Studio để có các số liệu chính xác nhất.
- Kích hoạt chế độ Thống kê Hiệu suất từ menu cài đặt trong khách hàng để xem một lớp phủ với mức sử dụng bộ nhớ tổng của khách hàng.
Mức sử dụng bộ nhớ cao không nhất thiết chỉ ra một vấn đề, nhưng một số dấu hiệu cho thấy bạn có thể cần điều tra thêm bao gồm:
- Một tỷ lệ phần trăm đáng kể của sự cố khách hàng hiển thị trong Bảng điều khiển Hiệu suất, đặc biệt là một sự tăng đột biến bất ngờ trùng với một bản cập nhật. Một số sự cố là điều kiện cần thiết, nhưng bạn nên điều tra nếu tỷ lệ sự cố của bạn tăng trên 2-3%.
- Một sự cố xảy ra khi kiểm tra trên một thiết bị mà bạn muốn trò chơi của mình hỗ trợ.
Một phần lớn mức tiêu thụ bộ nhớ của trò chơi trên khách hàng đến từ các tài sản, chẳng hạn như hình ảnh, mô hình và tệp âm thanh, được tải vào bộ nhớ. Trong Console Nhà phát triển, kiểm tra các nhãn sau dưới PlaceMemory:
- GraphicsMeshParts - Bộ nhớ đồ họa tiêu tốn bởi các mô hình.
- GraphicsTexture - Bộ nhớ đồ họa tiêu tốn bởi các họa tiết.
- Sounds - Bộ nhớ tiêu tốn bởi các tệp âm thanh.
Thời gian tải
Không có công cụ tích hợp để kiểm tra thời gian tải, nhưng vì chúng không yêu cầu độ chính xác cấp mili giây, một chiếc đồng hồ bấm giờ thường là tất cả những gì bạn cần để hiểu cơ sở hiện tại của mình và kiểm tra xem bạn có tạo ra cải tiến thực chất nào hay không. Bạn có thể sử dụng một kịch bản khách hàng trong ReplicatedFirst để có một cảm giác về cách các thay đổi của bạn ảnh hưởng đến thời gian tải, nhưng kịch bản này không cung cấp một phép đo hoàn chỉnh, từ đầu đến cuối:
local startTime = os.clock()
game.Loaded:Connect(function()
local loadTime = os.clock() - startTime
local roundedLoadTime = math.round(loadTime * 10000) / 10000 -- bốn số thập phân
print("Trò chơi đã tải trong " .. roundedLoadTime .. " giây.")
print("Số lượng phiên bản đã tải: " .. #workspace:GetDescendants())
end)
Để có thêm thông tin, hãy kích hoạt In Ảnh Tham gia Kích thước từ tab Mạng của Cài đặt Studio để in ra 20 phiên bản hàng đầu theo kích thước và phân bổ phần trăm theo loại phiên bản khi bạn bắt đầu trò chơi trong Studio.
Ping
Hai phép đo chính của ping (độ trễ) là ping mạng và ping dữ liệu.
Ping mạng là thời gian đi và về được đo từ khi khách hàng gửi một gói dữ liệu mạng đến khi nhận được phản hồi vang lại từ máy chủ. Nó tương tự như những gì sẽ được báo cáo dưới dạng time bởi tiện ích ping mạng đa mục đích.
Ping mạng có thể thấy trong thanh Thống kê Hiệu suất. Nó chủ yếu bị ảnh hưởng bởi độ dài của đường mạng giữa khách hàng và máy chủ, và nằm ngoài tầm kiểm soát của bạn. Tuy nhiên, bạn có thể mô phỏng ping và các điều kiện mạng khác bằng cách sử dụng mô phỏng mạng khi thử nghiệm trong Studio.
Ping dữ liệu là thời gian đi và về được đo từ khi khách hàng gửi dữ liệu một cách đáng tin cậy qua hệ thống sao chép đến khi nhận được phản hồi vang lại từ hệ thống sao chép của máy chủ. Nó bao gồm thời gian mà dữ liệu mất trong hàng đợi sao chép của cả khách hàng và máy chủ, cùng với các truyền TCP giống như các gói đã mất hoặc bị hỏng.
Ping dữ liệu tương tự như gửi một sự kiện xa đáng tin cậy từ khách hàng, nhận nó trên máy chủ và sau đó gửi một sự kiện xa đáng tin cậy từ máy chủ đến khách hàng trong phản hồi. Bởi vì ping dữ liệu cũng bao gồm thời gian dành cho mạng giữa khách hàng và máy chủ, nó sẽ lớn hơn hoặc bằng ping mạng.
Ping dữ liệu trung bình cho tất cả người chơi kết nối với một máy chủ có thể nhìn thấy trong tab Thống kê Máy chủ của Console Nhà phát triển. Ping dữ liệu cho một khách hàng cá nhân có thể nhìn thấy bằng cách sử dụng ShiftF3 để hiển thị thống kê gỡ lỗi mạng.
Ping dữ liệu bị ảnh hưởng bởi cả đường mạng và độ trễ trong hàng đợi sao chép. Khi máy chủ tạo dữ liệu sao chép nhanh hơn mạng có thể gửi (hoặc nhanh hơn khách hàng có thể xử lý), dữ liệu phải chờ trong hàng đợi sao chép. Một số khác biệt giữa ping dữ liệu và ping mạng là điều bình thường do cả việc truyền lại mạng và cách dữ liệu mạng được xử lý bởi ứng dụng Roblox. Tuy nhiên, nếu ping dữ liệu lớn hơn đáng kể so với ping mạng, hãy sử dụng MicroProfiler để xem lưu lượng mạng. Để có các đề xuất tối ưu hóa, xem mạng và sao chép.