Tất cả bài viết
Hướng dẫn · 7 min read

Thuần hóa một thư viện 100.000 asset trước khi nó thuần hóa bạn

Các quy ước đặt tên tự sắp xếp, thư mục so với thẻ, pipeline hình thu nhỏ, chính sách trùng lặp và di trú cơ hội: một hệ thống thực dụng để giữ một thư viện asset game khổng lồ luôn tìm được, và tại sao tốc độ tìm kiếm quyết định các màn chơi của bạn trông đa dạng đến đâu.

Illustration of an asset thumbnail grid with a search field and tag chips

Tóm lại: chất lượng môi trường bị giới hạn bởi cái mà nghệ sĩ có thể tìm thấy trong chưa đầy một phút. Qua vài nghìn asset, kỷ luật thư mục ngừng mở rộng: tìm kiếm cộng thẻ tiếp quản, hình thu nhỏ quyết định tốc độ quét, trùng lặp cần một chính sách chứ không phải một cuộc thanh trừng, và di trú phải cơ hội chứ không anh hùng. Đây là một hệ thống sống sót qua tăng trưởng, với các quy ước cụ thể đáng sao chép và lý do vì sao mỗi cái quan trọng ở quy mô.

Phòng đọc của một thư viện, các kệ trong ánh sáng ấm Một thư viện không phải một đống sách: nó là sách cộng một hệ thống tìm. Bộ sưu tập asset của bạn chỉ là một thư viện nếu phần thứ hai tồn tại; nếu không nó là một đống rất đắt tiền.

Cái giá thực của một thư viện lộn xộn

Khi tìm đúng tảng đá mất bốn phút, nghệ sĩ ngừng tìm sau một; các cảnh hội tụ về cùng hai mươi asset nhớ được trong khi hàng nghìn pack đã mua nằm chưa mở.

Thiệt hại thấy được trên màn hình: sự lặp lại mà người chơi cảm thấy, tiền tiêu cho các pack không bao giờ ra mắt, và một thứ thuế lặng lẽ trên mỗi giờ bài trí. Có một cách nói sắc hơn về quy tắc: một asset không thể tìm thấy trong khoảng một phút thực chất không tồn tại. Bạn đã trả cho nó, lưu nó, sao lưu nó, và nó sẽ không bao giờ xuất hiện trong một màn chơi. Tính tìm được không phải việc nhà; nó là cận trên của sự đa dạng thị giác của bạn. Hai studio với ngân sách asset y hệt sẽ ra mắt các game trông khác biệt rõ ràng nếu một bên tìm được asset của mình còn bên kia thì không.

Đặt tên: nhàm chán, sắp xếp được, không mơ hồ

Một quy ước chỉ hiệu quả nếu nó sắp xếp hữu ích trong một danh sách phẳng: tiền tố loại, danh mục, vật liệu hoặc loài, kích thước, chỉ số. Không dấu cách, không "final_v2_NEW".

Một hình thức đã được kiểm chứng:

SM_Rock_Granite_Large_01        (static mesh)
SM_Rock_Granite_Large_01_LOD1
T_Rock_Granite_D / _N / _R      (textures: diffuse, normal, roughness)
M_Rock_Granite                  (material)
MI_Rock_Granite_Mossy           (material instance)

Các quy tắc giữ nó hiệu quả ở quy mô: một từ cho mỗi khái niệm (Rock, không phải Rock/Stone/Boulder dùng thay nhau), đặt trường được lọc nhiều nhất lên sớm để sắp xếp nhóm hữu ích, đệm số không cho chỉ số (01, không phải 1) để 10 không sắp trước 2, và viết quy ước trên một trang mà ai cũng đọc ngày đầu. Sơ đồ chính xác quan trọng ít hơn nhiều so với việc có đúng một cái, và bắt đầu hôm nay, ở bất kỳ kích thước nào bạn đang có, vì gắn tên hồi tố lên 50.000 tệp là dự án không ai từng hoàn thành và ai cũng hối tiếc vì đã trì hoãn.

Thư mục nói một điều; thẻ nói phần còn lại

Một tệp sống trong MỘT thư mục nhưng có nhiều thuộc tính; thư mục nên mã hóa quyền sở hữu và pipeline (pack nào, dự án nào), thẻ mã hóa mọi thứ bạn sẽ tìm theo: quần xã, vật liệu, tâm trạng, kích thước, phong cách.

Chống lại tính đa chiều bằng các cây thư mục sâu hơn tạo ra nghĩa địa kinh điển Props/Nature/Trees/Dead/Moss/ nơi không gì tìm lại được nữa, vì một cây bạch dương chết phủ rêu thuộc về năm thư mục cùng lúc và chỉ có thể sống trong một, nên nó luôn ở bốn cái sai. Cách chia hiệu quả biến tìm kiếm thành lối vào chính và cây thư mục thành đường ống thuần túy.

Một từ vựng thẻ bao phủ phần lớn công việc môi trường nhỏ hơn các đội mong đợi: quần xã (rừng, sa mạc, đô thị…), vật liệu (gỗ, granit, gỉ sét…), tình trạng (nguyên vẹn, mòn, đổ nát), lớp kích thước, và phong cách: năm trục, có lẽ bốn mươi thuật ngữ, thỏa thuận một lần và thực thi. Kỷ luật là giữ từ vựng đóng: mỗi từ đồng nghĩa mới ai đó bịa ra ("phong hóa" cạnh "mòn") cắt một nửa giá trị của cả hai thẻ, vì tìm kiếm một cái sẽ trượt cái kia.

Hình thu nhỏ quyết định chất lượng tìm kiếm

Một danh sách tên tệp không phải một thư viện: hình thu nhỏ nhất quán (cùng góc, ánh sáng trung tính) cho mắt quét hàng trăm ứng viên mỗi phút, đó là tốc độ thực sự mà bài trí cần.

Thị giác con người đánh giá một lưới hình thu nhỏ nhanh hơn nhiều so với phân tích tên; chính sự nhất quán làm nó hiệu quả, vì các khác biệt trong asset vẫn thấy được khi cách trình bày y hệt. Một tảng đá chụp từ góc ngẫu nhiên trong ánh sáng ngẫu nhiên giấu chính hình dạng của nó; cùng tảng đá trong một góc nhìn ba-phần-tư chuẩn dưới ánh sáng trung tính tiết lộ nó tức thì. Render chúng theo lô; một pipeline hình thu nhỏ tự hoàn vốn trong tuần đầu của bất kỳ dự án lớn nào.

Hình thu nhỏ cũng chính là nơi quy mô làm đau: lướt qua một trăm nghìn cái đòi hỏi ảo hóa, bộ nhớ đệm, và một pipeline render ở nền thay vì đóng băng trình biên tập trong lúc bắt kịp. Vấn đề kỹ thuật đó theo nghĩa đen là lý do chúng tôi dựng một trình duyệt nội dung vào Numivo vẫn mượt ở một triệu asset, với hình thu nhỏ tức thì và gắn thẻ AI tùy chọn biến "mảnh vách đá phủ rêu đó ở đâu đó" thành một tìm kiếm hai từ. Vấn đề trình duyệt và vấn đề đặt tên là cùng một vấn đề ở các tầng khác nhau: cả hai đều về việc gấp lại khoảng cách giữa "tôi cần một thứ" và "tôi đang nhìn vào thứ đó".

Bức tường gạch của hàng nghìn đơn vị gần như y hệt Vấn đề trùng lặp, được vật chất hóa: hàng nghìn đơn vị gần như y hệt. Kỹ năng là giữ một phiên bản chuẩn tìm được và lặng lẽ hạ cấp phần còn lại, không xóa bất cứ thứ gì một bức tường vẫn đang tựa vào.

Trùng lặp: giữ một, gắn thẻ phần còn lại

Đừng xóa gần-trùng-lặp ngay khi thấy (tham chiếu gãy); chọn một phiên bản chuẩn, gắn các cái khác duplicate, lọc chúng khỏi tìm kiếm mặc định, và cho về hưu thật sự khi không gì tham chiếu chúng.

Mọi dự án sống lâu đều tích lũy các pack chồng lấn: bốn tảng granit từ bốn nhà cung cấp, ba cái thùng chỉ khác nhau một cái quai. Chính sách hai bước (hạ cấp bây giờ, xóa sau) bắt lấy thắng lợi tìm được ngay lập tức với rủi ro gãy bằng không: các trùng lặp biến mất khỏi tìm kiếm nhưng ở lại trên đĩa cho bất kỳ cảnh nào đã tham chiếu chúng. Chạy quét tham chiếu hằng quý; sáu tháng không tham chiếu thường dọn nghĩa địa nguyên loạt, an toàn.

Chế độ hỏng cần tránh là xóa trùng lặp ngay ngày bạn tìm thấy: luôn có thứ gì đó tham chiếu cái bạn đã xóa, một màn gãy, và đội học cách sợ dọn dẹp; sau đó không ai dọn gì nữa. Hạ-cấp-rồi-xóa giữ dọn dẹp an toàn, và dọn dẹp an toàn là kiểu dọn dẹp duy nhất tiếp tục xảy ra.

Di trú: từ hỗn loạn đến hệ thống

Đừng bao giờ dừng sản xuất cho một cuộc dọn dẹp big-bang; áp dụng quy ước cho mọi thứ MỚI kể từ hôm nay, rồi di trú nội dung cũ một cách cơ hội: bất cứ thứ gì một màn kéo vào đều được đổi tên và gắn thẻ trên đường qua.

Quy tắc cơ hội có một tính chất đẹp: các asset quan trọng di trú trước, theo định nghĩa, vì chúng là những cái đang được dùng. Bất cứ thứ gì không đụng tới sau một năm thuộc về kho lạnh, không phải kết quả tìm kiếm, và chưa bao giờ cần di trú. Các đội thay vào đó thử cuộc dọn dẹp anh hùng cuối tuần có xu hướng tạo ra một thư viện đổi tên một nửa, nghiêm ngặt tệ hơn cả hai thái cực, vì giờ kết quả tìm kiếm trộn hai quy ước và không cái nào đáng tin.

Con số thực địa đáng ăn cắp

  • Ngân sách tìm được: dưới 1 phút, nếu không asset về chức năng là không tồn tại
  • Từ vựng thẻ bao phủ công việc môi trường: ~5 trục, ~40 thuật ngữ đóng
  • Tốc độ quét hình thu nhỏ với render nhất quán: hàng trăm mỗi phút
  • Chính sách trùng lặp: hạ cấp ngay, xóa sau ~6 tháng không tham chiếu
  • Đặt tên: chỉ số đệm số không, một từ cho mỗi khái niệm, một trang quy tắc

Mini-FAQ

Thẻ AI có đủ tốt để thay thế gắn thẻ thủ công không? Đủ tốt để thay thế phần lớn: thẻ tự động gánh phần lớn (chủ thể, vật liệu, màu) trong khi con người thêm các phán đoán (hợp phong cách, thuật ngữ đặc thù dự án). Kết hợp bại từng cái đơn lẻ, đó là lý do gắn thẻ AI hiệu quả nhất như một tầng hỗ trợ tùy chọn thay vì thay thế toàn phần.

Một thư viện chung hay theo dự án? Thư viện nguồn chung, nhập theo dự án. Thư viện giữ mọi thứ với thẻ đầy đủ; một dự án chỉ kéo vào cái nó phát hành, giữ build gọn và thời gian cook ngắn. Trộn cả hai (một dự án tham chiếu toàn bộ thư viện) là cách kích thước build phình lên.

Còn quản lý phiên bản asset nhị phân? Thư viện là một khu vườn, không phải một kho lưu trữ: quản lý phiên bản các tệp nguồn trong pipeline DCC của bạn, giữ thư viện là chỉ-tốt-nhất-hiện-tại. Các phiên bản lịch sử sống trong kết quả tìm kiếm là nhiễu đeo bảng tên, và chúng làm chậm mọi tìm kiếm cho mọi người.

Làm sao khiến một đội thực sự tuân theo quy ước? Biến cái đúng thành cái dễ: một mẫu lưu/nhập điền sẵn mẫu tên, một bước lint đánh dấu các tệp ngoài quy ước, và hình thu nhỏ làm asset đúng quy ước tìm được và cái ngoài quy ước vô hình. Quy ước được thực thi bằng công cụ thì bám; quy ước được thực thi bằng cằn nhằn thì không.

Bắt đầu xấu, bắt đầu ngay: một trang giấy đặt tên, mười thẻ lõi, và hình thu nhỏ nhất quán bại một phân loại học đẹp bắt đầu quý sau. Thư viện là những khu vườn: nhổ cỏ nhỏ liên tục, không bao giờ một cuộc dọn dẹp anh hùng.