เราจะทำอย่างไร World of Warships: การส่งออกอัตโนมัติและการตรวจสอบเนื้อหา BigWorld Engine - เอ็นจิ้นเกม - ไฟล์สำหรับนักพัฒนาเกม - การสร้างเกม เอ็นจิ้นเกมโลกใหญ่

ในโพสต์นี้ เรายังคงถามคำถามกับผู้พัฒนาเกมต่อไป ครั้งนี้ สัมภาษณ์โดย Mikhail Zhivets ผู้อำนวยการด้านเทคนิคของโครงการ "" บริษัท Wargaming.net.

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

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

"NVIDIA โลก": การ์ดแสดงผลจาก NVIDIA และ ATI แตกต่างกันอย่างมากในแง่ของการเขียนโปรแกรมหรือไม่? เป็นไปได้ไหมที่จะเขียนผ่าน DirectX หรือ OpenGL และรับโค้ดที่มีประสิทธิภาพสำหรับผู้ขายทั้งสองราย หรือคุณจำเป็นต้องสร้างเวอร์ชันต่างๆ ของฟังก์ชันสำหรับผู้ขายแต่ละราย คุณใช้แนวทางใด

ม.จ.:การ์ดวิดีโอจากผู้ผลิตหลายรายมีของตัวเอง คุณสมบัติเฉพาะ... ซึ่งสามารถรองรับรูปแบบพื้นผิวพิเศษหรือการเข้าถึงพื้นผิวจากจุดสุดยอดเชดเดอร์ ในเวลาเดียวกัน เมื่อใช้ฟังก์ชันทั่วไปของ DirectX หรือ OpenGL API ความแตกต่างระหว่าง GPU ของผู้จำหน่ายทั้งสองรายนั้นน้อยมาก และด้วยผลจากความแตกต่างระหว่างการ์ดแสดงผลจาก ATI และ NVIDIA จึงมีโอกาสมากกว่า กว่าข้อจำกัดใดๆ เท่าที่ "การดูแลเป็นพิเศษ" เกี่ยวข้องกับเครื่องยนต์ BigWorld ไม่ได้ให้ข้อได้เปรียบที่ชัดเจนสำหรับผู้ขายรายใดรายหนึ่ง

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

ม.จ.:ความแตกต่างส่วนใหญ่มาจากคุณสมบัติของฮาร์ดแวร์ (ความแตกต่างในความกว้างของบัสหน่วยความจำ จำนวนหน่วย ROP หน่วย shader ฯลฯ) ตลอดจนการใช้งานไดรเวอร์ ยิ่งโหลดบน CPU และ GPU ได้สมดุลและมีการจัดระเบียบเวทีได้ดีเท่าไร คุณสมบัติของการ์ดวิดีโอก็จะยิ่งน้อยลงเท่านั้นที่จะส่งผลต่อประสิทธิภาพโดยรวม ซึ่งรวมถึงทัศนคติแบบลีนต่อจำนวนและความละเอียดของพื้นผิว การดึงออกจากอนุภาคและวัตถุโปร่งใสต่ำ การใช้ LOD การจัดกลุ่มวัตถุเป็นแบทช์ และอื่นๆ - ทั้งหมดนี้อยู่ในระดับที่เท่าเทียมกันบนไหล่ของผู้พัฒนาเครื่องยนต์ และนักออกแบบเกม

"NVIDIA โลก": เมื่อทดสอบการ์ดแสดงผลตามกฎแล้วจะใช้เกมชุดเดียวกันโดยประมาณ ลักษณะทั่วไปนี้มีความเหมาะสมเพียงใดเมื่อแสดงผลการทดสอบสำหรับประเภทต่างๆ เช่น เกมยิง 3 มิติ เกมสวมบทบาทบุคคลที่สาม และกลยุทธ์ เกณฑ์มาตรฐานที่เป็นที่นิยมบ่งบอกถึงประสิทธิภาพของเกมของคุณหรือไม่?

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

เมื่อดูตัวเลข FPS ในเกมอย่าง Crysis หรือ Need for Speed ​​ล่าสุด คุณสามารถจินตนาการถึงประสิทธิภาพของเกมสมัยใหม่อื่นๆ ได้หลายเกม ดังนั้นที่นี่เราสามารถพูดได้อย่างมั่นใจว่าการทดสอบเหล่านี้ค่อนข้างจะบ่งชี้ได้ เกมในระดับนี้สามารถใช้เป็นเกณฑ์มาตรฐานสำหรับการ์ดวิดีโอได้เนื่องจากการตั้งค่าคุณภาพสูงจะโหลดระบบย่อยกราฟิกได้สูงสุด

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

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

"NVIDIA โลก": ภาระของ CPU จะเพิ่มขึ้นเมื่อเปิดใช้งานการกรองแบบแอนไอโซทรอปิกหรือไม่ เช่นเดียวกับการลบรอยหยักแบบเต็มฉาก หากจำเป็นต้องวาดฉากทั้งฉากด้วยความละเอียดเป็นสองเท่า ในทางทฤษฎี จำนวนของสามเหลี่ยมก็จะเพิ่มขึ้นเช่นกัน

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

"NVIDIA โลก": กระบวนการโอนการคำนวณไปยัง GPU shader ดำเนินมาเป็นเวลานานมาก ตอนแรกเป็น T&L ซึ่งเป็นการตัดทอน ทุกวันนี้มีการพิจารณาแอนิเมชั่นของโมเดลบน GPU หรือไม่ อย่างแรกเลย อะไรยังคงอยู่ในแง่ของเอ็นจิ้น 3 มิติสำหรับการคำนวณบน CPU (คุณคาดหวังอะไรกับ GPU นอกเหนือจาก T&L?)

ม.จ.:เอ็นจิ้นที่ใช้ในโปรเจ็กต์ของเราไม่ได้ทำการคำนวณใดๆ บน GPU ในทางทฤษฎี ถ้าสมมุติว่าเราต้องคำนวณฟิสิกส์ของวัตถุจำนวนมากในแบบเรียลไทม์ เราก็สามารถใช้ PhysX ตัวเดียวกัน ซึ่งทำการคำนวณบน NVIDIA GPU ได้อย่างสมบูรณ์แบบ แต่เนื่องจากความเฉพาะเจาะจงของโปรเจ็กต์ เราจึงมีความสามารถด้าน CPU เพียงพอ

"NVIDIA โลก": ในช่วงไม่กี่ปีที่ผ่านมา ตัวเร่งความเร็ววิดีโอได้กลายเป็น "อัจฉริยะ" พวกเขาใช้วิธีการตัดพื้นฐานที่มองไม่เห็นเช่น: z-buffer แบบลำดับชั้น พวกเขามีประสิทธิภาพแค่ไหน? เป็นไปได้ไหมที่จะใส่รูปสามเหลี่ยมทั้งหมดลงในตัวเร่งวิดีโอเพื่อดึงทุกอย่างด้วยตัวเอง ในยุคของเกม 3D เกมแรก (ซีรีส์ Quake และ Unreal) ใช้วิธีการที่ซับซ้อนเพื่อลดการเรนเดอร์สามเหลี่ยม ต้นไม้ BSP ฯลฯ ตอนนี้มีความเกี่ยวข้องเพียงใด

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

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

"NVIDIA โลก": ครั้งหนึ่งมีสถานการณ์เช่นนี้ในช่วงวิกฤต P4 ที่คอขวดของระบบคือโปรเซสเซอร์ซึ่งไม่สามารถ "โหลด" ตัวเร่งความเร็ววิดีโอและเพิ่ม FPS ในเกมก่อนอื่น ต้องระบุรุ่น CPU ระดับบนสุด มีความสัมพันธ์ที่คล้ายคลึงกันระหว่าง CPU และ GPU ในตอนนี้ หรือมีโปรเซสเซอร์ที่ก้าวข้ามระดับประสิทธิภาพที่สำคัญบางอย่างและเราสามารถใช้โปรเซสเซอร์ราคาไม่แพงและการ์ดวิดีโออันทรงพลังได้หรือไม่ หมายถึงเกมที่เน้นกราฟิก เช่น Quake และ Doom

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

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

"NVIDIA โลก": DirectX จากเวอร์ชันหนึ่งไปยังอีกเวอร์ชันหนึ่งกลายเป็นเหมือนเอ็นจิ้นกราฟิกมากขึ้นเรื่อยๆ จริงหรือไม่ที่ปัจจุบันโปรแกรม 3D ประกอบด้วยการเรียก Direct3D API และการคำนวณส่วนใหญ่ดำเนินการในนั้น ให้คะแนนเท่าไหร่ รุ่นล่าสุด DirectX? มันเกือบจะเป็นเอ็นจิ้นที่เต็มเปี่ยมแล้วและจะต้องใช้อีกกี่เวอร์ชัน?

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

Direct3D เวอร์ชันที่ 10 นำเสนอระดับนามธรรมใหม่เมื่อทำงานกับทรัพยากรและความสามารถเพิ่มเติมเมื่อพัฒนา shader เทคนิคเช่น Stream Output จะพร้อมใช้งาน ในขณะเดียวกัน D3D ก็ยังคงเหมือนเดิม นั่นคือ API ระดับต่ำ ซึ่งนักพัฒนาสามารถออกแบบเอ็นจิ้นเกมสำหรับงานเฉพาะได้

"NVIDIA โลก": โดยทั่วไป, เมื่อเร็ว ๆ นี้มี "โลกาภิวัตน์" ของเกมและเอ็นจิ้น 3 มิติ มีแพลตฟอร์มยอดนิยมหลายแห่งที่สร้างเกมมากมาย นี่เป็นกระบวนการที่เป็นรูปธรรมหรือไม่? เหมาะสมหรือไม่ที่นักพัฒนาซอฟต์แวร์จะเขียนเอ็นจิ้นของตนเองในตอนนี้ เมื่อคุณสามารถให้สิทธิ์ใช้งานเครื่องมือแบบสมบูรณ์พร้อมใช้ ตัวอย่างเช่น มีการเปิดตัว Unreal Engine เวอร์ชันอื่นซึ่งมีการดาวน์โหลดไปแล้วหลายหมื่นครั้ง นานแค่ไหนกว่าที่เกมทั้งหมดจะใช้เอ็นจิ้น 3D หนึ่งหรือสองตัว?

ม.จ.:เราใช้ BigWorld และมีความสุขกับมันจนถึงตอนนี้ ในเรื่อง "โลกาภิวัตน์" ปาฏิหาริย์ไม่น่าจะเกิดขึ้น และ CryTek, Epic และคนอื่นๆ อีกจำนวนหนึ่งตัดสินใจที่จะมอบส่วนแบ่งของตลาดเอ็นจิ้นเกมให้กันและกัน อย่าลืมว่าตามกฎแล้วเกมที่สร้างด้วยเอ็นจิ้นเดียวกันนั้นคล้ายกันมากซึ่งไม่ใช่สิ่งที่ดีเสมอไป เป็นไปได้มากว่าจำนวนเครื่องยนต์จะเพิ่มขึ้นเท่านั้นโดยเริ่มจากความเชี่ยวชาญเฉพาะทางที่แคบลง ไม่ว่าในกรณีใดจะมีเอ็นจิ้นที่ไม่ซ้ำใครอยู่เสมอ

"NVIDIA โลก": จริงหรือไม่ที่การ์ดจอรุ่นล่าสุดมีประสิทธิภาพมากในแง่ของพลังดิบและไม่แตกต่างจากรุ่นก่อนในแง่ของเอฟเฟกต์สามารถเปิดเผยศักยภาพของพวกเขาก่อนอื่นบนระบบที่มีจอภาพขนาดใหญ่ (จาก 1920x1200) ในโหมดด้วย การลดรอยหยักและการกรองแบบแอนไอโซทรอปิกแบบเต็ม? เหมาะสมหรือไม่ที่ผู้ที่มีจอภาพเช่น 1280x1024 ไม่ชอบการกรองและ AA ในการซื้อการ์ดแสดงผลใหม่เช่น GTX285 และ Radeon ในกระบวนการทางเทคนิคใหม่

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

"NVIDIA โลก": ก่อนหน้านี้ ผู้พัฒนาเกมมักใช้ความสามารถและเอฟเฟกต์ของการ์ดวิดีโอใหม่ล่าสุดอย่างระมัดระวัง เนื่องจากพวกเขามุ่งเน้นไปที่การ์ดทั่วไปส่วนใหญ่ในขณะนี้ ตัวอย่างเช่น DirectX n แบบมีเงื่อนไขจะออกมา แต่เกมยังคงเขียนสำหรับ DirectX n-2 สถานการณ์เปลี่ยนไปเมื่อเร็ว ๆ นี้หรือไม่? เป็นเรื่องง่ายในเกมที่จะใช้ประโยชน์จากความสามารถเอฟเฟกต์ใหม่ของตัวเร่งวิดีโอที่เพิ่งเปิดตัวหรือไม่?

ม.จ.:หาก Windows 7 ออกมาเมื่อสองสามปีก่อนหรือ Microsoft ละทิ้งแนวคิดในการเชื่อมโยง DirectX 10 กับ Windows Vista ผู้พัฒนาเกมจะเปลี่ยนไปใช้ API เวอร์ชัน 10 เป็นอย่างน้อยเมื่อนานมาแล้ว อย่างไรก็ตาม ตอนนี้เรามีสิ่งที่เรามีแล้ว: ฮิตทั้งหมด ปีที่ผ่านมาใช้ DX9 และการสนับสนุน DX10 มักเป็นวิธีการทางการตลาด

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

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

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

ม.จ.:หากคุณดูจำนวนสมาชิก World of Warcraft แล้วเปรียบเทียบกับ Aion หรือ Age of Conan คำตอบก็ชัดเจน: สำหรับเกมออนไลน์ อย่างแรกเลย การเล่นเกม ความละเอียดอ่อน เกมโลก, องค์ประกอบ PvP ที่น่าตื่นเต้นและช่วงเวลาอื่น ๆ ที่ไม่เกี่ยวข้องโดยตรงกับกำหนดการ นี่ไม่ใช่การเบรกในการพัฒนากราฟิกเพราะผู้เล่นไม่ได้อยู่ใน MMORPG เดียว เกมยิงแนวใหม่ เกมจำลองรถ และเกมสวมบทบาทจะยกระดับมาตรฐานการเล่นเกม 3 มิติอย่างหลีกเลี่ยงไม่ได้ เกม MMO นั้นช้าแต่ก็ดำเนินไปในทางเดียวกันโดยมีเป้าหมายเพื่อดึงดูดผู้ชมเกมจำนวนมากขึ้น อย่างไรก็ตาม ตอนนี้มีข่าวลือว่า Blizzard เดิมกำลังทำงานกับ MMOG ใหม่และไม่น่าจะใช้เอ็นจิ้นอายุ 8 ปีในโครงการใหม่ของพวกเขา

"NVIDIA โลก": เทคโนโลยี SLI และ Crossfire ต้องการการสนับสนุนจากผู้พัฒนาเกมในระดับใด อะไรคือสาเหตุของประสิทธิภาพที่แตกต่างกันของเทคโนโลยีเหล่านี้สำหรับเกมต่างๆ? ด้วยคุณสมบัติของเอ็นจิ้นเกมหรือฉากเกม? เกมของคุณได้รับประโยชน์จากการใช้ SLI และ Crossfire มากแค่ไหน?

ม.จ.:การเพิ่มประสิทธิภาพเอ็นจิ้นสำหรับการ์ดวิดีโอสองการ์ดนั้นเป็นกระบวนการที่ยากมาก จำเป็นต้องจัดระเบียบการถ่ายโอนข้อมูลขนาดกะทัดรัดไปยัง GPU อย่างระมัดระวัง และสร้างสมดุลให้กับเอ็นจิ้นในแง่ของการโหลดระหว่าง GPU และ CPU หากแอปพลิเคชันทำงานบนการ์ดใบเดียวแล้ววางอยู่กับ CPU หรือการถ่ายโอนข้อมูลผ่านบัส คุณจะต้องลืม SLI หรือ Crossfire อันที่จริงนี่คือความแตกต่างระหว่างเกมบางเกมเมื่อทำงานกับคันเร่งที่จับคู่ เกมของเรายังคงให้ประสิทธิภาพเพิ่มขึ้นประมาณ 10% ใน SLI แต่ตอนนี้ เรากำลังปรับปรุงโมดูลจำนวนหนึ่งเพื่อปรับปรุงประสิทธิภาพในโหมดดังกล่าว

"NVIDIA โลก": เป็นเวลานานที่มีการกล่าวถึงวิกฤตในตลาดพีซีและการค่อยๆ เปลี่ยนจากเกมเป็นคอนโซล แต่สิ่งนี้ยังไม่เกิดขึ้น เราสามารถคาดหวังสิ่งนี้ได้ในอนาคตหรือไม่? จริงไหมเพราะฮาร์ดแวร์มาตรฐาน การเขียนโปรแกรมกราฟิกสำหรับคอนโซลจึงง่ายกว่ามาก? หรือความล้าหลังชั่วนิรันดร์ของ set-top box ในแง่ของ "ฮาร์ดแวร์" จะลดความสม่ำเสมอหรือไม่?

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

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

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

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

ม.จ.:เงาแบบโปรเจกทีฟได้พัฒนาไปไกลมากในเกมสมัยใหม่ และการดัดแปลงบางอย่างจะถูกนำมาใช้เป็นเวลานาน รวมกับเอฟเฟกต์เพิ่มเติมเช่น SSAO แน่นอน หากมี GPU ray tracing ฟรี เงาทั้งแบบฉายภาพและเชิงปริมาตรจะไม่มีโอกาสเกิดขึ้น

"NVIDIA โลก": คุณให้คะแนนเทคโนโลยี Precomputed Radiance Transfer จากมุมมองของแอปพลิเคชันในเกมอย่างไร คุณจะใช้มันในอนาคตหรือไม่?

ม.จ.: PRT ต้องใช้การคำนวณที่ใช้เวลานาน ไม่สามารถใช้ร่วมกับโมเดลแอนิเมชั่นได้ และโดยหลักการแล้ว ไม่ได้ให้ข้อดีในแง่ภาพมากนัก เมื่อเทียบกับ Ambient Occlusion เดียวกัน ตัวอย่างเช่น คุณสามารถใช้ Halo 3 ซึ่งใช้ PRT แต่คุณภาพแสงไม่โดดเด่นเมื่อเทียบกับ Gears of War หรือ Crysis รุ่นเดียวกัน

"NVIDIA โลก": สถาปัตยกรรม DirectX 11 และ Fermi คุ้มค่าที่จะรอตัวเร่งความเร็วและเกมของ DirectX 11 หรือเป็นเวอร์ชัน Pass-through ของ API หรือไม่ รุ่นน้องของตัวเร่งความเร็ว Direct X 11 ที่ให้กำลังเต็มที่ อัตราการเติม จะดีกว่ารุ่นเก่า แต่ทรงพลังกว่าพร้อมรองรับ DirectX 10 หรือไม่ เราสามารถคาดหวังได้ด้วยการเปิดตัวสถาปัตยกรรม Fermi การก้าวกระโดดเชิงคุณภาพบางอย่างในกราฟิกเกม หรือจะเป็นการเติบโตที่กว้างขวาง สามเหลี่ยมมากขึ้น ความเร็วสูงขึ้นที่ความละเอียดสูง ฯลฯ ? หาก Fermi พร้อมให้บริการในขณะที่พัฒนาเกมของคุณ เกมจะแตกต่างไปจากเดิมอย่างไรในแง่ของกราฟิก?

ม.จ.: DirectX เวอร์ชันที่ 11 นำเสนอความเป็นไปได้มากขึ้นสำหรับการประมวลผลบน GPU ในขณะที่เมื่อเทียบกับ DX10 มันไม่ได้นำมาซึ่งการปรับปรุงที่รุนแรงใดๆ สำหรับกราฟิก 3D สำหรับ Fermi คุณลักษณะที่น่าสนใจที่สุดในความคิดของฉันคือ tessellation ที่มีคำแนะนำอย่างสมบูรณ์สำหรับโมเดล 3 มิติ

Mikhail Zhivets ผู้อำนวยการด้านเทคนิคของโครงการ World of Tanks Wargaming.net

หลังจากรอบปฐมทัศน์ปิดการแสดงของ World of Warships ที่ gamescom และ IgroMir การเปิดตัวเกมอย่างเป็นทางการก็ใกล้เข้ามาทุกที การทดสอบอัลฟ่าแบบปิดกำลังดำเนินการอย่างเต็มที่ในขณะนี้ และเราซึ่งเป็นผู้พัฒนา Lesta Studio ซึ่งเป็นแผนกของ Wargaming ในเซนต์ปีเตอร์สเบิร์ก ยังคงมีคำถามมากมายให้แก้ไข ในขณะเดียวกัน เราก็ทิ้งอุปสรรคมากมายไว้เบื้องหลัง ด้านล่างนี้คือเรื่องราวเกี่ยวกับวิธีที่เราปรับเปลี่ยนผู้ส่งออกเครื่องยนต์ของเราให้ตรงกับความต้องการของ Ships และสร้างกระบวนการตรวจสอบเนื้อหา

การส่งมอบมาตรฐานของเครื่องยนต์

เอ็นจิ้นใดๆ มีชุดเครื่องมือสำหรับส่งออกโมเดล 3 มิติจากเครื่องมือแก้ไข 3 มิติไปยังรูปแบบข้อมูลของตัวเอง BigWorld ของเราบนพื้นฐานของการสร้าง World of Tanks ก็ไม่มีข้อยกเว้น รองรับการส่งออกจาก 3D Max และ Maya เกือบทุกโครงการเกมต้องมีการปรับตัวของผู้ส่งออกมาตรฐานให้เข้ากับลักษณะเฉพาะของโครงการ ในโครงการของเรา โมเดลเรือรบมีความเฉพาะเจาะจง

เวอร์ชันแรกของผู้ส่งออกที่ได้รับการดัดแปลงจากมายาเพียงแค่ "ฝึก" ใหม่เพื่อให้รู้จักโครงสร้างที่ซับซ้อนมากขึ้นของฉากเรือ เพิ่มโค้ดควบคุม Python เล็กน้อยในโค้ด C ++ ที่มีอยู่แล้ว เช่นเดียวกับปลั๊กอินสำหรับ Maya ที่มี UI บน wxWidget ดูเหมือนว่านี้:


UI ของผู้ส่งออกที่กำหนดเอง

เครื่องมือที่ได้มีข้อเสียมากมาย

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

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

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

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

ชีวิตประจำวันที่โหดร้าย

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

เราประมาณการ refactoring ของผู้ส่งออกที่สองหรือสามเดือนคน เราทำไม่ได้หากปราศจากการมองโลกในแง่ดีในการพัฒนาเกม

เราระบุความเสี่ยงดังต่อไปนี้:

ขาดข้อกำหนดที่เป็นทางการ
ระดับความเชี่ยวชาญในภาษา Python
ความซับซ้อนของ Maya API
การปรับโครงสร้างอัลกอริธึมสำหรับการประมวลผลเบื้องต้น

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

ต้นแบบแรกแสดงให้เห็นถึงความจำเป็นในการใช้แนวคิดของเนมสเปซและโมดูล Python (__init__.py) นอกจากนี้ยังมีกลไกการทำงานที่ช่วยให้คุณใช้ฟังก์ชันการทำงาน "อย่างโปร่งใส" จากไลบรารี C ++ (.pyd)

สามารถเขียนหนังสือแยกต่างหากเกี่ยวกับความซับซ้อนและความสับสนของ Maya API การทำงานใดๆ ที่จำเป็นต้องมีการสร้างต้นแบบ การปรึกษากับศิลปิน 3 มิติ และผู้พัฒนาเครื่องยนต์ (การเรนเดอร์)

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

ถึงเวลาแล้วที่จะเพิ่มกฎของ Murphy ที่โครงการใดๆ ที่คุณคิดไว้จะถูกนำไปใช้ในเวลาไม่เกิน "x3" จากแผนที่วางแผนไว้ หากคุณไม่ละทิ้ง

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

มาดูใต้กระโปรงกันดีกว่า

ในสตูดิโอของเรา สคริปต์ใน Python ถูกใช้อย่างแข็งขัน เราพยายามปรับใช้ผู้ส่งออกทั้งหมดกับมัน โดยธรรมชาติแล้ว Python ไม่เหมาะสำหรับการประมวลผลข้อมูลไบนารีขนาดใหญ่ เช่น บัฟเฟอร์จุดยอด บัฟเฟอร์ดัชนี เป็นต้น โมเดลข้อมูลและตัวสร้างอนุกรมของคอนเทนเนอร์ดังกล่าวถูกนำมาใช้ใน C ++ เป็นไลบรารี (.pyd) ซึ่ง "พอดี" ตามธรรมชาติ โมเดลข้อมูลใน Python ตรรกะทางธุรกิจทั้งหมดถูกนำมาใช้ใน Python

กรอบงานผู้ส่งออกได้รับการวางแผนเพื่อใช้ไม่เพียงสำหรับงานของการส่งออก "ด้วยตนเอง" จาก Maya แต่ยังใช้กับงานใดๆ ที่สามารถนำฟังก์ชันการทำงานกลับมาใช้ใหม่ได้ เช่น การตรวจสอบเนื้อหาโดยอัตโนมัติ สำหรับชุดเครื่องมือใดๆ ที่เราพัฒนา เราจำเป็นต้องมี Python APIs, command line และ UI tools

สถาปัตยกรรม

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

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


สถาปัตยกรรมแบบเลเยอร์ของผู้ส่งออก

ขั้นตอนการส่งออก

สถาปัตยกรรมแบบเลเยอร์แนะนำคุณลักษณะบางอย่างของกระบวนการส่งออก เรากำลังยกเลิกการซีเรียลไลซ์โมเดลสองรุ่น (หรือมากกว่า) จากแหล่งต่างๆ (Maya และ BigWorld Engine) หลังจากนั้นโมเดลเหล่านี้จะถูกรวมเข้าด้วยกันเป็นโมเดลใหม่ โมเดลใหม่จะถูกจัดลำดับให้อยู่ในรูปแบบ BigWorld-Engine


ขั้นตอนการส่งออก

ความยืดหยุ่นของกระบวนการผลิตเนื้อหา

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

ฉากแรกประกอบด้วยแบบจำลองภาพและแบบจำลองการชนกัน
ฉากที่สองมีโมเดลขีปนาวุธ
ส่วนที่สามมีพอร์ตเอฟเฟกต์

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

ผู้ส่งออกสามารถแก้ปัญหาที่ไม่ซับซ้อนในการรวมฉากทั้งสี่ให้เป็นแบบจำลองเรือลำเดียวได้อย่างง่ายดาย

การตรวจสอบเนื้อหา

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


ตัวอย่างการตรวจสอบโมเดลเรือในมายา

เนื้อหางบประมาณและเป็ดในห้องน้ำ

ส่วนสำคัญของกระบวนการตรวจสอบเนื้อหาคือการตรวจสอบงบประมาณ เช่น การตรวจสอบงบประมาณรูปหลายเหลี่ยม รูปด้านล่างแสดงข้อมูลเกี่ยวกับจำนวนสามเหลี่ยมสำหรับแบบจำลองภาพสำหรับแต่ละก้อนโดยเฉพาะ:


ปลั๊กอิน Maya UI

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

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

การประมวลผลเนื้อหา

ในแต่ละขั้นตอนของการส่งออก จำเป็นต้องมีการประมวลผล (ก่อน / หลังการประมวลผล) ตัวอย่างเช่น ก่อนที่จะแปลงแบบจำลองข้อมูลเชิงตรรกะของเลเยอร์ Maya เป็นแบบจำลองข้อมูลโดเมนสำหรับปืนใหญ่ป้องกันภัยทางอากาศ จำเป็นต้องหมุนโครงกระดูกปืนใหญ่ 45 องศาเบื้องต้นในแกน Y และถอดโครงกระดูกออก สถาปัตยกรรมของเราทำให้สามารถรวมการประมวลผลต่างๆ อย่างโปร่งใสในทุกขั้นตอนของการส่งออก




ตัวอย่างแบบจำลองก่อนและหลังการประมวลผลล่วงหน้า

รองรับ X64

ไม่นานมานี้ ศิลปินของเราได้เปลี่ยนจาก Maya รุ่น 32 บิต 2012 เป็น Maya 2014 รุ่น 64 บิต เนื่องจากผู้ส่งออกเขียนด้วย Python เกือบทั้งหมด เราจึงไม่มีปัญหากับการรองรับ x64 เฉพาะไลบรารี (.pyd) ที่ใช้งานใน C ++ เท่านั้นที่ต้องการ "ชามาน" เล็กน้อย

ตอนนี้ผู้ส่งออกสามารถใช้อย่างง่ายดายทั้งในกระบวนการ x32 และ x64 เนื่องจากตัวมันเองกำหนดและโหลดแอสเซมบลีที่จำเป็นของไลบรารี C ++ (.pyd)

การตรวจสอบบัตร

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

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

ลักษณะเฉพาะของตัวตรวจสอบบัตรคือสามารถตรวจสอบการมีอยู่ของไฟล์ของแบบจำลองภาพเหล่านี้ได้ไม่เพียงเท่านั้น แต่ยังรวมถึงตัวแบบจำลองด้วยโดยใช้กรอบงานผู้ส่งออก สิ่งนี้ขจัดปัจจัยมนุษย์เมื่อแผนกพัฒนาแผนที่ (LA) ต้องใช้คำพูดของแผนกพัฒนาแบบจำลอง 3 มิติ (3D Art) ว่ามีการใช้แบบจำลองที่ถูกต้องทางเทคนิค

การสร้างการจัดจำหน่าย

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

ไม่ได้ใช้อีกต่อไป
ยังอยู่ระหว่างการพัฒนา
มีไว้สำหรับผลิตภัณฑ์รุ่นต่อ ๆ ไป

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

ผลลัพธ์

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

ในอนาคตอันใกล้ ผู้ส่งออกจะมีการทดสอบอื่นที่เกี่ยวข้องกับการเปลี่ยนแปลงในรูปแบบไฟล์ BigWorld Engine เรามั่นใจว่าสถาปัตยกรรมพื้นฐานจะไม่ประสบปัญหาใด ๆ และจะสามารถรองรับการทำงานกับทั้งรูปแบบไฟล์ที่มีอยู่และรูปแบบใหม่

  • แนวเพลง: 3D MMO ทุกประเภท;
  • แพลตฟอร์ม:พีซี, PS3, Xbox 360, iOS (iPad), เว็บ;
  • ภาษาโปรแกรม: C ++, หลาม;
  • ใบอนุญาต:อินดี้และเชิงพาณิชย์
  • เปิด แหล่งที่มา: ไม่ได้ให้หรือให้สำหรับค่าธรรมเนียมที่เพิ่มขึ้น;
  • ผู้เล่นหลายคน:ไคลเอนต์-เซิร์ฟเวอร์;
  • ข้อดี:ทรงพลังรองรับทุกสิ่งอย่างที่สุด เทคโนโลยีสมัยใหม่, ปรับให้เหมาะสม, รองรับ iOS, ราคาถูกสำหรับคุณสมบัติดังกล่าว
  • ข้อบกพร่อง:ไม่ได้ให้ฟรี;
  • ผู้พัฒนาเครื่องยนต์:บิ๊กเวิลด์ เทค อิงค์

    BigWorld Engine เป็นเอ็นจิ้น 3 มิติที่ล้ำหน้าที่สุดสำหรับการสร้างเกม MMO มีการสร้างเกมเช่น "World of Tanks", "Pealm of the Titans" จาก Wargaming.net และเกมอื่นๆ จากบริษัทพัฒนาเกมระดับโลกอื่นๆ มีการสร้างเกม MMO มากกว่า 15 เกมบนเอ็นจิ้นนี้ ได้รับการพัฒนาโดย BigWorld Technology

    เอ็นจิ้นที่ปรับให้เหมาะสมช่วยให้คุณสร้างเกมที่มีความต้องการต่ำพร้อมกราฟิกที่น่าทึ่ง เอ็นจิ้นนี้อนุญาตให้คุณพอร์ตเกมไปยัง iOS มันถูกเขียนด้วยภาษาโปรแกรม C ++ การนำตรรกะของเกมไปใช้ในภาษา Python ที่สะดวก มีเครื่องมือที่มีประสิทธิภาพและเอ็นจิ้นเซิร์ฟเวอร์ไคลเอ็นต์ สำหรับเสียง ไลบรารี FMOD ได้รับการสนับสนุน และไลบรารีอื่นๆ จะเชื่อมต่อผ่านระบบปลั๊กอิน ทำงานร่วมกับฐานข้อมูล XML และ MySQL กล่องเครื่องมือประกอบด้วย World Editor, Model Editor และ Particle Editor อันทรงพลัง

    มีราคาไม่แพงมาก Build BigWorld: Indie Edition ราคาเพียง $ 299; BigWorld: Indie Source Edition - 2,999 ดอลลาร์; BigWorld: Commercial Edition - เจรจาเป็นรายบุคคล

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

    ไม่มีให้ใช้งานสำหรับใบอนุญาตบุคคลที่สามอีกต่อไปเช่น Wargaming ตัดสินใจหยุดจำหน่ายเครื่องยนต์

    เว็บไซต์อย่างเป็นทางการ: http://www.bigworldtech.com





    ห่วงโซ่เครื่องมือ BigWorld Technology มอบระบบการสร้างเนื้อหา MMOG แบบ end-to-end ที่สมบูรณ์และสมบูรณ์ ซึ่งจะช่วยเพิ่มคุณภาพและความตรงต่อเวลาของเกมของคุณ เครื่องมือทั้งหมดได้รับการออกแบบสำหรับความร่วมมือในการผลิตเนื้อหาเกมในสภาพแวดล้อมของทีมขนาดใหญ่ ทำให้มั่นใจได้ว่าการใช้ทรัพยากรอย่างมีประสิทธิภาพและไปป์ไลน์เนื้อหาที่ราบรื่น

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


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


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


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


    อย่างไรก็ตาม คุณสามารถค้นหาข่าวต่างๆ จากทั่วโลกได้ที่นี่ คุณยังสามารถพบว่าตัวเองเป็นภาพยนตร์ที่น่าเพลิดเพลินในการรับชมในตอนเย็นพร้อมกับเบียร์หนึ่งขวดหรือป๊อปคอร์น ในฐานข้อมูลการค้นหาของเรา มีภาพยนตร์สำหรับทุกรสนิยมและทุกสี คุณสามารถค้นหาภาพที่น่าสนใจสำหรับตัวคุณเองได้อย่างง่ายดาย เราสามารถค้นหาให้คุณได้อย่างง่ายดาย แม้กระทั่งงานที่เก่าและหายากที่สุด รวมถึงงานคลาสสิกที่ทุกคนรู้จัก เช่น Star Wars: The Empire Strikes Back


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


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