गेम इंजन विकसित करने के लिए एक प्रोग्रामर को विशिष्ट गणित, भौतिकी, एआई और सामान्य अवधारणाओं को क्या जानना चाहिए? [बन्द है]


9

वेब और डीबी केंद्रित अनुप्रयोगों के एक प्रोग्रामर होने के नाते, मुझे डेटा संरचनाओं जैसे कि सूचियों, पेड़ों, रेखांकन आदि में ज्ञान है, मैं ईमानदारी से अपने कोडिंग में इन डेटा संरचना एल्गोरिदम का बहुत कम उपयोग करता हूं, जैसे कि सादे सरणियों में चीजों को छांटने के अलावा। लगभग पूरी तरह से क्लाइंट-ओरिएंटेड फ्रेमवर्क के साथ काम किया, जहां सभी मुख्य कार्यक्षमता का निर्माण किया गया था। मुझे C, PHP, Java, HTML, PL / SQL और MySQL पता है। मैं फिलहाल पायथन सीख रहा हूं।

मैं खेल के विकास के साथ शुरुआत करना चाहता हूं। मैंने शुरुआती लोगों के लिए खेल विकास के लिए सुझाव, सुझाव और दृष्टिकोण के बारे में अन्य प्रश्न देखे हैं। मैं इन बिंदुओं को समझता हूं, और उत्तरों के साथ स्पष्ट हूं। पोस्ट करने के कुछ दिनों बाद, मैंने एक गेम इंजन बनाने से पहले एक लेख लिखें, गेम, न कि इंजन , और महसूस किया कि मुझे एक गेम को लागू करना चाहिए। फिर भी, मेरे पास सवाल हैं।

मेरा उद्देश्य है

  • डेटा संरचना एल्गोरिदम, गणित और भौतिकी अवधारणाओं का उपयोग करते हुए मेरे मूल स्तर के प्रोग्रामिंग कौशल में सुधार करें।
  • कोर स्तर की कोडिंग में खुद को शामिल करने के लिए, एक अच्छे गेम इंजन को लागू करें।
  • एअर इंडिया अनुसंधान क्षेत्र में अपना रास्ता प्रशस्त करने के लिए।

गेम इंजन विकसित करने के लिए एक प्रोग्रामर को विशिष्ट गणित, भौतिकी, एआई और सामान्य अवधारणाओं को क्या जानना चाहिए?

जवाबों:


11

डेटा संरचनाएं: यह निश्चित रूप से एक वैध प्रश्न है। हालांकि, जबकि कुछ डेटा संरचनाएं किसी भी प्रकार के गेम के लिए उपयोगी होती हैं (जैसे कि आप पहले ही उल्लेख कर चुके हैं, सूची, पेड़ ...), अन्य ऐसे हैं जो बहुत विशिष्ट हैं। उदाहरण के लिए, ऑक्ट्रीज़ 3D प्रोग्रामिंग में बहुत उपयोगी हो सकते हैं, लेकिन शुद्ध 2 डी वातावरण में आपको शायद उन लोगों की ज़रूरत नहीं होगी।

एल्गोरिदम : अंगूठे का एक ही नियम लागू होता है। उदाहरण के लिए, शुद्ध 2 डी वातावरण में, टकराव का पता लगाने का काम 3 डी की तुलना में बहुत अलग तरीके से होता है।

महत्वपूर्ण गणितीय क्षेत्र: एक इंजन देव के लिए सबसे महत्वपूर्ण क्षेत्र से परिचित होने की रेखीय बीजगणित और अधिक उन्नत बीजगणित विषय (Quaternions) है। वास्तव में काफी सरल, यदि आप रैखिक बीजगणित के साथ सहज हैं (और मेरा मतलब है कि सरल मैट्रिक्स गुणन से परे), आपकी शुरुआत एक अच्छी शुरुआत से।

अगला ist ज्योमेट्री, जो इंजन देव में वैसे भी रेखीय बीजगणित से अच्छी तरह से जुड़ता है, और शायद किसी भी उल्लेख का उल्लेख करने की आवश्यकता नहीं है।

इसके अलावा, बेसिक कैलकुलस की ठोस समझ रखने के लिए कभी भी दर्द नहीं होता है। यह हस्तरेखा में आता है जब भौतिकी इंजन या अधिक उन्नत छायांकन विषयों के साथ काम करता है।

रुचि के अन्य विषय होने चाहिए: कॉम्बिनेटरिक्स, सांख्यिकी

भौतिकी: यह अनिवार्य नहीं है, अगर आप साधारण गेम बनाने का इरादा रखते हैं। चोट नहीं करता है, लेकिन आप इस मामले में हाई-स्कूल भौतिकी के साथ ठीक हो जाएंगे।

यदि आप एक भौतिकी इंजन लिखने, या किसी मौजूदा आर्किटेक्चर को लागू करने के बारे में सोच रहे हैं, तो हाँ, यह अनिवार्य है। लेकिन डर नहीं, विशेष रूप से गेम-देवों के लिए कई भौतिकी पुस्तकें लिखी गई हैं। बस ध्यान रखें, इन BEFORE को पढ़ें आप भौतिकी के साथ गेम कोड करना शुरू करते हैं। यदि आपके गेम में भौतिकी होनी चाहिए, तो ये इंजन आपके कोर आर्किटेक्चर में गहराई से बंध जाएंगे।

AI: पूरी तरह से ईमानदार होने के लिए, यदि AI आपका मुख्य हित है, तो मैं एक संपूर्ण इंजन लिखने से परेशान नहीं होता। जब आप के साथ खेलने के लिए एक मौजूदा आर्किटेक्चर है, तो एआई अधिक मजेदार है। इंजन लिखना एक दर्द होगा, और काफी समय होगा जब तक आप मज़ेदार एआई एल्गोरिदम को लागू करने में सक्षम नहीं होंगे।

आप किस प्रकार के गेम को विकसित करने की इच्छा रखते हैं? शायद मैं इस जानकारी के साथ इन बिंदुओं पर अधिक विस्तार से बता सकता हूं।


आपके विस्तृत जवाब के लिए धन्यवाद। आपके प्रश्न के उत्तर के रूप में .. इस समय मेरे मस्तिष्क में कोई विचार नहीं है, लेकिन कुछ 3 डी गेम इंजन विकसित करना चाहते हैं। लेकिन कुछ 2d गेम से शुरू करने के लिए बेहतर सोचें और पर्यावरण को जानें। इन सभी से पहले मुझे गेम देखने और महसूस करने के लिए कुछ गेम खेलना चाहिए (जैसा कि मैंने कभी वीडियो गेम नहीं खेला :-))। ताकि मेरे लिए किताबों की शब्दावली और अन्य चीजों को समझना आसान हो जाए। मैंने नीचे बहुत उपयोगी पाया,
droidsites

क्षमा करें मेरी पिछली टिप्पणी में लिंक याद आया
droidsites

पूर्व में मैंने सिफारिश की होगी कि आप पहले से 2 डी गेम से शुरुआत करें अगर आप 3 डी गेम विकसित करना चाहते हैं। हालांकि, XNA जैसे आर्किटेक्चर के उत्थान के साथ, मेरा मानना ​​है कि सीधे 3 डी में गोता लगाने में अधिक मज़ा आता है। क्या आप पहले से ही C # / XNA पर एक नज़र डाल चुके हैं? नहीं होना चाहिए एक समस्या आपके प्रोग्रामिंग पृष्ठभूमि को देखते हुए
माइकल Kissner

नहीं, मैंने इसकी जाँच नहीं की थी। हां ... C # के लिए जाना कोई समस्या नहीं है। लेकिन मुझे अजगर की बात में बहुत दिलचस्पी है :-)
droidsites

यदि आप पाइथन में रुचि रखते हैं और आप एक गेम बनाने की तकनीक बनाने के बजाय गेम बनाने में अधिक रुचि रखते हैं, तो आप पांडा 3 डी या ब्लेंडर गेम इंजन की जांच कर सकते हैं।
सीन मिडलडाइच

1

हालांकि यह पूछने के लिए वैध हो सकता है कि कौन से डेटा संरचनाएं खेल के विकास में सबसे अधिक उपयोग की जाती हैं, यह पूछने के लिए अधिक वैध है कि कौन सी डेटा संरचनाएं विशिष्ट समस्याओं के लिए उपयोग की जाती हैं। मैं आसानी से बता सकता हूं कि गेम में हैश टेबल सुपर कॉमन हैं, लेकिन यह आपको अपने खुद के कोड में एक हैश टेबल कब और कहां उपयोग करना है (और उपयोग नहीं करना है!) के संदर्भ में कुछ भी उपयोगी नहीं बताएगा। :)

गणित के संदर्भ में, आपको रैखिक बीजगणित (वैक्टर, मेट्रिसेस, लीनियर सिस्टम सॉल्यूशन, आदि) की बहुत मजबूत समझ होनी चाहिए, त्रिकोणमिति की बहुत मजबूत समझ है, और कम से कम कैलकुलस (सरल व्युत्पन्न और एकीकरण) की एक बुनियादी समझ है। । कोई भी परिचयात्मक कॉलेज-स्तरीय रैखिक बीजगणित पाठ्यक्रम आपको सही रास्ते पर सेट करना चाहिए, यदि आप सभी को सामान्य 3 डी ग्राफिक्स सिद्धांतों के साथ काम करना शुरू करने के लिए जानने की आवश्यकता नहीं है। मैं नीचे एक पुस्तक भी जोड़ता हूं, जो आपको काफी मददगार लग सकती है।

भौतिकी के लिए, आप एक सवारी के लिए हैं। भौतिकी को दो अलग-अलग श्रेणियों में विभाजित किया जा सकता है: टक्कर का पता लगाने और टक्कर की प्रतिक्रिया। आप टकराव का पता लगाने के पीछे के गणित को पूरी तरह से जान सकते हैं, क्योंकि वह गणित कमोबेश उसी तरह है जैसा कि आपको ग्राफिक्स करने की आवश्यकता है (विशेष रूप से पेड़ों और नक्शों के निर्माण की आवश्यकता है), और आप उस सामान का उपयोग करने जा रहे हैं अपने खेल तर्क के रूप में अच्छी तरह से।

टकराव की प्रतिक्रिया "सरल" से जटिल स्तर के हास्यास्पद स्तर तक भिन्न हो सकती है, और यहां तक ​​कि साधारण सामान पहले से गैर-सहज हो सकता है। मैं अत्यधिक, अत्यधिक अनुशंसा करता हूं कि आप उस सामान को मौजूदा लाइब्रेरी जैसे बुलेट, हॉक, फिजिक्स, या इसी तरह (या अगर आप 2D गेमप्ले पर काम कर रहे हैं तो Box2D) तब तक छोड़ दें, जब तक कि आप अपने मौजूदा गणित और एल्गोरिथ्म के साथ सहज नहीं हो जाते। ज्ञान और निर्णय आप सीखना चाहते हैं कि भौतिकी इंजन कैसे काम करते हैं। फिर मैं आपको अपने पहले प्रयास के रूप में एक बहुत ही सरल 2D भौतिकी इंजन बनाने की सलाह दूंगा। 3 डी भौतिकी इंजन पागलपन से भरे हुए जानवर हैं, और (यकीनन) गेम प्रोग्रामिंग का अब तक का सबसे जटिल और कठिन हिस्सा है, यही वजह है कि भौतिकी इंजन खेलों में सबसे अधिक लाइसेंस प्राप्त तृतीय-पक्ष तकनीक है। आप बहुत सारे खेल नहीं देखते हैं जो ' पेशेवर दुनिया में हॉक या फिज़िक्स का उपयोग करते हुए, कितने गेम में स्क्रैच होम-ग्रो किए गए ग्राफिक्स इंजन और कोर इंजन कोड हैं। यहां तक ​​कि ऐसी कंपनियां जो कुछ भी नहीं करती हैं, लेकिन गेम इंजन का निर्माण करती हैं, आमतौर पर एक भौतिकी इंजन को लाइसेंस देती हैं, जैसे कि अवास्तविक अपने स्वयं के भौतिकी इंजन को शामिल करने के बजाय केवल PhysX का उपयोग करता है।

मैं आपको शुरू करने के लिए निम्नलिखित पुस्तकों की सिफारिश करूंगा। पहली बुनियादी गणित पर एक प्रारंभिक स्तर की पुस्तक है जिसे आपको 3 डी गेम प्रोग्रामर के रूप में जानना होगा:

http://www.amazon.com/Mathematics-Programming-Computer-Graphics-Third/dp/1435458869

दूसरी एक ऐसी पुस्तक है जो टकराव का पता लगाने वाले एल्गोरिदम (टकराव की प्रतिक्रिया नहीं!) का पता लगाती है, जो आपके ग्राफिक्स कोडिंग और आपकी इंटेलिजेंस कोडिंग दोनों में मदद करेगी:

http://www.amazon.com/Real-Time-Collision-Detection-Interactive-Technology/dp/1558607323

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.