Kiến thức Phần mềm

Unity Assets Bundle Extractor: bản đang sống và ranh giới

Unity Assets Bundle Extractor bản gốc đã ngừng hỗ trợ từ 2023. Kho nào còn cập nhật, cách xem gói tài nguyên của chính bạn, và ranh giới bản quyền.

  • autocad123.vn
  • 10/10/2024

Người gõ Unity Assets Bundle Extractor thường ở một trong hai chỗ. Hoặc bạn đang làm game bằng Unity và muốn nhìn vào gói tài nguyên do chính mình dựng ra. Hoặc bạn muốn mở gói của một game đã phát hành. Hai việc đó dùng chung một cái tên nhưng khác nhau cả về công cụ nên dùng lẫn về ranh giới pháp lý.

Tóm tắt. Bản UABE gốc đã bị chính tác giả đóng kho từ cuối năm 2023, kèm dòng ghi thẳng là không còn được hỗ trợ. Phần lớn bài hướng dẫn tiếng Việt vẫn chỉ về đó. Bản đang được cập nhật là UABEA, và tác giả đang viết lại thành UABEANext. Chính tác giả mô tả đây là công cụ nghiên cứu và làm mod, không phải công cụ rút tài nguyên. Với gói của chính bạn, Unity có ba đường chính thống nhìn được vào bên trong mà không cần công cụ ngoài. Số liệu kho mã kiểm tháng 9/2026.

Unity Assets Bundle Extractor là gì, và AssetBundle là gì

Muốn hiểu công cụ thì phải hiểu thứ nó mở ra trước. Tài liệu của Unity định nghĩa AssetBundle là một tệp lưu trữ dùng để gom các tài nguyên lại với nhau. Mục đích là tạo nội dung tải thêm, hoặc giảm dung lượng cài đặt ban đầu của ứng dụng.

Bên trong một AssetBundle có hai loại tệp. Serialized file chứa các đối tượng Unity đã được chuyển sang dạng nhị phân, đúng định dạng mà bản build dùng. Resource file chứa những khối dữ liệu thô như dữ liệu ảnh và âm thanh, tách riêng ra để máy nạp được bằng nhiều luồng.

Gói này còn nén được bằng LZMA hoặc LZ4, và nó gắn với nền tảng. Unity dựng dữ liệu theo BuildTarget bạn đặt, nên gói dựng cho iOS không dùng lại được trên Android. Vì tất cả đã thành nhị phân, mở bằng trình quản lý tệp thông thường chỉ thấy một khối dữ liệu vô nghĩa. Đó là lý do tồn tại các công cụ đọc gói, và UABE là cái nổi tiếng nhất trong số đó.

Bên trong một AssetBundle Tệp lưu trữ, nén bằng LZMA hoặc LZ4 Serialized file Đối tượng Unity đã chuyển sang nhị phân Đúng dạng bản build Resource file Khối dữ liệu thô của ảnh và âm thanh Nạp được đa luồng Gắn với nền tảng Gói dựng cho iOS không dùng lại được trên Android Tất cả đã là nhị phân, nên cần công cụ đọc mới nhìn thấy từng tài nguyên bên trong

Hình 1. Cấu trúc gói theo tài liệu chính thức của Unity. Hai loại tệp bên trong phục vụ hai kiểu nạp khác nhau.

Bản nào còn sống: chỗ hầu hết bài hướng dẫn nói sai

Đây là điểm đáng giá nhất của bài này. Gõ tên công cụ ra thì kết quả đầu bảng phần lớn dẫn về kho mã gốc, tên SeriousCache/UABE. Kho đó hiện đã bị khóa ở chế độ chỉ đọc. Dòng mô tả ngay trên kho ghi rõ công cụ không còn được hỗ trợ và khuyên chuyển sang UABEA. Lần đẩy mã cuối cùng là ngày 31/12/2023.

Bản đang được cập nhật tên là UABEA, do người dùng nesrak1 viết lại bằng C#. Kho dùng giấy phép MIT. Bản phát hành đánh số mới nhất là v8, ngày 3/11/2024, còn kho thì vẫn có thay đổi tới tháng 5/2026.

Tác giả đang viết lại lần nữa thành UABEANext. Dòng mô tả của kho này ghi đúng một câu đáng chú ý: đây là công cụ nghiên cứu và làm mod cho SerializedFile và Asset Bundle. Kho đẩy mã tới tháng 7/2026, cũng giấy phép MIT, và chưa có bản phát hành đánh số nào, chỉ có bản dựng hằng đêm.

Kho mãTình trạngGhi chú
SeriousCache/UABEĐã khóa, chỉ đọc. Đẩy mã cuối 31/12/2023Chính kho ghi không còn được hỗ trợ và chỉ sang UABEA
nesrak1/UABEABản v8 ngày 3/11/2024, kho còn thay đổi tới tháng 5/2026Viết lại bằng C#, giấy phép MIT
nesrak1/UABEANextĐẩy mã tới tháng 7/2026, chưa có bản đánh sốBản viết lại, mới có bản dựng hằng đêm

Chỉ tải từ kho mã của chính tác giả. Loại công cụ này hay bị đóng gói lại rồi phát tán trên các trang chia sẻ tệp và diễn đàn game. Bản đóng gói lại là bản không ai kiểm được, trong khi nó chạy với quyền đọc ghi lên tệp trong máy bạn. Vào thẳng trang phát hành trên kho mã của tác giả, và đối chiếu tên kho, đừng lấy theo đường dẫn ai đó dán lại.

Chính tác giả nói đây không phải công cụ để rút tài nguyên

Tài liệu readme của UABEA có một câu mà gần như không bài viết tiếng Việt nào nhắc tới. Tác giả viết rằng ông phát triển UABEA thiên về một công cụ làm mod và nghiên cứu hơn là một công cụ trích xuất. Ngay sau đó ông chỉ người cần trích xuất sang hai công cụ khác là AssetRipper và AssetStudio.

Câu đó đáng đọc kỹ vì hai lý do. Thứ nhất, nhiều người tải công cụ này về đúng cho việc mà tác giả nói nó không nhắm tới. Thứ hai, nó cho thấy hai nhu cầu khác hẳn nhau đang bị gộp làm một. Xem và sửa cấu trúc một gói là chuyện của người dựng gói. Moi hết tài sản trong gói ra thành tệp rời là chuyện khác.

Đường đi của các công cụ nhóm sau cũng nói lên điều đó. AssetStudio, cái tên hay được nhắc cùng Unity Assets Bundle Extractor, đã bị chính tác giả đóng kho ở chế độ chỉ đọc từ tháng 1/2023. Dự án nay sống tiếp bằng nhánh rẽ của người khác.

Ranh giới: tài sản trong game là tác phẩm có chủ

Phần này cần nói rõ vì nó quyết định bạn được làm gì. Luật Sở hữu trí tuệ Việt Nam xếp chương trình máy tính vào nhóm tác phẩm được bảo hộ quyền tác giả, cùng nhóm với tác phẩm văn học. Ảnh, mô hình, âm thanh nằm trong game cũng là tác phẩm riêng và có chủ riêng.

Điều 25 của luật liệt kê các trường hợp ngoại lệ, trong đó có việc tự sao chép một bản để nghiên cứu khoa học hoặc học tập của cá nhân. Nhiều người lấy đúng câu này ra để biện minh. Nhưng một khoản khác của chính điều đó ghi rằng các ngoại lệ vừa liệt kê không áp dụng cho tác phẩm kiến trúc, tác phẩm tạo hình và chương trình máy tính. Nghĩa là lý do học tập cá nhân không che được cho việc sao chép phần mềm.

Ngoài luật còn một tầng nữa là điều khoản sử dụng của từng game. Rất nhiều hợp đồng người dùng cấm thẳng việc dịch ngược, tháo gỡ hoặc sửa đổi tệp của trò chơi. Tầng này không cần tòa án mới có hiệu lực: nhà phát hành khóa tài khoản là xong. Bài này dẫn lại điều luật và điều khoản đang có hiệu lực, không phải tư vấn pháp lý.

Ba việc rất khác nhau, hay bị gộp làm một 1. Mở gói do chính bạn dựng Tài sản là của bạn, dự án là của bạn Không vướng gì. Nên dùng đường của Unity 2. Sửa gói của game khác trên máy mình Điều khoản của game thường cấm thẳng Có game mở cửa cho mod, có game không 3. Lấy tài sản ra rồi dùng lại hoặc phát tán Sao chép và phân phối tác phẩm của người khác Vi phạm quyền tác giả, không có ngoại lệ nào che Bài này chỉ hướng dẫn cho mức 1

Hình 2. Cùng một công cụ, ba mục đích, ba mức hệ quả. Ranh giới nằm ở chỗ tài sản thuộc về ai, không nằm ở phần mềm bạn dùng.

Cách chính thống để xem gói tài nguyên của chính bạn

Nếu bạn là người dựng gói thì không cần công cụ ngoài. Unity có ba đường, và mỗi đường trả lời một câu hỏi khác nhau của người làm game.

Đường thứ nhất là báo cáo build layout của gói Addressables. Mỗi lần dựng nội dung Addressables, hệ thống tự sinh báo cáo này nếu bạn bật nó trong mục Addressables của cửa sổ Preferences. Tệp nằm trong thư mục dự án, đường dẫn Library/com.unity.addressables/buildlayout. Báo cáo cho biết Addressables đã đóng tài sản nào vào bundle nào. Quan trọng hơn, nó liệt kê cả những tài sản không phải Addressable bị kéo theo vào gói do phụ thuộc. Tài liệu cũng nói thẳng là bật báo cáo thì thời gian dựng lâu hơn.

Đường thứ hai là AssetBundle Browser. Đây là công cụ cho trình soạn thảo, cho phép xem nội dung của các bundle đã dựng xong, thêm bằng nút Add File hoặc Add Folder. Cần biết một điều trước khi dùng: Unity ghi rõ đây là tiện ích không được hỗ trợ chính thức, và khuyên dự án mới nên dùng Addressables thay thế.

Đường thứ ba là UnityDataTools, một công cụ dòng lệnh của Unity Technologies để phân tích tệp nhị phân của Unity. Lệnh analyze sinh ra cơ sở dữ liệu SQLite để bạn truy vấn. Lệnh dump đổ ra văn bản đọc được. Lệnh find-refs truy chuỗi tham chiếu giữa các đối tượng. Lệnh archive mở nội dung tệp lưu trữ, còn serialized-file cho xem cấu trúc bên trong. Kho cũng ghi rõ dự án được cung cấp nguyên trạng và không được Unity hỗ trợ chính thức.

Đường chính thốngTrả lời câu hỏi gìGiới hạn
Báo cáo build layout của AddressablesTài sản nào nằm trong bundle nào, cái gì bị kéo theo do phụ thuộcChỉ có với dự án dùng Addressables. Bật thì dựng lâu hơn
AssetBundle BrowserXem nội dung bundle đã dựng, ngay trong trình soạn thảoUnity ghi là tiện ích không được hỗ trợ chính thức
UnityDataToolsPhân tích sâu bằng dòng lệnh, xuất ra SQLite hoặc văn bảnCũng cung cấp nguyên trạng, không được hỗ trợ chính thức

Ba đường này giải quyết đúng câu hỏi mà lập trình viên thật sự gặp. Vì sao gói phình to hơn dự tính. Tài sản nào bị nhân bản sang nhiều gói. Vì sao đổi một tệp nhỏ mà cả gói phải tải lại. Đó cũng là lý do một người làm game hiếm khi cần tới Unity Assets Bundle Extractor cho dự án của chính mình.

Lỗi thường gặp

Việc hay làmKết quảVì sao
Tải bản đầu bảng kết quả tìm kiếmNhận về bản đã ngừng phát triểnKho gốc đã bị khóa chỉ đọc, lần đẩy mã cuối vào cuối năm 2023, và chính nó chỉ sang bản mới
Lấy tệp cài từ trang chia sẻ hoặc diễn đànKhông ai bảo đảm được nội dung tệpCông cụ chạy với quyền đọc ghi tệp. Chỉ nên lấy ở kho mã của tác giả
Dùng công cụ này để moi hết tài sản ra tệp rờiSai dụng cụTác giả ghi rõ đây là công cụ nghiên cứu và làm mod, không phải công cụ trích xuất
Viện lý do học tập cá nhân để sao chépKhông nằm trong diện ngoại lệĐiều 25 loại chương trình máy tính ra khỏi các ngoại lệ mà nó liệt kê
Mở gói game để lấy ảnh làm sản phẩm riêngVi phạm quyền tác giảẢnh và mô hình trong game là tác phẩm có chủ, không phải tài nguyên tự do
Sửa gói rồi không giữ bản gốcHỏng thì không quay lại đượcGhi đè lên tệp gói là thao tác không hoàn tác. Luôn sao lưu trước
Mang gói dựng cho một nền tảng sang nền tảng khácKhông nạp đượcUnity dựng dữ liệu theo BuildTarget, gói gắn với nền tảng

Câu hỏi thường gặp

Unity Assets Bundle Extractor có miễn phí và an toàn không

Mã nguồn của UABEA và UABEANext đều mở, dùng giấy phép MIT, nên phần mã ai cũng đọc được. Rủi ro nằm ở khâu lấy tệp chứ không ở giấy phép. Bản dựng sẵn trôi nổi trên các trang chia sẻ thì không đối chiếu được với mã gốc, nên chỉ lấy ở trang phát hành trong kho mã của tác giả.

Tôi làm game bằng Unity thì có nên dùng công cụ này không

Thường là không cần. Với gói do chính bạn dựng, báo cáo build layout của Addressables đã trả lời gần hết các câu hỏi về dung lượng và phụ thuộc. Cần đào sâu hơn thì dùng UnityDataTools. Công cụ ngoài chỉ hợp khi bạn phải đọc một gói mà không còn dự án gốc trong tay.

Làm bản dịch cộng đồng cho một game thì có hợp lệ không

Không có câu trả lời chung, vì nó phụ thuộc vào từng game. Một số nhà phát hành mở hẳn cửa cho mod, có công cụ riêng và có điều khoản cho phép. Số khác cấm thẳng việc mở hay sửa tệp trò chơi. Đọc điều khoản sử dụng của đúng game đó trước, và nếu có kênh liên hệ thì hỏi nhà phát hành. Bài này không thay thế ý kiến của luật sư.

Vì sao mở tệp gói bằng phần mềm giải nén thông thường lại không ra gì

Vì AssetBundle không phải tệp nén kiểu ZIP có cây thư mục bên trong. Nó là tệp lưu trữ riêng của Unity, gồm serialized file và resource file, có thể nén bằng LZMA hoặc LZ4. Muốn thấy từng tài nguyên thì phải có công cụ hiểu được định dạng đó, chứ không phải công cụ giải nén thông thường.