ฉันจะเขียนคำตอบที่เหมาะสมตั้งแต่ฉันอยู่ที่เวทีของคุณประมาณ 2 เดือนที่ผ่านมา
ฉันเริ่มเขียนโปรแกรมเกมที่ง่ายมากเพื่อให้ฉันสามารถเรียนรู้ OpenGL 3.x ได้ดีขึ้น แต่เนื่องจากฉันไม่มีประสบการณ์และความรู้ที่กระจัดกระจายเกี่ยวกับวิธีการออกแบบเกม 3 มิติฉันมักจะเจอปัญหาที่ฉันรู้ว่าฉันควรออกแบบชั้นเรียนของฉัน ต่างกัน
ไม่ต้องกังวลกับมัน ด้วยการขาดประสบการณ์ของคุณคุณจะไม่สามารถคิดเกี่ยวกับความเป็นไปได้ทั้งหมดและวิธีการใช้คลาสที่กำหนดในเครื่องยนต์ของคุณ เป็นการดีที่สุดถ้าคุณพิจารณาคุณสมบัติหลักของคลาสใช้งานและปรับโครงสร้างในภายหลัง อย่าพยายามไตร่ตรองสิ่งต่างๆคุณจะเสียเวลาในขั้นตอนนี้ เกมแรกของฉันยุ่งเหยิงไปหมดฉันแน่ใจว่ามันเป็นกรณีของคนส่วนใหญ่
ปัญหาอื่น ๆ ที่ฉันกำลังเผชิญคือวิธีการติดตามเวลาอย่างกระชับในเกมและอัปเดตการเคลื่อนไหวตามต้องการและวิธีบอกตัวแสดงผลว่าต้องมีการวาดใหม่
สิ่งที่คุณต้องการคือความรู้เกี่ยวกับเกมวนรอบ นี่เป็นจุดเริ่มต้นที่ดี เมื่อคุณเริ่มเขียนโค้ดที่ซับซ้อนมากขึ้นเช่นการจัดการกับฟิสิกส์คุณอาจต้องพิจารณาลูปด้วยเวลาของตัวแปรเฟรม แต่เริ่มเล็ก ๆ การวนรอบเกมเฟรมคงที่ง่ายน่าจะเพียงพอสำหรับคุณในตอนนี้
นอกจากนี้ฉันยังต้องทำให้ฟังก์ชั่นรับและตั้งค่าสำหรับการส่งค่าสถานะต่าง ๆ จากวัตถุหนึ่งไปยังวัตถุอื่นนั่นคือการปฏิบัติที่ไม่ดีหรือไม่?
นี่เป็นคำถามเพิ่มเติมเกี่ยวกับวิศวกรรมซอฟต์แวร์ เมื่อเวลาผ่านไปคุณจะเห็นว่าข้อมูลใดที่คุณต้องปกป้องและปลอดภัย อาจเป็นวิธีที่ดีที่สุดหากคุณใช้งานคุณลักษณะแล้วดูว่ามีอะไรที่ไม่ได้เปิดเผยภายนอกและสามารถใช้เป็นข้อมูลสาธารณะได้
มันเป็นเรื่องของประสบการณ์ คุณจะเขียนคลาสกล้องจากนั้นคุณจะเห็นฟังก์ชันการทำงานที่คุณต้องการจากด้านข้างเมทริกซ์แปลง หากคุณต้องการคำแนะนำในทันทีใด ๆ ฉันต้องบอกว่าใช้กระดูกเปลือยแล้วขยายในภายหลัง
บทความและหนังสือ:
หนังสือเหล่านี้พูดคุยเกี่ยวกับสถาปัตยกรรมของเอ็นจิ้นเกมสมัยใหม่และท่อส่ง พวกเขาจะให้ภาพรวมที่ดีเกี่ยวกับเทคโนโลยีพื้นฐาน ฉันขอแนะนำหนังสือเล่มแรกหากคุณต้องเลือกมันน้อยกว่า "เอนเอียง" ต่อเทคโนโลยีบางอย่างแม้ว่าในท้ายที่สุดคุณอาจต้องการผ่านทั้งสองอย่างเนื่องจากพวกเขาเป็นแหล่งความรู้ที่ดี
http://www.amazon.com/Game-Engine-Architecture-Jason-Gregory/dp/1568814135
http://www.amazon.com/Game-Coding-Complete-Third-Edition/dp/1584506806
http://ogldev.atspace.co.uk/index.html
http://www.arcsynthesis.org/gltut/index.html
http://www.opengl.org/sdk/docs/man3/
http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/glsl-core-tutorial-index/
http://www.opengl.org/sdk/docs/manglsl/
http://www.peroxide.dk/papers/collision/collision.pdf
(ฉันกำลังเชื่อมโยงสิ่งนี้เพราะฉันพบว่ามันยากที่จะหาบทความเกี่ยวกับวิธีการตรวจจับการชนกันของ 3D ที่เหมาะสม
มีหนังสือมากขึ้น แต่เมื่อคุณทำเสร็จแล้ว (โดยเฉพาะ Game Engine Architecture) คุณจะรู้ได้ดีกว่าสิ่งที่คุณต้องการ
Btw ฉันยังคงใช้ freeglut คุณจะแนะนำให้ฉันย้ายไปที่ระบบหน้าต่างที่ดีขึ้นก่อนที่จะดำเนินการต่อไปหรือหลังจากที่ฉันเข้าใจ OpenGL ดีขึ้นหรือไม่
WinAPI ถ้าคุณรู้สึกว่าคุณมีเวลาและต้องการเรียนรู้การเขียนโปรแกรม Windows (ถ้าคุณพัฒนา Windows) FreeGLUT นั้นใช้ได้สำหรับการเรียนรู้ แต่ในที่สุดคุณจะต้องการฟังก์ชั่นเพิ่มเติม แม้ว่าถ้าคุณต้องการไปเส้นทางอื่นอย่างสมบูรณ์คุณสามารถเปิด OpenGL ด้วยไลบรารีอย่าง SFML หรือ SDL ติดกับ FreeGLUT เว้นแต่คุณจะดื้อรั้นเหมือนฉัน ฉันตรงไปหา WinAPI