Tài liệu hướng dẫn đặt tên sản xuất game
| Dự án: | Zendios Mobile Production | Phiên bản: | 2.2 (Parent-Asset Centric) |
| Đối tượng: | 2D Art, 3D Art, UI/UX, VFX, Audio, Dev | Ngôn ngữ: | Tiếng Anh (Asset & Code) |
1. Mục tiêu và Triết lý Kiến trúc v2.2
Tài liệu này định nghĩa hệ quy tắc đặt tên thống nhất cho dự án Unity Mobile Game dựa trên triết lý Parent-Asset Centric Grouping (Gom nhóm theo Asset Cha). Quy tắc này giải quyết triệt để các vấn đề sau:
- Tự động gom cụm khi sắp xếp: Khi sắp xếp theo thứ tự chữ cái (Alphabetical Sort) trong Unity, toàn bộ các tệp tin liên quan (VFX, Material, Audio, Sprite, Texture) của cùng một đối tượng sẽ tự động nằm sát cạnh nhau [1].
- Ngăn chặn lỗi tham chiếu đa nền tảng: Định hình nghiêm ngặt việc sử dụng kiểu chữ cho từng phân cấp để tránh lỗi Case-Sensitive khi build game trên hệ điều hành Android và iOS.
- Giảm thiểu thao tác thủ công: Định dạng tên tệp tin đóng vai trò là “chìa khóa” để Unity tự động thiết lập cấu hình nhập khẩu (Import Settings) cho Texture, Model và Audio mà không cần con người can thiệp [2].
2. Quy tắc phân dạng chữ viết (Casing Rules)
Dự án sử dụng chính xác 3 dạng viết chữ cho từng loại tài nguyên cụ thể dưới đây:
| Cấu trúc viết | Áp dụng cho | Công thức tổng quát | Ví dụ thực tế |
|---|---|---|---|
Pascal_Snake_Case | Prefabs chính & VFX Prefabs | [Object_Name]_[Optional_VFX]_[Descriptor] | Bubble_Cover_IceBubble_Cover_Ice_VFX_Crack |
lowercase_snake_case | Sub-assets (Material, SFX, Texture, Sprite) | [parent_name]_[asset_type]_[descriptor] | bubble_cover_ice_mat_crackbubble_cover_ice_sfx_crack |
PascalCase | C# Scripts & Namespaces | [ScriptName] | BubbleCoverIce |
LƯU Ý QUAN TRỌNG: Việc sử dụng sai kiểu chữ (ví dụ: đặt tên Prefab là bubble_cover_ice viết thường) sẽ bị hệ thống tự động kiểm duyệt (Linter) đánh dấu lỗi đỏ và từ chối nạp vào kho lưu trữ (Git/SVN).
3. Hướng dẫn chi tiết cho từng Vị trí Sản xuất
Dành cho Artist 2D & UI/UX
3.1. Quy tắc cho Sprite UI, Icon & Background
Toàn bộ tài nguyên 2D liên quan đến các đối tượng hoặc màn hình cụ thể phải lấy tên đối tượng/màn hình đó làm gốc viết thường:
- Sprite liên kết màn hình:
[screen_name]_spr_[component]_[state]
Ví dụ:ui_screen_home_spr_button_play_normal - Sprite liên kết đối tượng:
[object_name]_spr_[descriptor]
Ví dụ:bubble_cover_ice_spr(Gốc),bubble_cover_ice_spr_cracked(Khi nứt) - Icon đa dụng:
ico_[group]_[object]_[variant]
Ví dụ:ico_currency_coin_gold_a - Hình nền:
bg_[screen_or_theme]_[time_or_mood]
Ví dụ:bg_home_forest_day
Quy định Sprite Atlas: Tên Sprite Atlas đặt theo dạng atlas_[screen_or_group] (Ví dụ: atlas_ui_shop). Toàn bộ sprite con bên trong bắt buộc phải bắt đầu bằng tên nhóm đó để Unity tự đóng gói tối ưu RAM thiết bị.
Dành cho Artist 3D
3.2. Quy tắc cho Models, Materials & Textures
Các tài nguyên 3D phụ thuộc vào một Prefab cha sẽ lấy tên Prefab cha (viết thường) làm tiền đề đặt tên:
3.2.1. Đặt tên Mô hình 3D (Models) & LOD
- Tên file FBX mô hình chính:
[Object_Name_In_Pascal_Snake_Case].fbx(Ví dụ:Bubble_Cover_Ice.fbx) - Quy tắc LOD bắt buộc: Nếu file mô hình có chia cấp độ chi tiết, tên các Mesh Node con bên trong FBX bắt buộc phải kết thúc bằng hậu tố viết hoa
_LOD0,_LOD1[1].
Ví dụ:Bubble_Cover_Ice_LOD0,Bubble_Cover_Ice_LOD1.
3.2.2. Đặt tên Materials & Textures
| Loại tài nguyên | Công thức | Ví dụ thực tế | Cấu hình nhập Unity tối ưu Mobile [2] |
|---|---|---|---|
| Material | [parent_name]_mat_[descriptor] | bubble_cover_ice_mat_crack | Sử dụng Shader di động URP tương ứng. |
| Texture màu (Albedo) | [parent_name]_tex_[descriptor]_albedo | bubble_cover_ice_tex_crack_albedo | sRGB = True. Định dạng nén: ASTC 6×6. |
| Texture nổi (Normal) | [parent_name]_tex_[descriptor]_normal | bubble_cover_ice_tex_crack_normal | sRGB = False. Type = Normal Map. ASTC 6×6. |
| Texture gộp (ORM) | [parent_name]_tex_[descriptor]_orm | bubble_cover_ice_tex_shine_orm | sRGB = False. Type = Default. ASTC 6×6. |
Dành cho VFX & Animator
3.3. Quy tắc cho Visual Effects & Animations
Toàn bộ Prefab hiệu ứng và Clip chuyển động liên quan đến đối tượng chính phải lấy tên đối tượng chính làm gốc:
- VFX Prefabs (Dùng Pascal_Snake_Case):
[Parent_Name]_VFX_[Descriptor]
Ví dụ:Bubble_Cover_Ice_VFX_Crack,Bubble_Cover_Ice_VFX_Shine - Animation Clips:
anim_[parent_name_lowercase]_[action]
Ví dụ:anim_bubble_cover_ice_break - Animator Controllers:
ac_[parent_name_lowercase]
Ví dụ:ac_bubble_cover_ice
Dành cho Audio Designer
3.4. Quy tắc cho SFX & Music (Quản lý RAM Mobile)
Các tệp âm thanh liên đới trực tiếp tới hành động của một đối tượng game cụ thể:
Công thức đặt tên: [parent_name]_sfx_[action]
Ví dụ: bubble_cover_ice_sfx_burst, bubble_cover_ice_sfx_crack
LƯU Ý NHẬP KHẨU SFX: Để tránh trễ âm thanh và tràn bộ nhớ trên thiết bị di động, cấu hình tệp tin có từ khóa _sfx_ bắt buộc phải được thiết lập Load Type: Decompress On Load và định dạng nén ADPCM hoặc PCM.
Dành cho Unity Developer
3.5. Quy tắc viết mã C# & ScriptableObjects
3.5.1. Định dạng C# Scripts
- Tên tệp C# bắt buộc trùng 100% với tên lớp và viết theo dạng **`PascalCase`** (Không gạch dưới).
Ví dụ: ClassBubbleCoverIcenằm trong tệpBubbleCoverIce.cs. - Quy tắc đặt tên biến:namespace Zendios.BlockBlast.Gameplay { public sealed class BubbleCoverIce : UnityEngine.MonoBehaviour { [UnityEngine.SerializeField] private UnityEngine.GameObject _vfxCrackPrefab; // Biến private serialize dùng _camelCase private int _totalCrackHits; // Biến private dùng _camelCase public void ApplyCrackHit(int damageAmount) // Method dùng PascalCase, param dùng camelCase { _totalCrackHits += damageAmount; } } }
3.5.2. Định dạng ScriptableObject (Asset Instance)
Công thức: [parent_name_lowercase]_so_[purpose]
Ví dụ: bubble_cover_ice_so_config.asset
Dành cho QA & UA/Marketing
3.6. Quy tắc cho Game Data, QA Scenes & Store Assets
- QA/Test Scenes: Bắt buộc dùng tiền tố
qa_scene_và nằm trong thư mụcDevelopment/hoặcQA/để hệ thống build tự động loại bỏ (strip) khi đóng gói.
Ví dụ:qa_scene_bubble_ice_physics_test - QA Prefabs:
qa_pref_[purpose](Ví dụ:qa_pref_fps_counter) - UA/Marketing Video quảng cáo:
mkt_video_[placement]_[ratio]
Ví dụ:mkt_video_rewarded_9x16_en.mp4
4. Danh sách từ ngữ BỊ CẤM trong Production
Tuyệt đối không đưa các từ ngữ dưới đây vào bất kỳ tài nguyên nào được sử dụng trong phiên bản chính thức của trò chơi:
final, final2, final_final, new, newnew, copy, copy2, temp, test, demo, abc, xyz, object, stuff, fix, backup
5. Checklist kiểm duyệt trước khi Commit lên hệ thống
- Tên tệp tin không chứa khoảng trắng, không có dấu tiếng Việt, không chứa ký tự đặc biệt (chỉ dùng chữ cái, chữ số và
_). - Prefab chính sử dụng chính xác kiểu chữ
Pascal_Snake_Case. - Các sub-asset liên đới (Material, SFX, Texture, Sprite) sử dụng chính xác chữ viết thường
lowercase_snake_casebắt đầu bằng tên đối tượng cha. - Các sub-asset đã chứa đúng Infix định dạng:
_mat_,_sfx_,_tex_ở giữa tên file. - Không có tệp tin nào bị trùng tên hoặc thiếu phiên bản biến thể (như
_a,_b) để tránh đè tệp tin trong Unity. - C# Script tuân thủ nghiêm ngặt chuẩn
PascalCase, không chứa ký tự gạch dưới trong tên tệp tin.