เริ่มต้นกับ 2d Game Dev (C ++): DirectX หรือ OpenGL หรือไม่ [ปิด]


12

ดังนั้นฉันเป็นนักเรียนที่กำลังมองหาที่จะก้าวเข้ามาใกล้ประตูของการพัฒนาเกมและฉันกำลังมองหาที่จะทำบางสิ่งบางอย่าง 2D อาจเป็น tetris / ผู้รุกรานพื้นที่ / โคลน - โต้ตอบกับเมาส์บางสิ่งบางอย่าง

ฉันชี้การค้นหาของฉันไปในทิศทางของ C ++ และ 2d และในที่สุดก็นำไปสู่ ​​DirectX / OpenGL

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

ดังนั้นสำหรับผู้เริ่มต้นที่พยายามสร้างเกมพื้นฐานใน C ++ คุณจะแนะนำ DirectX หรือ OpenGL หรือไม่ ทำไม? ฟีเจอร์หลักบางอย่างแตกต่างกันระหว่างสองคุณสมบัตินี้? ข้อใดใช้งานได้มากกว่า

คำตอบ:


16

ฉันขอแนะนำ SDL ( http://www.libsdl.org/ ) สำหรับ 2D มันเป็นจุดที่ฉันเริ่มต้นด้วยกราฟิกสิ่งและมันค่อนข้างง่ายต่อการใช้งานแม้ว่าฉันเพิ่งจะรู้ C ++ ในเวลานั้น

นี้ (กระจก)เป็นชุดของบทเรียนที่ผมเริ่มต้นด้วยและพบว่ามีประโยชน์มาก (พวกเขาถูกบิตลงวันที่แม้ ~ 4 ปีที่ผ่านมาเมื่อฉันทำงานผ่านพวกเขา แต่ผมไม่คิดว่า SDL มีการเปลี่ยนแปลงมากและพวกเขาควรจะยังคงที่เกี่ยวข้อง )

SDL ยังทำการจัดการอินพุตและ SDL_Mixer สามารถทำเสียงขั้นพื้นฐานได้

ฉันไม่เคยทำงานกับ DirectDraw หรือ OpenGL สำหรับเนื้อหา 2 มิติดังนั้นฉันไม่สามารถแสดงความคิดเห็นได้ แต่ฉันสามารถแนะนำ SDL ได้อย่างแน่นอน


1
ฉันพบ SDL ที่ดี แต่มันยากมากที่จะได้รับเส้นทางและรวมถึงการตั้งค่าอย่างถูกต้อง
Skeith

1
นอกจากนี้ลองดูlazyfoo.net/SDL_tutorialsสำหรับบทเรียนที่ดี (รวมถึงบทช่วยสอนการตั้งค่าสำหรับ IDE ต่างๆ)
BeanBag

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

7

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

ด้วยเหตุนี้คุณจึงต้องผสมกับห้องสมุดอื่น ๆ ไม่กี่แห่งโดยเฉพาะ SDL_mixer, SDL_gfx และ SDL_image ซึ่งมีฟังก์ชั่นที่ทุกคนต้องการในการสร้างเกม

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

SFML มาพร้อมกับทุกสิ่งนอกกรอบ มันมีเสียง, มันมีวิดีโอ, มันมีการมิกซ์, มันมีกรอบ - สูงสุดและมันเป็นวัตถุ ถ้านั่นคือสิ่งที่คุณต้องการฉันขอแนะนำให้คุณทำเช่นนั้น SFML ยังมีเลเยอร์นามธรรมสำหรับฟังก์ชั่นพื้นฐานบางอย่างใน opengl (โดยเฉพาะ startShape / EndShape และ Pixel shaders) ฉันไม่คิดว่า SDL มีอะไรอย่างนั้นเป็นเพียงวิธีการผสาน

ป.ล. อย่าขับบทสนทนาออกจาก C / C ++ แต่ถ้าคุณไม่ได้ใช้ภาษานั้นด้วยเหตุผลใด ๆ และต้องการบทที่ง่ายกว่า SDL + ตัวใดเป็น Python


2
SFML นั้นก็คือ C ++ ในขณะที่ SDL คือ C สิ่งนี้สร้างความแตกต่างถ้าคุณต้องการเรียนรู้ C ++
jsimmons

5

http://www.gamedev.net/community/forums/mod/journal/journal.asp?jn=263140&reply_id=3598844

ฉันเห็นด้วยกับคำพูดเหล่านี้และคิดว่ามันเป็นการสนทนาที่เป็นตัวเอกว่าทำไม DirectX ถึงดีกว่า OpenGL

บันทึกนั้นเป็นการตอบสนองของเดวิดที่วูล์ฟร์

ฉันหวังว่าจะให้บริการเพื่อความสมดุลออกไปเล็กน้อย ;)

แต่โดยทั่วไปถ้าคุณใช้เฟรมเวิร์กข้ามแพลตฟอร์ม API ข้าม:

ใช้ DirectX บน Windows และ OpenGL บน * nix


อ่านได้ดีมาก =) วิชานี้เป็นเขตที่ทุ่นระเบิด ...
Nailer

6
404 ไม่พบหน้าเว็บ
axel22


ฉันได้รับ 404 บนลิงก์ archive.gamedev.net / ...
Exilyth

4

http://blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX

ฉันเห็นด้วยกับคำพูดเหล่านี้และคิดว่ามันเป็นการสนทนาที่เป็นตัวเอกว่าทำไม OpenGL ถึงดีกว่า DirectX

อย่างไรก็ตามคำถามนี้เป็นเรื่องของความเห็นอย่างแน่นอนและ DirectX มีประโยชน์เหนือ OpenGL โดยเฉพาะอย่างยิ่ง 10 และ 11 และโดยเฉพาะอย่างยิ่งในบริบทของการพัฒนาเกม

นอกจากนี้หากคุณเลือกที่จะไปกับ OpenGL SDLเป็นห้องสมุดที่ยอดเยี่ยมและเป็นที่นิยมมากและมีแหล่งข้อมูลมากมายสำหรับการเรียนรู้ OpenGL (NeHe ฯลฯ ) - แต่นั่นเป็นที่สำหรับคำถามอื่น


1
ในฐานะที่เป็นข้อแตกต่างของการอภิปราย OGL vs DX กลุ่ม Unity จึงตัดสินใจเปลี่ยนมาใช้ DirectX บน Windows อย่างชัดเจนเนื่องจากไดรเวอร์ OpenGL เริ่มต้นสำหรับการ์ดแสดงผลส่วนใหญ่ไม่ดี ฉันไม่มีการอ้างอิงต่อหน้าฉัน แต่ทันทีที่มีการประชุมพวกเขาพูดอะไรบางอย่างตามสายของไดรเวอร์ OGL ว่าเป็นปัญหาความผิดพลาด # 1 ของพวกเขาบน Windows โชคดีที่สิ่งที่เป็นนามธรรมของเลเยอร์สิ่งเหล่านี้หมายความว่าคุณไม่สนใจมุมมองของผู้ใช้
Tetrad

เราสร้างซอฟต์แวร์การสร้างภาพข้อมูลเชิงธุรกิจสำหรับทั้ง unix และ windows และฉันสามารถยืนยันได้ว่าปัญหาส่วนใหญ่ที่เราเห็นใน Windows นั้นเกี่ยวข้องกับไดรเวอร์ OpenGL
drxzcl

1

หากคุณเพิ่งเริ่มออกก็อาจจะดีกว่าการใช้เครื่องมือที่มีอยู่หรือ 2D กรอบเช่นSFML


1

ฉันชอบ Direct X และใช้มันเป็นเวลาหลายปีในหลายโครงการ แต่ถ้าการเรียนรู้ของคุณระวังปัญหารุ่น

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

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


1

Game Engine ของ Haaf

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

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

http://hge.relishgames.com/


0

ฉันอยู่ในตำแหน่งเดียวกับคุณเพิ่งเริ่มทำงานพัฒนาเกมด้วยตัวเอง (บนแพลตฟอร์ม iPhone) ไม่กี่เดือนที่ผ่านมา มาจากพื้นหลัง C จริง ๆ แล้วฉันขอแนะนำให้คุณใช้เฟรมเวิร์ก (โดยเฉพาะ Cocos2d)

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

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

คุณมักจะต้องการดูห้องสมุดฟิสิกส์ที่แตกต่างหลากหลายที่มีอยู่ - Google Chipmunk และ Box2D สำหรับข้อมูลเพิ่มเติม

ไชโย!


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