Nếu bạn từng mod game dùng Unreal Engine 4 trên Nintendo Switch, chắc chắn sẽ gặp vấn đề texture bị “xáo trộn” (tiled/swizzled). Một công cụ cực kỳ hữu ích cho việc này là Noesis của Rich Whitehouse.
Điều thú vị là Noesis có một chức năng ẩn hỗ trợ tile và untile texture UE4, đặc biệt hữu ích cho các game Switch như Octopath Traveler.
Trong bài viết này, mình sẽ hướng dẫn đầy đủ cách sử dụng Noesis để:
- Swizzle texture UE4
- Unswizzle texture UE4
- Cook lại texture bằng Unreal Engine 4.19
- Fix lỗi texture DXT5
- Mod texture cho game Nintendo Switch
Noesis UE4 Texture Tool Là Gì?
Noesis là công cụ chuyên dùng để:
- Extract model
- Texture
- Animation
- Asset game
Ngoài các tính năng phổ biến, Noesis còn hỗ trợ xử lý texture tiled của Unreal Engine 4 trên Nintendo Switch.
Các texture này thường được:
- Swizzle
- Tile
- Block Linear
để tối ưu VRAM và tốc độ đọc dữ liệu trên Switch GPU.
Yêu Cầu Trước Khi Thực Hiện
Bạn cần:
- Unreal Engine 4.19
- Noesis đã patch plugin UE4
- File:
.uasset.uexp.ubulk
Lưu ý:
- Chỉ cần mở
.uasset - Các file còn lại sẽ tự load
Chỉnh Sửa Plugin UE4 Trong Noesis
File cần sửa:
plugins\python\fmt_ue4.pyThêm Function Swizzle
Thêm:
-ue4texungobFunction này hoạt động tương tự:
-ue4texgobNhưng dùng:
tile_blocklineargobthay cho:
untile_blocklineargobFix Lỗi Untile Texture
Trong function:
def ue4UntileTextureĐổi:
heightInBlocks = (height + (blockHeight - 1)) // blockHeightthành:
heightInBlocks = (height + 4 + (blockHeight - 1)) // blockHeightCách này giúp sửa lỗi texture UE4 bị lệch block khi unswizzle.
Fix Texture DXT5 Cho UE4 Switch
Trong function:
def ue4ConvertTextureDatathay đoạn:
elif pixelFormat == "PF_DXT5":
textureData = ue4UntileTexture(asset, width, height, 4, 4, 16, textureData, 8)bằng:
elif pixelFormat == "PF_DXT5":
if height <= 128:
textureData = ue4UntileTexture(asset, width, height, 4, 4, 16, textureData, 8)
elif 128 < height <= 256:
textureData = ue4UntileTexture(asset, width, height, 2, 2, 8, textureData, 8)
elif height > 256:
textureData = ue4UntileTexture(asset, width, height, 1, 1, 4, textureData, 8)Fix này giúp:
- Texture text hiển thị đúng
- Không bị lỗi block
- Hỗ trợ DXT5 tốt hơn
Kích Thước Texture Khuyến Nghị
Để tránh lỗi tile texture UE4:
Nên dùng:
- Bội số của 16
- Tốt nhất là bội số của 128
Ví dụ:
| Sai | Đúng |
|---|---|
| 499×258 | 512×272 |
| 300×150 | 320×160 |
Không nên:
- Texture nhỏ hơn 64×64
Thiết Lập Cook Texture Trong Unreal Engine 4
Thiết lập tốt nhất khi import texture:
Compression Settings
Chọn:
UserInterface2D (RGBA)
hoặc:
Default (DXT1/5)
Texture Group
UIsRGB
UncheckedMip Gen Settings
NoMipMapsCách Swizzle Texture UE4
Bước 1
Copy file từ thư mục:
Cookedvào thư mục Noesis.
Bước 2
Kéo file:
.uassetvào:
Swizzle.cmdBước 3
Noesis sẽ tạo PNG tiled.
Bước 4
Cook lại texture bằng UE4.
Cách Unswizzle Texture UE4
Bước 1
Copy asset vào thư mục Noesis.
Bước 2
Kéo:
.uassetvào:
Unswizzle.cmdBước 3
PNG đã untile sẽ được xuất ra.
Cách Kiểm Tra Texture Tile Có Đúng Không
Nếu texture bị lỗi:
- thử
Unswizzle-nop.bat - đổi kích thước texture
- dùng texture có padding
Một số dimension sẽ bị lỗi do chính Noesis.
Ví Dụ Mod Logo Octopath Traveler
Bạn có thể mod logo game Octopath Traveler bằng cách thay:
\Content\UI\Title\Texture\UiTX_Title_logo_00.uexp
\Content\UI\Title\Texture\UiTX_Title_logo_00.uassetSau khi cook lại texture tiled đúng chuẩn Switch, logo sẽ hiển thị chính xác trong game.
Tổng Kết
Việc swizzle và unswizzle texture UE4 cho Nintendo Switch trước đây khá khó khăn, nhưng nhờ Noesis và các patch trong fmt_ue4.py, việc mod texture đã dễ hơn rất nhiều.
Công cụ này đặc biệt hữu ích cho:
- Mod texture game UE4
- Việt hóa game Switch
- Thay UI
- Mod logo
- Chỉnh sửa texture DXT5
Nếu bạn thường xuyên mod game Unreal Engine 4 trên Switch, đây gần như là công cụ bắt buộc phải có.
