บทความทั้งหมด
บทเรียน · 7 min read

ฝึกไลบรารีแอสเซต 100,000 ชิ้นให้เชื่องก่อนที่มันจะฝึกคุณ

การตั้งชื่อที่จัดเรียงตัวเอง โฟลเดอร์เทียบกับแท็ก ไปป์ไลน์ภาพย่อ นโยบายรายการซ้ำ และการย้ายแบบฉวยโอกาส: ระบบใช้งานจริงเพื่อให้ไลบรารีแอสเซตเกมมหึมาค้นหาได้ และทำไมความเร็วในการค้นหาจึงตัดสินว่าเลเวลของคุณดูหลากหลายแค่ไหน

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

โดยสรุป: คุณภาพสภาพแวดล้อมถูกจำกัดด้วยสิ่งที่ศิลปิน หา เจอในไม่ถึงหนึ่งนาที เกินไม่กี่พันแอสเซต วินัยโฟลเดอร์เลิก ปรับขนาด การค้นหาบวกแท็กเข้ามาแทน ภาพย่อตัดสินความเร็วกวาดตา รายการซ้ำต้องการนโยบายไม่ใช่การกวาดล้าง และการย้ายต้อง ฉวยโอกาสไม่ใช่วีรกรรม นี่คือระบบที่รอดการเติบโต พร้อมกติกาที่เป็นรูปธรรมควรลอก และเหตุผลที่แต่ละข้อสำคัญในสเกล

ห้องอ่านหนังสือของห้องสมุด ชั้นวางในแสงอบอุ่น ห้องสมุดไม่ใช่กองหนังสือ มันคือหนังสือบวกระบบค้นหา คอลเลกชันแอสเซตของคุณเป็นห้องสมุดก็ต่อเมื่อส่วนที่สองมีอยู่; ไม่งั้นมันคือกองที่แพงมาก

ต้นทุนที่แท้จริงของไลบรารีรก

เมื่อการหาก้อนหินที่ถูกใช้เวลาสี่นาที ศิลปินเลิกหาหลังจากหนึ่ง ฉากมาบรรจบที่แอสเซตยี่สิบชิ้นเดิมที่จำได้ ขณะที่แพ็กที่ซื้อมาหลายพันนอนไม่ได้เปิด

ความเสียหายเห็นได้บนจอ: การซ้ำที่ผู้เล่นรู้สึกได้ เงินที่จ่ายให้แพ็กที่ไม่เคยออกเกม และภาษีเงียบ ๆ บนทุกชั่วโมงการจัดฉาก มีวิธีพูดกฎที่คมกว่า: แอสเซตที่หาไม่เจอในราวหนึ่งนาที ในทางปฏิบัติไม่มีอยู่ คุณจ่ายให้มัน เก็บมัน สำรองมัน และมันจะไม่มี วันปรากฏในเลเวล ความค้นหาได้ไม่ใช่งานบ้าน; มันคือขอบเขตบนของความหลากหลายทางภาพของคุณ สองสตูดิโอที่งบแอสเซตเท่ากันจะออก เกมที่ดูต่างกันชัดเจนถ้าฝ่ายหนึ่งหาแอสเซตของตนเจอและอีกฝ่ายหาไม่เจอ

การตั้งชื่อ: น่าเบื่อ จัดเรียงได้ ไม่กำกวม

กติกาทำงานเฉพาะถ้าจัดเรียงอย่างมีประโยชน์ในรายการแบน คำนำหน้าประเภท หมวดหมู่ วัสดุหรือสปีชีส์ ขนาด ดัชนี ไม่มีเว้นวรรค ไม่มี "final_v2_NEW"

รูปแบบที่พิสูจน์แล้ว:

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)

กติกาที่ทำให้มันใช้ได้ในสเกล: หนึ่งคำต่อหนึ่งแนวคิด (Rock ไม่ใช่ Rock/Stone/Boulder ใช้สลับกัน) วางฟิลด์ที่ ถูกกรอง มากสุด ไว้ต้นเพื่อให้การจัดเรียงจัดกลุ่มมีประโยชน์ เติมศูนย์ให้ดัชนี (01 ไม่ใช่ 1) เพื่อไม่ให้ 10 เรียงก่อน 2 และเขียน กติกาลงหนึ่งหน้าที่ทุกคนอ่านวันแรก แบบแผนที่แน่นอนสำคัญน้อยกว่าการมีเพียงหนึ่งเดียวมาก และเริ่ม วันนี้ ที่ขนาดใดก็ตามที่ คุณเป็น เพราะการใส่ชื่อย้อนหลังลง 50,000 ไฟล์คือโปรเจกต์ที่ไม่มีใครทำเสร็จและทุกคนเสียใจที่ผัดผ่อน

โฟลเดอร์พูดสิ่งเดียว; แท็กพูดที่เหลือ

ไฟล์หนึ่งอยู่ในโฟลเดอร์เดียวแต่มีหลายคุณสมบัติ โฟลเดอร์ควรเข้ารหัสความเป็นเจ้าของและไปป์ไลน์ (แพ็กไหน โปรเจกต์ ไหน) แท็กเข้ารหัสทุกสิ่งที่คุณจะค้นหาด้วย: ไบโอม วัสดุ อารมณ์ ขนาด สไตล์

การต่อสู้ความหลายมิติด้วยต้นไม้โฟลเดอร์ที่ลึกกว่าผลิตสุสานคลาสสิก Props/Nature/Trees/Dead/Moss/ ที่ไม่มีอะไรถูกหาเจออีก เพราะเบิร์ชตายมีมอสเป็นของห้าโฟลเดอร์พร้อมกันและอยู่ได้เพียงหนึ่ง จึงอยู่ในสี่ที่ผิดเสมอ การแบ่งที่ใช้ได้ทำให้การค้นหาเป็นทาง เข้าหลักและต้นไม้โฟลเดอร์เป็นเพียงท่อ

คำศัพท์แท็กที่ครอบคลุมงานสภาพแวดล้อมส่วนใหญ่เล็กกว่าที่ทีมคาด: ไบโอม (ป่า ทะเลทราย เมือง…), วัสดุ (ไม้ หินแกรนิต เป็น สนิม…), สภาพ (ไร้ตำหนิ สึก ซาก), ระดับขนาด และ สไตล์ ห้าแกน อาจสี่สิบคำ ตกลงครั้งเดียวและบังคับใช้ วินัยคือการ รักษาคำศัพท์ ปิด: คำพ้องใหม่ทุกคำที่ใครสักคนคิด ("ผุกร่อน" ข้าง "สึก") ตัดค่าของทั้งสองแท็กครึ่งหนึ่ง เพราะค้นหาหนึ่งพลาดอีกหนึ่ง

ภาพย่อตัดสินคุณภาพการค้นหา

รายชื่อไฟล์ไม่ใช่ไลบรารี ภาพย่อที่สอดคล้อง (มุมเดียวกัน แสงกลาง) ให้ตากวาดผู้สมัครหลายร้อยต่อนาที ซึ่งเป็นความ เร็วจริงที่การจัดฉากต้องการ

การมองเห็นของมนุษย์ประเมินกริดภาพย่อเร็วกว่าการแจงชื่อมาก; ความสอดคล้อง คือสิ่งที่ทำให้มันได้ผล เพราะความต่างในแอสเซตยังเห็น ได้เมื่อการนำเสนอเหมือนกัน ก้อนหินถ่ายจากมุมสุ่มในแสงสุ่มซ่อนรูปทรงของตัวเอง; ก้อนหินเดียวกันในมุมสามส่วนสี่มาตรฐานใต้แสงกลาง เผยมันทันที เรนเดอร์แบบแบตช์ ไปป์ไลน์ภาพย่อคืนทุนในสัปดาห์แรกของโปรเจกต์ใหญ่ใด ๆ

ภาพย่อยังเป็นที่ที่สเกลกัดพอดี: การเรียกดูหนึ่งแสนอันเรียกร้องการทำเสมือน การแคช และไปป์ไลน์ที่เรนเดอร์เบื้องหลังแทนที่จะแช่แข็ง เอดิเตอร์ขณะไล่ตาม ปัญหาวิศวกรรมนั้นตามตัวอักษรคือเหตุผลที่เราสร้างเบราว์เซอร์เนื้อหาเข้าไปใน Numivo ที่ยังลื่นที่ หนึ่งล้านแอสเซต ด้วยภาพย่อทันทีและการแท็ก AI ตัวเลือกที่เปลี่ยน "ชิ้นหน้าผามีมอสตรงไหนสักที่" เป็นการค้นหาสองคำ ปัญหาเบราว์เซอร์ และปัญหาการตั้งชื่อคือปัญหาเดียวกันในชั้นต่างกัน: ทั้งสองเกี่ยวกับการยุบระยะระหว่าง "ฉันต้องการสิ่งหนึ่ง" กับ "ฉันกำลังมองสิ่งนั้น"

ผนังอิฐจากหน่วยเกือบเหมือนกันหลายพัน ปัญหารายการซ้ำ ทำให้เป็นกายภาพ: หน่วยเกือบเหมือนกันหลายพัน ทักษะคือรักษารุ่นบัญญัติที่ค้นหาได้หนึ่งรุ่นและลดชั้นที่เหลืออย่าง เงียบ ๆ ไม่ใช่ลบอะไรที่ผนังยังพิงอยู่

รายการซ้ำ: เก็บหนึ่ง แท็กที่เหลือ

อย่าลบเกือบซ้ำทันทีที่เห็น (การอ้างอิงพัง) เลือกรุ่นบัญญัติ แท็กที่เหลือ duplicate กรองออกจากการค้นหาเริ่มต้น และปลดจริงเมื่อไม่มีอะไรอ้างอิงมัน

ทุกโปรเจกต์อายุยืนสะสมแพ็กที่ทับซ้อน: หินแกรนิตสี่ก้อนจากผู้ขายสี่ราย ถังสามใบที่ต่างกันแค่หูจับ นโยบายสองขั้น (ลดชั้นตอนนี้ ลบ ทีหลัง) จับชัยชนะความค้นหาได้ทันทีที่ความเสี่ยงพังศูนย์ รายการซ้ำหายจากการค้นหาแต่อยู่บนดิสก์สำหรับทุกฉากที่อ้างอิงมันแล้ว รัน การกวาดอ้างอิงทุกไตรมาส; หกเดือนไร้อ้างอิงมักล้างสุสานเป็นชุดอย่างปลอดภัย

โหมดความล้มเหลวที่ต้องเลี่ยงคือลบรายการซ้ำในวันที่คุณพบ: มีบางอย่างอ้างอิงตัวที่คุณลบเสมอ เลเวลพัง และทีมเรียนรู้ที่จะกลัวการ ทำความสะอาด หลังจากนั้นไม่มีใครทำความสะอาดอะไร ลดชั้น-แล้ว-ลบรักษาการทำความสะอาดให้ปลอดภัย และการทำความสะอาดที่ปลอดภัยคือการ ทำความสะอาดเดียวที่เกิดขึ้นต่อไป

การย้าย: จากความโกลาหลสู่ระบบ

อย่าหยุดการผลิตเพื่อการล้างครั้งเดียวใหญ่โต ใช้กติกากับทุกสิ่งที่ ใหม่ ตั้งแต่วันนี้ แล้วย้ายเนื้อหาเก่าอย่างฉวย โอกาส: อะไรก็ตามที่เลเวลดึงเข้ามาได้ถูกเปลี่ยนชื่อและแท็กระหว่างทาง

กติกาฉวยโอกาสมีคุณสมบัติงดงาม: แอสเซตที่สำคัญย้ายก่อน ตามนิยาม เพราะมันคือตัวที่ถูกใช้ อะไรก็ตามที่ไม่ถูกแตะหลังหนึ่งปีเป็น ของที่เก็บเย็น ไม่ใช่ผลค้นหา และไม่เคยต้องย้ายเลย ทีมที่แทนนั้นลองการล้างวีรกรรมวันหยุดมักผลิตไลบรารีเปลี่ยนชื่อครึ่งทาง แย่กว่า สุดขั้วทั้งสองอย่างเคร่งครัด เพราะตอนนี้ผลค้นหาผสมสองกติกาและไว้ใจไม่ได้สักอัน

ตัวเลขภาคสนามที่ควรขโมย

  • งบความค้นหาได้: ต่ำกว่า 1 นาที ไม่งั้นแอสเซตในเชิงหน้าที่ไม่มีอยู่
  • คำศัพท์แท็กที่ครอบคลุมงานสภาพแวดล้อม: ~5 แกน, ~40 คำปิด
  • อัตรากวาดภาพย่อด้วยการเรนเดอร์สอดคล้อง: หลายร้อยต่อนาที
  • นโยบายรายการซ้ำ: ลดชั้นทันที ลบหลัง ~6 เดือน ไร้อ้างอิง
  • การตั้งชื่อ: ดัชนีเติมศูนย์ หนึ่งคำต่อหนึ่งแนวคิด กฎหนึ่งหน้า

มินิ FAQ

แท็ก AI ดีพอจะแทนการแท็กด้วยมือไหม? ดีพอจะแทน ส่วนใหญ่ แท็กอัตโนมัติแบกส่วนใหญ่ (ประธาน วัสดุ สี) ขณะที่มนุษย์เพิ่ม การตัดสิน (ความเข้ากันของสไตล์ คำเฉพาะโปรเจกต์) การรวมกันชนะแต่ละอย่างเดี่ยว จึงเป็นเหตุผลที่การแท็ก AI ทำงานดีที่สุดเป็นชั้น ช่วยแบบสมัครใจ ไม่ใช่การแทนเต็ม

ไลบรารีแชร์หนึ่งหรือต่อโปรเจกต์? ไลบรารีต้นทางแชร์ นำเข้าต่อโปรเจกต์ ไลบรารีเก็บทุกอย่างพร้อมแท็กเต็ม; โปรเจกต์ดึงเฉพาะที่ออก เกม รักษาบิลด์เพรียวและเวลาคุกสั้น การผสมทั้งสอง (โปรเจกต์ที่อ้างอิงทั้งไลบรารี) คือวิธีที่ขนาดบิลด์บวม

แล้วการทำเวอร์ชันแอสเซตไบนารีล่ะ? ไลบรารีคือสวน ไม่ใช่คลังเก็บ: ทำเวอร์ชันไฟล์ ต้นทาง ในไปป์ไลน์ DCC ของคุณ รักษาไลบรารี เป็นดีที่สุดปัจจุบันเท่านั้น เวอร์ชันประวัติศาสตร์ที่อยู่ในผลค้นหาคือสัญญาณรบกวนติดป้ายชื่อ และทำทุกการค้นหาช้าลงสำหรับทุกคน

จะให้ทีมทำตามกติกาจริง ๆ อย่างไร? ทำสิ่งที่ถูกให้เป็นสิ่งที่ง่าย: เทมเพลตบันทึก/นำเข้าที่เติมแพตเทิร์นชื่อไว้ล่วงหน้า ขั้น lint ที่ทำเครื่องหมายไฟล์นอกกติกา และภาพย่อที่ทำให้แอสเซตตามกติกาค้นหาได้และนอกกติกามองไม่เห็น กติกาที่บังคับด้วยเครื่องมือติดทน; กติกาที่บังคับด้วยการจู้จี้ไม่ติด

เริ่มน่าเกลียด เริ่มตอนนี้: แผ่นตั้งชื่อหนึ่งหน้า แท็กแกนสิบ และภาพย่อสอดคล้อง ชนะอนุกรมวิธานสวยที่เริ่มไตรมาสหน้า ไลบรารีคือสวน การถอนวัชพืชเล็ก ๆ ตลอด ไม่เคยการล้างวีรกรรมครั้งเดียว