เอ็นจิ้นเกมควรทำอย่างไร [ปิด]


20

ฉันต้องการพัฒนาทักษะของฉัน / ลองสิ่งใหม่ ๆ และฉันต้องการเริ่มต้นด้วย 3D ฉันได้อ่านการเขียนโปรแกรมเริ่มต้นใน 3D ด้วย C ++แต่ฉันมีคำถามเกี่ยวกับเอ็นจิ้น:

  • เครื่องยนต์ควรทำอย่างไร? ฉันรู้ว่ามันเป็นเลเยอร์ที่เป็นนามธรรมเหนือ 3D API (เช่น OpenGL หรือ DirectX) แต่มันควรทำอย่างไร?

สำหรับคำแนะนำหนังสือคำถามนี้ควรช่วยคุณ: gamedev.stackexchange.com/questions/455/…
Tetrad

คำตอบ:


27

คุณพูดถูกแล้วว่าเอ็นจิ้นของเกมอยู่ห่างจาก API กราฟิคระดับต่ำ แต่เอ็นจิ้นของเกมที่มีความสมบูรณ์นั้นมีจำนวนมากกว่า

เอ็นจิ้นเกมมีจุดประสงค์เพื่อทำให้ทุกอย่างเกี่ยวกับการพัฒนาเกมง่ายขึ้น พวกเขาแต่ละคนมีคุณสมบัติที่เป็นเอกลักษณ์ของตัวเอง แต่โดยทั่วไปแล้วพวกเขาให้ชั้นที่เป็นนามธรรมง่ายสำหรับกราฟิก, เสียง, การป้อนข้อมูลการจัดการฉากการตรวจจับการชนกันคณิตศาสตร์และสาธารณูปโภคที่มีประโยชน์ทั่วไป บางตัวมีตัวเสริมและปลั๊กอินสำหรับ API ฟิสิกส์และบางตัวก็มีการสนับสนุน AI บางอย่าง (ส่วนใหญ่ถูก จำกัด ที่ FSMs, การค้นหาเส้นทางและ - แนวโน้มปัจจุบัน - ต้นไม้พฤติกรรม) หลายคนสนับสนุนและภาคภูมิใจในการทำงานข้ามแพลตฟอร์ม

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

มีเอ็นจิ้นจำนวนมากอยู่ภายนอก แต่ระวังความแตกต่างระหว่างเอ็นจิ้นกราฟิกและเอ็นจิ้นเกม (ตัวอย่างเช่น Unity จะเป็นเอ็นจิ้นของเกมในขณะที่ Ogre จะเป็นเอ็นจิ้นกราฟิก)

ฉันมีหนังสือสองเล่มเกี่ยวกับเรื่องนี้ แต่พวกเขาให้ภาพรวมที่ดีเกี่ยวกับเรื่องนี้:

  • สถาปัตยกรรมเครื่องยนต์เกม 3D โดย David H Eberly

  • การเข้ารหัสเกมเสร็จสมบูรณ์โดย Mike McShaffry

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

หากคุณกำลังเริ่มเกม dev อย่าสร้างเอ็นจิ้น ฉันแนะนำคุณไปยังหน้าต่อไปนี้: http://geometrian.com/programming/tutorials/write-games-not-engines/

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

หวังว่าจะช่วย

รังสี


1
+1 สำหรับบทความบล็อก มันบอกว่าสิ่งที่ฉันจะพูดเกี่ยวกับเรื่องนี้
Tetrad

5
ใช่ไม่มีใครควรสร้างเอ็นจิ้นเกมก่อนที่จะสร้างเกม คุณจะรู้ได้อย่างไรว่ารหัสของคุณสามารถใช้ซ้ำได้หากคุณยังไม่ทราบว่ามันใช้งานได้
Kylotan

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

@ RayDey ลิงก์ไปยัง "เขียนเกมที่ไม่ใช้เอ็นจิ้น" นั้นตายแล้ว FYI ฉันรอคอยที่จะอ่านมัน :(
DrewJordan

5

การเพิ่มคำตอบของเรย์: เอ็นจิ้น (เกมกราฟิกเสียง ฯลฯ ) ไม่เพียงทำให้การโต้ตอบกับ API พื้นฐานง่ายขึ้น แต่ยังใช้ฟังก์ชั่นการใช้งานเฉพาะสำหรับเกมเช่น: แบบจำลองการแรเงา, เสียง 3 มิติ

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


+1 สำหรับโครงสร้างความสามารถในการปรับขยายและความยืดหยุ่นและฉันลืมเพิ่มการจัดการหน่วยความจำ
Ray Dey

1

ฉันได้เขียนรายละเอียดการสอนเกี่ยวกับกลไกของเกม - โดยเฉพาะในบริบทของแพลตฟอร์ม iPhone และ Android ฉันได้รวมคำอธิบายโดยละเอียดพร้อมตัวอย่างของส่วนต่างๆของเกมเอ็นจิ้น: UI, กราฟิก, เสียง, ฟิสิกส์, เอฟเฟกต์ของอนุภาค มีบทช่วยสอนที่นี่: เอ็นจิ้นเกมคืออะไร . หวังว่ามันจะเป็นประโยชน์


0

เอ็นจิ้นเกมทุกเกมมีแนวคิดที่แตกต่างกันเล็กน้อยในสิ่งที่เอ็นจิ้นเกมควรทำ

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

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