मैं लगभग 2 महीने पहले आपके चरण में था, तब से मैं एक उचित उत्तर लिखूंगा।
मैंने एक बहुत ही सरल गेम इंजन लिखना शुरू कर दिया, ताकि मैं ओपनजीएल 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
(मैं इसे लिंक कर रहा हूं क्योंकि मुझे लेखों को खोजने में मुश्किल हुई कि कैसे 3 डी टक्कर का पता लगाया जाता है।
अधिक किताबें हैं, लेकिन जब तक आप इस (विशेष रूप से गेम इंजन आर्किटेक्चर) के साथ हो जाते हैं, आपको बेहतर पता चल जाएगा कि आप क्या चाहते हैं।
Btw, मैं अभी भी freeglut का उपयोग कर रहा हूँ, क्या आप मुझे प्रगति से पहले या OpenGL की बेहतर समझ पाने के बाद एक बेहतर विंडोिंग सिस्टम में जाने की सलाह देंगे?
WinAPI, अगर आपको लगता है कि आपके पास विंडोज प्रोग्रामिंग सीखने का समय और इच्छा है (यदि आप विंडोज के लिए विकसित कर रहे हैं)। FreeGLUT सीखने के लिए ठीक है, लेकिन अंततः आप अधिक कार्यक्षमता चाहते हैं। हालाँकि, यदि आप पूरी तरह से दूसरे मार्ग पर जाना चाहते हैं तो आप एसएफएमएल या एसडीएल जैसे पुस्तकालयों के साथ ओपनजीएल लॉन्च कर सकते हैं। FreeGLUT के साथ रहो, जब तक तुम मेरी तरह जिद्दी नहीं हो। मैं सीधे WinAPI के लिए चला गया।