ง่ายต่อการใช้เอนจิ้น 3D ข้ามแพลตฟอร์มสำหรับการพัฒนาเกม C ++? [ปิด]


73

ฉันต้องการลองเขียนเกม 3 มิติ อย่างไรก็ตามฉันไม่ต้องการที่จะเริ่มต้นที่ระดับต่ำของการวาดรูปสามเหลี่ยมแต่ละตัวและการเขียนวัตถุ 3 มิติของตัวเองและอื่น ๆ ฉันได้ยินสิ่งต่าง ๆ เช่นIrrlicht , Crystal Space 3DและCafuแต่ฉันไม่มีประสบการณ์ใด ๆ เลย ฉันกำลังมองหาคำแนะนำจากผู้ที่มีประสบการณ์กับเครื่องมือเหล่านี้หรือเครื่องมืออื่น ๆ ที่เขียนได้ดีและเริ่มต้นใช้งานได้ง่ายโดยไม่ต้องเรียนรู้ทฤษฎีคณิตศาสตร์ 3 มิติจำนวนมากและวิธีการทำงานของ GPU ภายใน


16
ในขณะที่อาจถูกปิดคำถามนี้เป็นประโยชน์กับฉัน
Caleb Jares

4
เหมือนกัน, เธรดที่ดีมาก, ไม่รู้ว่าทำไม stackexchange ไม่ชอบคำถามแบบนี้
สตีฟ

2
พวกเขาชอบปิดคำถามที่ฉันคิดว่า
Frank Cranston


คำตอบ:


48

ความคิดเห็นของฉัน (สำหรับเครื่องมือ 3D โอเพนซอร์ส):

  • เออร์ลิช :
    • เครื่องยนต์ 3D อ่อน
    • ล้าง C ++ โดยไม่ต้องพึ่งพาและไม่มี STL
    • เอกสารไม่ดีนัก แต่มีบทเรียนที่ดี
    • เล็กมาก ๆ เพื่อให้คุณสามารถปรับแต่งมันได้อย่างง่ายดาย
    • ไม่มีไดรเวอร์ OpenGL 3.X, Direct X 10.X หรือ 11.X ที่มีอยู่ใน SDK อย่างเป็นทางการ
    • ดีมากสำหรับการพัฒนาอุปกรณ์พกพา
    • ชุมชนที่ดี
    • มีนามสกุลไม่กี่
  • Ogre3D :
    • เครื่องยนต์ 3 มิติขนาดใหญ่
    • มันใช้ C ++ ที่ทันสมัยเช่น STL ข้อยกเว้นและ RTTI
    • เอกสารที่ดี (มีหนังสือที่ตีพิมพ์)
    • โหมดเรนเดอร์หลายตัว (OpenGL, DirectX และ OpenGL ES ... )
    • Ogre3D มีส่วนขยายมากมายเช่น CEGUI หรือการรวม Bullet, Tree nodes ...
    • แต่ยากต่อการขยาย Ogre3D ถ้าคุณต้องการบางสิ่งที่เฉพาะเจาะจง
    • ชุมชนใหญ่
    • ส่วนขยายจำนวนมาก
  • พื้นที่คริสตัล : การออกแบบเก่าและใช้งานยาก หลังจากนั้นไม่กี่วันฉันก็หยุดใช้เครื่องมือนี้
  • Horde3D
    • เครื่องยนต์ขนาดเล็ก
    • การออกแบบที่ทันสมัย
    • ชุมชนไฟ
    • ไม่มีส่วนขยาย
  • Blendelf
    • เครื่องยนต์ขนาดเล็กที่มีการอ้างอิงบางอย่าง
    • การออกแบบที่ทันสมัยพร้อมเอฟเฟกต์สมัยใหม่เช่น DOF หรือ HDR ...
    • OpenGL เท่านั้น
    • ชุมชนไฟ
    • การบูรณาการกระสุนสำหรับฟิสิกส์
    • คุณใช้ lua เพื่อนำร่อง engine 3D นี้

TL; DR:

  • สำหรับเกมเดสก์ท็อป (หรือเกมการค้าในอนาคต): Ogre3D
  • สำหรับเกมแรก: Irrlicht
  • สำหรับการพัฒนาอุปกรณ์พกพา: irrlicht (Ogre3D ใหญ่เกินไป)
  • สำหรับเอฟเฟกต์เซ็กซี่: ผสมผสาน

บอกตามตรงฉันจะไม่แนะนำ Irrlicht สำหรับการพัฒนาอุปกรณ์พกพา มันจัดสรรหน่วยความจำมากเกินไปและนำเสนอการใช้งานการจัดสรรหน่วยความจำแบบกำหนดเองน้อยไปไม่มีเลย เวลาเริ่มต้นเนื่องจากการจัดสรรเกือบ 60,000 ครั้งเมื่อเริ่มต้นเป็นปัญหาใหญ่
Simon

ฉันใช้ Irrlicht บน Android และ IOS และเวลาเริ่มต้นไม่ใช่ปัญหาใหญ่ ... การโหลดพื้นผิวนั้นนานกว่าการจัดสรร ...
Ellis

@Simon คุณสามารถอธิบายสิ่งที่คุณอ้างถึงด้วย "การปรับใช้การจัดสรรหน่วยความจำแบบกำหนดเอง" ได้หรือไม่? นั่นคืออะไรและทำไมคุณต้องการมัน
temporary_user_name

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

3
ดังนั้นเมื่อ Simon บอกว่าเขาจะไม่แนะนำเพราะมันไม่ได้นำเสนอการจัดสรรหน่วยความจำที่กำหนดเองจริง ๆ แล้วสิ่งนี้ไม่ได้ใช้กับผู้เริ่มต้นหรือแม้แต่นักพัฒนาระดับกลางส่วนใหญ่?
temporary_user_name

21

ข้อเสนอแนะครั้งแรกที่เห็นได้ชัดคือOgre3D


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

1
แต่ Ogre3D ไม่ใช่เครื่องยนต์ มันเป็นห้องสมุดการแสดงผล 3 มิติ คุณต้องเลือกเครื่องมือที่สร้างขึ้นบนผีปอบหรือสร้างด้วยตัวคุณเอง
ไฟ

4
ฉันมีประสบการณ์อย่างกว้างขวางกับ Ogre3d; มันมีความเสถียรและเขียนได้ดีและทำงานได้ยอดเยี่ยมในการดูแลงานทางโลก (การเลือกฉาก, การโหลดตาข่าย, ป้ายโฆษณา / อนุภาค) Fire นั้นถูกต้องเพราะไม่ใช่ Game Engine; แต่ผีปอบสามารถรวมกับห้องสมุดอื่น ๆ เพื่อสร้างมันได้ มันเป็นขั้นตอนที่ยอดเยี่ยมเหนือ "การวาดรูปสามเหลี่ยมแต่ละอันและเขียนตัวแปลวัตถุสามมิติของฉันเอง" แต่มันก็เป็นเพียงห้องสมุดการเรนเดอร์ ถ้านั่นคือสิ่งที่คุณต้องการมันเป็นห้องสมุดที่ยอดเยี่ยมที่มีชุมชนที่ใช้งานและให้การสนับสนุน
Karantza

3
@Fire OGRE: เอ็นจิ้นการแสดงผลกราฟิกเชิงวัตถุ มันเป็นเครื่องยนต์ มันมีซิงเกิลตันอยู่ทั่วทุกที่ เครื่องยนต์อย่างแน่นอน
Ricket

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

7

Open Scene Graphเป็นเครื่องมือ 3D ข้ามแพลตฟอร์มที่ออกแบบมาอย่างดีมาก ตัวอย่างเช่นตรงกันข้ามกับ Ogre3D มันไม่ได้มีฟีเจอร์ "game engine" และมุ่งเน้นที่การเป็นนามธรรมที่ดีมากบน OpenGL

  • มันมีน้ำหนักเบามากและไม่ได้บังคับกรอบคุณ: คุณสามารถใช้น้อยหรือมากเท่าที่คุณต้องการและใช้ผ่าน SDL, SFML, wxWidgets, QT ...
  • มันเป็นประสบการณ์การเรียนรู้ที่ยอดเยี่ยม: เมื่อคุณเรียนรู้ห้องสมุดคุณเข้าใจมากขึ้นเกี่ยวกับ OpenGL พื้นฐานและวิธีการออกแบบ
  • ค่อนข้างพร้อมใช้งาน: มันมีโหลดเดอร์สำหรับรูปแบบ 3D หลัก
  • เป็นมิตรกับชายฉกรรจ์

ดูรายการตัวอย่างมากมาย


4

ในแง่ของเอ็นจิ้นเกม:

  • Torque3D : มีฟีเจอร์มากมาย แต่บางตัวก็พิจารณาว่าโค้ดทำงานได้ยาก
  • C4 Engine : การสนับสนุนผู้แต่งที่ไม่แพงและยอดเยี่ยม แต่เครื่องมือสามารถใช้งานได้ดี
  • DIY: เลือกชุดของไลบรารีและกาวเข้าด้วยกันกับเกมของคุณ

ตั้งแต่ Ogre3D ได้รับการแนะนำนอกจากนี้ยังมีอยู่น้ำหนักเบาทางเลือกHorde3D

ข้อดี:

  • การออกแบบเป็นเสียงและน่าจะมีประสิทธิภาพสูงกว่า Ogre3D สำหรับการเรนเดอร์ที่หนักหน่วง (ถ้ายังไม่มี)
  • C API ทำให้การผูกสำหรับภาษาเช่น Python ง่ายและง่ายต่อการดูแล (รหัสภายในคือ C ++)

จุดด้อย:

  • ต้องการการสนับสนุน OpenGL 2.0 เป็นอย่างน้อย
  • ชุมชนเล็ก ๆ
  • ฐานรหัสไม่เสถียร (การเปลี่ยนแปลงสถาปัตยกรรมที่สำคัญยังคงเกิดขึ้น)

2
หลีกเลี่ยง Torque 3D หากคุณเห็นคุณค่าของสติ เอ็นจิ้นการเขียนสคริปต์เป็นฝันร้ายที่ทำให้สับสน
Jared Updike

4

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

ฉันคิดว่ามันคงจะดีถ้าเริ่มต้นด้วย!


4

ฉันรู้ว่าคุณขอให้ C ++ แต่ Panda3D ยังทำงานกับ C ++ ได้แม้ว่ามันจะเป็นเป้าหมายแรกในการทำงานกับหลาม มันเป็นเอ็นจิ้นเกม แต่อะไรก็ตาม ...


2

ตัวเลือกที่ชัดเจนถ้า Ogre3D อยู่ในระดับต่ำเกินไปสำหรับคุณจะเป็น NeoAxis: http://www.neoaxisgroup.com/

มันขับเคลื่อนโดย Ogre แต่เป็นแพลตฟอร์มพัฒนาเกมที่สมบูรณ์

เป็นเป้าหมายของ. NET เพื่อให้คุณสามารถใช้ C #, C ++, VB ที่ได้รับการจัดการ

ดังนั้นไปที่ :)

Ogre3D สามารถทำงานบนอุปกรณ์มือถือหลายประเภทเช่น iPhone และ Android ดังนั้นมันจึงไม่ใหญ่เกินไป

อย่าเข้าใจผิดขนาดเพื่อประสิทธิภาพ

ฉันไม่แน่ใจว่า IrrLicht มีการรองรับ iPhone อย่างเป็นทางการหรือไม่ แต่ Ogre3D รองรับ


หากอยู่ใน. NET คุณไม่สามารถเพิ่ม IronPython ในรายการภาษาได้หรือไม่ Python เป็นภาษาสคริปต์ที่ยอดเยี่ยม
Jared Updike

2
.สุทธิ? นั่นไม่ได้ออกกฎข้ามแพลตฟอร์ม?
davr

.Net ไม่ได้ แต่ Neo-Axis ใช้ C ++ / CLI ซึ่งทำ
jsimmons

ฉันได้พูดคุยกับผู้พัฒนานำ Neoaxis วันนี้และพวกเขากำลังประกาศ Mac OS X รองรับเดือนกันยายนนี้ :)
jacmoe


1

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

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