Thiết kế cho hiệu suất có nghĩa là tuân theo một vài tốt nhất thực hành khi bạn xây dựng kinh nghiệm của bạn.So với việc tìm và khắc phục các vấn đề về hiệu suất sau này trong quá trình phát triển, thiết kế cho hiệu suất sớm có thể tiết kiệm rất nhiều thời gian và nỗ lực.
Thiết bị cấp thấp
Các thiết bị cấp thấp, đặc biệt là thiết bị di động, có hạn chế nghiêm trọng về bộ nhớ và có thể bị lỗi do thiếu bộ nhớ (OOM):
Nếu bạn muốn hỗ trợ các thiết bị cấp thấp hơn, hãy chọn ít nhất một thiết bị "baseline", kiểm tra trải nghiệm của bạn trên nó trong suốt quá trình phát triển, và chú ý đến tốc độ khung và sử dụng bộ nhớ.Khi bạn tìm thấy các khu vực có vấn đề trong trải nghiệm của mình, sử dụng các khu vực đó để xác định giới hạn của thiết bị của bạn.
Ví dụ, bạn có thể kiểm tra một trải nghiệm với Render ( ShiftF2 ) và Tổng kết ( ShiftF2 ) số liệu thống kê gỡ lỗi được bật.Nếu tốc độ khung bắt đầu giảm trong một khu vực rất lộn xộn, bạn có thể xem xét các số Vẽ (cảnh) và xác định rằng bạn cần phải ở dưới 1,000 lời mời vẽ và 1,000,000 tam giác để trải nghiệm chạy tốt trên thiết bị cơ bản của bạn.
Hoặc bạn có thể kiểm tra Bảng điều khiển nhà phát triển ( ) và lưu ý rằng sử dụng bộ nhớ là một chút cao nếu bạn không bật phát trực tuyến .Hiểu rõ giới hạn của thiết bị có thể giúp bạn ở dưới chúng khi bạn tiếp tục xây dựng trải nghiệm của mình.
Trình giả lập thiết bị trong Roblox Studio hữu ích để kiểm tra tỷ lệ khía cạnh và điều khiển, nhưng không chính xác về sử dụng bộ nhớ; khi bạn thử nghiệm một trải nghiệm trong Studio, nó chạy máy chủ và khách hàng, do đó sử dụng bộ nhớ tăng đáng kể.
Nói chung, kiểm tra trên nhiều thiết bị có thể giúp bạn kiểm tra rằng trải nghiệm phù hợp với mong đợi về hình ảnh và hiệu suất của bạn tại các cấp chất lượng đồ họa khác nhau.Đối với ví dụ chi tiết hơn về cách bạn có thể nghĩ về việc tối ưu hóa trải nghiệm của mình cho các thiết bị di động giá rẻ, hãy xem Tối ưu hóa thế giới thực và lập trình thực tế.
Phát trực tiếp và dịch chuyển
Phát trực tiếp từ instance cho phép Roblox tải và tháo tải nội dung 3D một cách năng động và là một lựa chọn tuyệt vời cho hầu hết các nơi, đặc biệt là những nơi lớn hơn.Phát trực tiếp cải thiện thời gian tham gia, giảm dấu chân bộ nhớ và tăng tốc độ khung.Để biết thêm thông tin, xem Nâng cao hiệu suất.
Xem xét phá vỡ các vị trí lớn thành những vị trí quản lý dễ dàng hơn và sử dụng dịch chuyển để di chuyển người chơi giữa chúng.Cách tiếp cận này có thể giảm thời gian tham gia ban đầu , nhưng áp đặt thêm thời gian tham gia khi người chơi dịch chuyển từ nơi này sang nơi khác.Lợi ích cho việc sử dụng bộ nhớ thay đổi tùy thuộc vào kích thước của nơi và xem bạn đã bật phát trực tiếp hay chưa.
Ngay cả khi bỏ qua các xem xét về hiệu suất, bạn có thể thấy rằng có nhiều nơi sẽ làm giảm quá trình phát triển, đặc biệt nếu bạn thường xuyên thêm nội dung mới vào trải nghiệm của mình hoặc là một phần của một nhóm lớn hơn.
Vật liệu và sao chép
Vật liệu tích hợp sử dụng ít bộ nhớ hơn so với kết cấu tùy chỉnh, nhưng có thể không phù hợp với tầm nhìn nghệ thuật của bạn.Hãy cố gắng sử dụng vật liệu khi nào có thể để tiết kiệm ngân sách bộ nhớ cho các kết cấu quan trọng cho trải nghiệm của bạn.
Khi bạn tạo tài sản, chuyển chúng thành gói.Làm cho gói là một phần của dòng công việc của bạn giúp tránh vấn đề thông thường về tài sản trùng lặp với các ID khác nhau, có thể ảnh hưởng đến hiệu suất.
Khi bạn thêm khối lượng và kết cấu, hãy sử dụng và tái sử dụng chúng thay vì nhập bản sao lặp lại.Bằng cách thay đổi kích thước, xoay và chồng lấp, bạn có thể tạo ra các môi trường giàu, đa dạng cần rất ít cuộc gọi vẽ draw.Để biết thêm thông tin, xem Loại bỏ kết cấu trùng lặp.
Độ trong suốt
- Tránh các giá trị minh bạch khác với 0 (có thể nhìn thấy) và 1 (không thể nhìn thấy).Khi bạn sử dụng một phần sự minh bạch, hãy đặc biệt cẩn thận để tránh quá trình minh bạch cao .
Lập trình
Khi có thể, hãy viết mã dựa trên sự kiện thay vì tính toán theo khung.Tại 60 FPS, tổng ngân sách cho mỗi khung là 16,67 mili giây (ms).Ngay cả những tính toán dường như nhỏ hơn mỗi khung có thể sử dụng một phần lớn của ngân sách đó.
Tìm cách phá vỡ mã chạy lâu dài thành các khối quản lý.Nếu một phần mã mất 100 ms để thực thi và bạn chạy nó mỗi khung, trải nghiệm của bạn chỉ có thể chạy ở 10 FPS.Nếu bạn quyết định chỉ chạy mã một lần mỗi giây trong một trải nghiệm chạy ở 60 FPS, 59 khung của bạn đến sau 16,67 ms...và sau đó một sau 100 ms, gây ra sự giật điện.
Thay vào đó, hãy xem xét cách bạn có thể phá vỡ mã.Có lẽ bạn có thể thực hiện 5 ms công việc mỗi khung, sử dụng task.wait() , và có sự tính toán hoàn thành mỗi 20 khung trong khi vẫn giữ 60 FPS.Nhiều luồng , đôi khi được gọi là Parallel Luau, cũng có thể giúp.
Sử dụng phương pháp RBXScriptConnection:Disconnect() để ngăn chặn chức năng không cần thiết được gọi vào lần tiếp theo một sự kiện bắt lửa.
Không gọi cùng một phương pháp mỗi khi bạn cần một giá trị. Gọi phương pháp một lần, lưu giá trị, và sau đó ghi đè lại sau khi cần thiết.
Đừng lưu tất cả mọi thứ trong ReplicatedStorage .Client tải tất cả mọi thứ có trong thùng này.Thay vào đó, sử dụng ServerStorage cho bất kỳ thứ gì mà khách hàng không cần truy cập.