อะไรคือวิธีที่ทำได้ในการตั้งค่างบประมาณเนื้อหา (เช่นจำนวนรูปหลายเหลี่ยม) สำหรับเนื้อหาระดับในหัวเรื่อง 3 มิติ


13

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

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

สิ่งที่ทีมงานด้านเนื้อหาต้องการคือจำนวน / ขีด จำกัด ที่ยากต่อการทำงานเพื่อให้พวกเขามีความคาดหวังที่สมเหตุสมผลว่าเนื้อหาของพวกเขาเมื่อเข้าไปในเอ็นจิ้นจริงจะไม่หนักเกินไป เนื่องจากว่า 'มันขึ้นอยู่กับ' ไม่ใช่คำตอบที่มีประโยชน์โดยเฉพาะฉันต้องการได้ยินกลยุทธ์ที่ทำให้ฉันสามารถกำหนดขีด จำกัด ที่สามารถทำงานได้โดยไม่ต้องเป็น) ทำให้เข้าใจผิดหรือ b) ผิด


1
นี่คือ "การผลิตล่วงหน้า" มากกว่าสิ่ง "การผลิต"
Patrick Hughes

คำตอบ:


5

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

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

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


2
นั่นไม่ได้ให้งบประมาณจริงๆ: "ทำให้มันซับซ้อนตามที่คุณต้องการจากนั้นเราจะลดขนาดลงในภายหลัง" เป็นกลยุทธ์การผลิต : - /
MrCranky

16

ตกลงดังนั้นกลยุทธ์ของเราคือ:

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

สุดท้าย: ระมัดระวังตัวเลขของคุณ การแสดงผลไม่ใช่สิ่งเดียวที่เกมของคุณจะต้องทำดังนั้นให้ตัดสินใจว่าคุณต้องการใช้การเรนเดอร์แบบใดและกำหนดสัดส่วนของเป้าหมายของคุณ เช่นถ้าคุณต้องการใช้สองในสามของเฟรมที่การเรนเดอร์ 30fps ให้กำหนดเป้าหมาย 1s / 22ms (45 fps) ในการทดสอบ

จากทั้งหมดนั้นคุณควรจะสามารถยกฉากตัวอย่างได้ เช่นที่นี่เป็นฉากที่มีรูปหลายเหลี่ยม 200K, 5 ไฟคงที่และไม่เกิน 3 ไฟแบบไดนามิกต่อรุ่นที่มี 15 ตัวอักษร 50K polys และ 30 กระดูกและมันทำงานที่ 60fps และครอบครองหน่วยความจำ 30MB


2
tl; dr: เปรียบเทียบด้วยตนเอง;)
Nicol Bolas

+1 นี่เป็นวิธีเดียวในการสร้างและวัด
Patrick Hughes

จริงๆ? ฉันหวังว่าจะมีวิธีแก้ปัญหาที่ฉลาดกว่า / ราคาถูกกว่าที่เราไม่เคยคิดมาก่อน
MrCranky

@MrCranky น่าเสียดายใช่ หากคุณใช้เอ็นจิ้นที่มีอยู่คุณสามารถข้ามขั้นตอนเริ่มต้นได้โดยการวัดข้อมูลตัวอย่างที่มีอยู่และใช้เป็นพื้นฐานในการปรับแต่งตัวเลขสำหรับเกมของคุณโดยเฉพาะ - เกมทุกเกมนั้นแตกต่างกัน
Patrick Hughes

4

Vertex Count

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

สิ่งที่สำคัญที่สุดคือสิ่งที่เครื่องยนต์ทำกับแผ่นหลายเหลี่ยม

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

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

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

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

ออกแบบเกม

พิจารณาสิ่งต่อไปนี้เมื่อออกแบบเกมของคุณ:

  1. กำหนดประเภทเกม (เช่นแอ็คชั่น / ผจญภัย / แข่ง / สกูตเตอร์)
  2. กำหนดประเภทมุมมอง (เช่นบุคคลที่หนึ่ง / บุคคลที่สาม / Orthographic)
  3. กำหนดพลังการคำนวณสำหรับตลาดของคุณ (เช่นผู้ที่กระตือรือร้น / นักเล่นเกมทั่วไป)
  4. สร้างสไตล์ภาพที่คุณต้องการบรรลุ คุณต้องการให้มีลักษณะเช่น Crysis 2, Borderlands, Bloodforge หรือ Gears of War หรือไม่?
  5. กำหนดวัตถุสำคัญให้กับผู้เล่น อุปกรณ์ประกอบฉากของคุณจะเป็นศูนย์กลางของการโฟกัสหรือฉากหลังเท่านั้นหรือไม่?
  6. ตาข่ายภาพยังเป็นตาข่ายกันการชนกันหรือไม่?

เมื่อใช้เกมและประเภทการดูให้ตัดสินใจว่าความลึกของมุมมองจะเป็นอย่างไร คุณจะเห็นวัตถุที่อยู่ห่างไกลและมีความชัดเจนอะไรบ้าง คุณกำลังทำบางสิ่งด้วยมุมมองที่ จำกัด เช่นนักกีฬาที่เดินเล่นหรือไม่? (เช่น Gears of War) คุณกำลังทำอะไรกับโรมมิ่งอยู่บ้างไหม? (เช่น Skyrim)

เมื่อคุณรู้ว่ามันควรมีหน้าตาเป็นอย่างไรคุณสามารถค้นคว้าเกมที่คล้ายกันได้

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

ตัวอย่างของฉัน

ฉันใช้ UDK ทำให้เป็นเกมยิงคนที่สามอย่างช้าๆด้วยจำนวนผู้เล่นที่ จำกัด และ NPC บนหน้าจอตลอดเวลา สำหรับเรื่องนี้ฉันตั้งเป้าหมายไว้ที่ 10,000 รูปสามเหลี่ยมต่อผู้เล่น 5,000 รูปสามเหลี่ยมสำหรับศัตรูทั่วไปและถ้าฉันสร้างตัวละครสไตล์ "เจ้านาย" ประมาณ 15,000 นอกจากนี้อาวุธสำหรับบุคคลที่สามประมาณ 4,000 สามเหลี่ยมจะมีรายละเอียดสูงมาก ยานพาหนะประมาณ 10,000 สามเหลี่ยม ทุกอย่างจะต้องมีระดับของรายละเอียดเพราะฉันต้องการระยะทางดูไกล

ถ้าสร้างเป็นคนแรกฉันจะวางแขนบนสามเหลี่ยมประมาณ 2,000 รูปอาวุธประมาณ 5,000 สามเหลี่ยมด้วยการทำแผนที่ปกติสำหรับแต่ละคน

ข้อสรุป

นี่คือสิ่งที่ "ขึ้นอยู่กับ" อาจหมายถึง แต่ฉันคิดว่ามันอาจชี้แจงบางสิ่งที่ผู้คนมักจะสงสัย

  1. ใช้จำนวนรูปหลายเหลี่ยมเป็นแนวทาง
  2. ดูพื้นที่ที่สามารถแมปปกติแทนแบบจำลอง
  3. ระวังเมื่อวางพัดลมสามเหลี่ยมหากเป็นไปได้ให้สร้างแถบ
  4. ใช้รอยแยกบนตาข่ายน้อยลงเมื่อใช้การจับคู่แบบ UV โดยคำนึงถึงการแยกแถบ

2

วิธีหนึ่งที่ฉันคิดว่าใช้ฉากที่สร้างขึ้นโดยอัตโนมัติเพื่อสร้างข้อมูลสถิติที่คุณสามารถถอดรหัสข้อมูลที่คุณกำลังมองหา

  1. รับสินทรัพย์จำนวนมาก (อาจถูกสร้างขึ้นโดยอัตโนมัติ)

  2. สร้างเครื่องมือเพื่อสร้างฉากที่เครื่องยนต์ของคุณสามารถโหลดได้โดยใช้กลุ่มสินทรัพย์

  3. ใช้บอทซึ่งจะย้ายกล้องของคุณไปรอบ ๆ ฉาก คุณอาจต้องการใช้บ็อตอื่น ๆ เพื่อทำให้ฉากมีชีวิตชีวามากขึ้นรวมถึงแสงไฟ

  4. รวบรวมข้อมูลให้ได้มากที่สุดและโยนลงในฐานข้อมูล fps จำนวนโพลีการเปลี่ยนแปลง shader จำนวนไฟการโทรออกเป็นต้น

  5. สร้าง / รับเครื่องมือเพื่อแสดงข้อมูลในฐานข้อมูลของคุณได้หลายวิธี

ลิงก์นี้อาจเสนอแนวคิดเพิ่มเติม: เครื่องมือเพิ่มความตาย


ฉันชอบคำตอบนี้เนื่องจากมันมีส่วนที่แพงที่สุดในกลยุทธ์ของเรา: บางคนต้องใช้ความพยายามในการสร้างฉากที่เป็นตัวแทน การสร้างอัลกอริธึมหรือสคริปต์เพื่อวางสินทรัพย์ที่มีขนาดเหมาะสมจำนวนมากอย่างรวดเร็วจะช่วยเร่งความเร็วในการสร้างฉากทดสอบได้อย่างมาก ฉันจะยอมรับคำตอบที่ได้รับความนิยมมากกว่า แต่ฉันคิดว่าอันนี้คุ้มค่าแก่ความโปรดปราน
MrCranky
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.