Chia Addressable group thế nào để vận hành LiveOps hay hot update.
Minh Khoa
Tác giả
Game puzzle có 300 level. Art sửa một background, nhưng bản cập nhật lại bắt người chơi tải một gói nội dung lớn.
Vấn đề có thể nằm ngay ở cách mình đóng gói: những thứ ít liên quan bị nhét chung, nên sửa một phần lại kéo theo tải lại cả gói.
Mình thường bắt đầu bằng hai câu hỏi: người chơi cần asset này lúc nào, và mình sẽ sửa nó thường xuyên không?
1. Phân biệt Group và Bundle trước đã
Hiểu đơn giản:
-
Group là nơi gom asset và đặt quy tắc trong Editor.
-
Bundle là gói nội dung được tạo ra sau khi build.
Một Group có thể tạo nhiều bundle. Pack Together gom chung; Pack Separately tách theo asset entry; Pack Together by Label gom theo cùng tổ hợp nhãn. Vì vậy, {chapter_1} và {chapter_1, HD} có thể thành hai gói khác nhau. Unity — Bundle Mode.
Với người mới, chia mỗi chapter hoặc event thành một Group riêng thường dễ kiểm tra hơn.
2. Ví dụ chia cho game 300 level
Đây là một cách bắt đầu, không phải công thức bắt buộc:
| Nhóm | Chứa gì? | Đặt ở đâu? |
|---|---|---|
| Core | UI cơ bản, tutorial, 20 level đầu | Local |
| Level Packs | Level 21–50, 51–80… cùng theme của chapter | Remote, chia từng pack |
| Events | Halloween, Tết, banner và hình ảnh riêng của sự kiện | Remote, mỗi event một nhóm nhỏ |
| Shared | Font, material, âm thanh hoặc texture thực sự dùng chung | Tách theo nhu cầu sử dụng |
Core giúp người chơi mở game và chơi ngay. Con số 20 chỉ là ví dụ; nên giữ đủ nội dung cho phiên chơi đầu, rồi tải trước pack tiếp theo.
Event thay đổi thường xuyên thì giữ gói nhỏ. Chapter ít sửa có thể đóng thành gói lớn hơn, nhưng vẫn cần đo dung lượng tải và RAM.
Riêng Shared, đừng biến nó thành kho chứa tất cả. Nếu phần chơi offline phụ thuộc vào một asset, asset đó cũng phải có sẵn local. Tài nguyên chỉ dùng cho event không cần kéo vào bộ cài.
Trước khi phát hành, kiểm tra dependency và asset bị đóng gói trùng bằng Analyze/Build Layout. Addressables không tự loại bỏ mọi trường hợp trùng tài nguyên. .