ทำไมเอ็นจิ้นอย่าง Unity3D จึงเน้นย้ำกับไลบรารี่ดั้งเดิมอย่าง OpenGL สำหรับผู้เริ่มต้น [ปิด]


25

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


15
สองคำ: ความพึงพอใจทันที คุณสามารถทำให้บางสิ่งที่ "มีประโยชน์" ทำได้ด้วยความสามัคคีโดยที่ไม่ต้องรู้อะไรมากในขณะที่การใช้งานแอพ OpenGL นั้นต้องใช้โค้ดสองสามบรรทัดและเข้าใจแนวคิดที่หลากหลาย
Jari Komppa

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

8
"ส่วนใหญ่ของเกมที่ซับซ้อนต้องใช้เครื่องมือที่กำหนดเอง" - จริงเป็นจำนวนมากที่น่าแปลกใจของเกม AAA ที่ประสบความสำเร็จอย่างสูงที่ถูกสร้างขึ้นในเครื่องมือหุ้นเช่นเครื่องยนต์ลวงตา
ฟิลิปป์

2
นอกจากนั้นผู้เริ่มต้นจะไม่สามารถสร้างเกมที่ซับซ้อนพอที่จะต้องมีเครื่องมือที่กำหนดเองอยู่แล้ว
คริสเตียน

สิ่งนี้เพิ่งปรากฏบน Gamasutra และในขณะที่มันไม่ใช่คำตอบสำหรับคำถามนี้โดยตรงมันมีความเกี่ยวข้อง: gamasutra.com/blogs/ChrisDeLeon/20140426/215519/โดยเฉพาะมันจะยากมากสำหรับโครงการที่คุณสร้างจาก พื้นดินขึ้นด้วย OpenGL ที่จะเป็นโครงการแรก 'เจียมเนื้อเจียมตัว'
Steven Stadnicki

คำตอบ:


30

ฉันคิดว่าคุณตอบคำถามนี้ด้วยตัวเองแล้ว คุณบอกว่า"ฉันเป็นเพียงแค่การเริ่มต้นในการเล่นเกม 3 มิติ" นอกจากนี้คุณกล่าวว่า"... Unity3D และใช้มันสร้างขึ้นในคุณสมบัติและเครื่องมือที่ฉันจะต้องรหัสตัวเองถ้าผมจะใช้ OpenGL"

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

ดูคำถามที่เกี่ยวข้องนี้: ความแตกต่างระหว่าง Library และ Engineกับอันนี้อะไรคือเฟรมเวิร์กเกมเมื่อเทียบกับเอ็นจิ้นเกม


ดังนั้น OpenGL สำหรับกราฟิกและ unity3d เป็นเฟรมเวิร์กที่สมบูรณ์ซึ่งมีกราฟิกรวมถึงข้อกำหนดทางฟิสิกส์สำหรับเกมของฉัน
Aman Grover

1
ความสามัคคีนั้นมีมากกว่านั้นมาก แต่ใช่นั่นก็คือความแตกต่าง
jhocking

3
@AmanGrover: ยังตระหนักว่าด้วย GL "สำหรับกราฟิก" นั้นเป็นเรื่องจริง "เพียงแค่ส่งคำสั่งไปยัง GPU" การทำงานอย่างหนักของกราฟิกที่แท้จริงยังคงต้องดำเนินการโดยโปรแกรมเมอร์ในขณะที่ Unity มีฟีเจอร์และอัลกอริธึมกราฟิกที่สำคัญทั้งหมดที่รวมอยู่และพร้อมใช้งาน
Sean Middleditch

2
อย่าเขียนเอนจิ้นเขียนเกม นั่นคือสิ่งที่ฉันได้รับคำสั่งให้เข้าใกล้ สิ่งที่ฉันหมายถึงมีคนสร้างเอ็นจิ้นเกมในขณะที่คุณสร้างเกมจริง นั่นคือจุดที่ฉันไม่เห็นด้วยกับ Byte
LaVolpe

28

เพราะเริ่มต้นโดยความหมายไม่ทราบว่าสิ่งที่พวกเขากำลังทำ

OpenGL มีช่วงการเรียนรู้ที่ยิ่งใหญ่ แน่นอนว่าคุณสามารถออกคำสั่ง glBegin ได้บ้างตื่นเต้นกับการวางรูปสามเหลี่ยมบนหน้าจอจากนั้นปิดส่วนลึกด้วยสิ่งที่ซับซ้อนกว่าที่คุณยังไม่พร้อม นั่นไม่ใช่วิธีที่ดีในการเรียนรู้ การเปรียบเทียบ (พูดเกินจริงเล็กน้อย) อาจจะเป็นการเรียนรู้ฟิสิกส์ระดับมัธยมขั้นพื้นฐานบางอย่างจากนั้นถูกควบคุมโดย Large Hadron Collider มันไม่ใช่การว่ายน้ำหรือว่ายน้ำ แต่มันก็ว่ายน้ำหรือทิ้งกัมมันตภาพรังสีขนาดใหญ่ในพื้นดิน

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

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

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


22

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

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


ขอบคุณและใช่ฉันกำลังมองหางานในพื้นที่นี้และดังนั้นฉันจะไปกับ OpenGL
Aman Grover

9
ฉันไม่เห็นด้วยอย่างจริงจังว่าการทำงานกับ 'เปลือย' OpenGL จะมีค่ามากกว่าสำหรับผู้ที่บุกเข้ามาในอุตสาหกรรมเกม Unity นำเสนอตัวอย่างที่ยอดเยี่ยมของเอ็นจิ้นเกมที่ทันสมัยและค่อนข้างสมบูรณ์ การทำความเข้าใจเกี่ยวกับฟังก์ชั่นที่ให้ (ด้วยตาต่อการเรียนรู้วิธีที่คุณอาจให้ฟังก์ชั่นที่คล้ายกันด้วยตัวเอง) เป็นวิธีที่ยอดเยี่ยมในการทำความเข้าใจกระบวนการพัฒนาเกมเองในขณะที่ OpenGL นั้นห่างไกลจากการ
Steven Stadnicki

นี่แสดงให้เห็นว่าจริงๆแล้วมันไม่มีกฎเกณฑ์เกี่ยวกับสิ่งเหล่านี้เพียงแค่ความคิดเห็น ทุกอย่างขึ้นอยู่กับสิ่งที่คุณต้องการ / ต้องการ
jhocking

5
@AmanGrover - จากนั้นอย่าสร้างเกม! คุณจะมีเวลาง่ายขึ้นในการเรียนรู้สิ่งใดสิ่งหนึ่งในแต่ละครั้ง จัดทำระบบจำลองพลังงานแสงอาทิตย์ เรียนรู้วิธีการวาดดั้งเดิมพื้นฐานเรียนรู้วิธีการแปลและหมุนวางดาวเคราะห์ใน VBO เพื่อวาดเร็วขึ้นใช้ shaders บางอย่างเพื่อสร้างเมฆภาพเคลื่อนไหวบนพวกเขาและคุณเป็นระยะทางที่ดีต่อการทำความเข้าใจพื้นฐาน
Maximus Minimus

3
@ KamikazeSoctsman อีกครั้งไม่เห็นด้วยที่นี่ ฉันไม่ได้บอกว่า OGL ไม่มีประโยชน์ - ห่างไกลจากมัน! - แต่ในทศวรรษที่ผ่านมาฉันใช้ความรู้ OpenGL ของฉันเพียงไม่กี่ครั้งเท่านั้น ในทางตรงกันข้ามเนื่องจากเครื่องมือกราฟิกเกมมีแนวโน้มที่จะให้ผลการดำเนินงานที่สำคัญในประสบการณ์ของผมที่พวกเขากำลังหนึ่งของน้อยสถานที่ทั่วไปสำหรับโปรแกรมเมอร์ใหม่ที่จะเริ่มต้น คุณควรรู้คณิตศาสตร์ 3 มิติอย่างแน่นอนและคุณควรเข้าใจหลักการของการเรนเดอร์ - แต่นั่นเป็นสิ่งที่แตกต่างอย่างมากจากการเรียนรู้ OGL
Steven Stadnicki

6

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

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

imho ขั้นตอนของการพัฒนาเกมที่มีประสบการณ์คือ:

  1. ฝึกฝนกรอบ / Engine ที่ทันสมัยและเข้าใจอย่างถ่องแท้ (ซึ่งจะช่วยให้คุณเรียนรู้แง่มุมต่าง ๆ ของการออกแบบเกมกราฟิกและ OpenGL ไม่ได้มีอยู่ทั้งหมด)
  2. ทำเกมเล็ก ๆ ด้วยและเรียนรู้เพิ่มเติมในกระบวนการ
  3. เผชิญกับอุปสรรคและข้อ จำกัด ในเครื่องยนต์
  4. เรียนรู้เพิ่มเติมเกี่ยวกับหัวข้อ
  5. ทำงานเพื่อปรับปรุงพื้นที่ที่คุณเห็นว่าจำเป็นต้องปรับปรุง

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

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

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


4

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

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

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

โปรดทราบว่าเกมที่ทันสมัยที่สุดบางเกมเช่น Portal และ Antichamber สร้างขึ้นโดยใช้เครื่องมือที่มีอยู่ เกมออนไลน์ที่ค่อนข้างซับซ้อนเช่น Aion และ TERA นั้นสร้างขึ้นโดยใช้เครื่องมือที่มีอยู่ เกมที่สวยงามที่สุดบางเกมเช่น Bioshock Infinite และ Thief สร้างขึ้นโดยใช้เครื่องมือที่มีอยู่ และแน่นอนบางคนก็ไม่ได้ แต่ประเด็นคือ: ไม่มีอะไรที่ฉันเคยเห็นต้องใช้เครื่องมือกำหนดเองจริงๆ

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


1
-1 ยืนยันใหญ่เกี่ยวกับอุตสาหกรรมเกม ส่วนใหญ่ไม่ถูกต้อง ฉันหวังว่าฉันจะโรยโพสต์ของคุณด้วยประมาณหนึ่งโหลcitation neededs
Panda Pajama

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

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

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