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

งบประมาณประสิทธิภาพสำหรับศิลปะสภาพแวดล้อม: ตัวเลขก่อนความงาม

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

Illustration of a performance gauge above stacked millisecond budget bars

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

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

งบเวลาเฟรม ไม่ใช่รูปหลายเหลี่ยม

งบรูปหลายเหลี่ยมเป็นของโบราณ: GPU สมัยใหม่สำลัก draw call, overdraw, เงา และแบนด์วิดท์หน่วยความจำนานก่อน สามเหลี่ยมดิบ จงงบสิ่งที่คุณวัดจริง: มิลลิวินาทีต่อระบบ ต่อมุมมอง

เกม 60 fps มี 16.6 มิลลิวินาที ต่อเฟรม; ที่ 30 fps คือ 33.3 มิลลิวินาที นั่นคือทั้งงบ ที่ทุกอย่างแบ่งกัน: เกมเพลย์ ฟิสิกส์ AI VFX UI และสภาพแวดล้อม สไลซ์ของสภาพแวดล้อมคือการต่อรองกับการเรนเดอร์และเกมเพลย์ แต่มันต้องเป็นตัวเลข ที่ตกลง และเขียนไว้ ไม่งั้นทุกการถกว่าฉากหนึ่ง "แพงไป" ไหมก็ยุบลงเป็นรสนิยมและอาวุโส ข้าง ๆ เวลาเฟรม จงให้เพดานกับปริมาณที่มัดมัน:

  • draw call ต่อมุมมอง (มัด CPU นานก่อน GPU จะเต็ม)
  • หน่วยความจำเท็กซ์เจอร์และเมช ต่อโซนสตรีมมิง (ตัวเลขที่ตัดสินว่าคุณสตรีมหรือกระตุก)
  • แสงที่ทอดเงา ในมุมมอง
  • จุดร้อน overdraw พืชพรรณและ VFX เป็นผู้ต้องสงสัยประจำ

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

แบ่งเฟรมเหมือนแบ่งพาย ด้วยมิลลิวินาที

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

การแบ่งเริ่มต้นที่ใช้ได้สำหรับเกม 60 fps เจรจาใหม่ต่อโปรเจกต์: สภาพแวดล้อมรวม 6–8 มิลลิวินาที โดยภูมิประเทศ ~1.5 พืชพรรณ ~2–2.5 พร็อพและโครงสร้าง ~1.5 น้ำและบรรยากาศ ~1 ประเด็นไม่ใช่ตัวเลขแม่นยำเหล่านี้ แต่คือเมื่อป่าวัดได้ 4 มิลลิวินาทีต่อสไลซ์ 2.5 มิลลิวินาที การสนทนากลายเป็น "เราดึงคันโยกไหน" แทน "นี่ความผิดใคร"

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

วัดที่สามกล้องคงที่

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

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

บันทึกตำแหน่งกล้องในแมปเพื่อให้ใครก็ทำซ้ำช็อตเป๊ะได้ "รันดีบนเครื่องผมที่มุมหนึ่ง" ไม่ใช่ข้อมูล; "กล้องงบ 2 วัดได้ 9.2 มิลลิวินาที บนสเปกต่ำสุด ขึ้นจาก 7.8 เมื่อสัปดาห์ก่อน" คือรายงานบั๊กที่มีผู้ต้องสงสัย

ทำให้งบปรากฏตรงที่งานเกิดขึ้น

งบใน wiki ตายแล้ว มันมีชีวิตเป็นโอเวอร์เลย์สถิติระหว่างการจัดฉาก การตรวจเทียบเพดานก่อนเมิร์จคอนเทนต์ และคำเตือน เมื่อการเบคจะทะลุจำนวนอินสแตนซ์

ศิลปินยินดีเข้างบเมื่อฟีดแบ็กทันที และเคืองมันเมื่อมันมาเป็นตั๋วบั๊กสามเดือนหลังงานส่งมอบ ฝั่งเครื่องมือสำคัญตรงนี้แบบเงียบแต่ชี้ขาด: เมื่อ scatter และ blending เบคเป็นพรีมิทีฟเนทีฟของเอนจิน (เมช instance และ foliage ธรรมดา อย่างที่ Numivo ทำ) โปรไฟเลอร์ที่คุณมีบอกความจริงไร้การแต่งเติมเกี่ยวกับมัน โดยไม่มี runtime ปลั๊กอินทำให้ตัวเลขขุ่น และทุกคันโยกมาตรฐาน (ระยะ cull, LOD, จำนวนอินสแตนซ์) ใช้ได้ไม่เปลี่ยน งบที่คุณวัดได้แค่ผ่านกล่องดำคืองบที่คุณจะเลิกเชื่ออย่างเงียบ ๆ

จังหวะรีวิวที่ติดทน

แคปเจอร์สามกล้องงบรายสัปดาห์ (ห้านาที) การตรวจเพดานอัตโนมัติเมื่อเมิร์จคอนเทนต์ และรีวิวเพดานเองรายเดือน งบคือ การประมาณ และการแก้ไขอย่างซื่อสัตย์ชนะการละเมิดเงียบ

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

เมื่อตัวเลขกลายเป็นแดง

ดึงคันโยกตามลำดับความคุ้มค่า ระยะ cull และการตั้งค่าเงาก่อน (นาที ชัยชนะใหญ่) แล้ว LOD และ impostor แล้วจำนวน อินสแตนซ์ และท้ายสุดค่อยเป็นตัวศิลปะเอง

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

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

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

  • เฟรมที่ 60 fps: 16.6 มิลลิวินาที สภาพแวดล้อมมักเจรจา 6–8 มิลลิวินาที
  • การแบ่งย่อยสภาพแวดล้อมที่ใช้ได้: ภูมิประเทศ 1.5 / พืชพรรณ 2–2.5 / พร็อพ 1.5 / น้ำและบรรยากาศ 1 (มิลลิวินาที)
  • กล้องงบต่อแมป: 3 (วิว ต่อสู้ ภายใน) บันทึกในแมป
  • ต้นทุนวัดรายสัปดาห์: ~5 นาที; คุณค่า: เส้นแนวโน้มแทนการเถียง
  • ลำดับคันโยกเมื่อแดง: culling → เงา → LOD → อินสแตนซ์ → ศิลปะ

มินิ FAQ

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

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

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

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

งบไม่ใช่ขีดจำกัดต่อความเป็นศิลปิน มันคือเหตุผลที่ฉากสวยยังดูสวยที่ 60 fps บนฮาร์ดแวร์ที่ผู้เล่นมีจริง ทีมที่มองประสิทธิภาพเป็นข้อจำกัด การออกแบบร่วมส่งมอบเกมสวยกว่าทีมที่มองมันเป็นบอสสุดท้าย