2009-08-24 5 views
10

मैं अधिकांश भाग के लिए एक सी # डेवलपर हूं। कॉलेज में वापस मेरे पास सी/सी ++ पर कक्षाएं थीं इसलिए मैं "सी को जानता हूं" और यह एक अच्छा हिस्सा है क्योंकि मैं सी # डेवलपर हूं।3 डी गेम इंजन (जैसे आईडी टेक 3) के कोड को समझने की कोशिश करते समय आप कैसे शुरू करते हैं?

हालांकि मुझे पेशेवर रूप से सी/सी ++ में कोड करने का मौका कभी नहीं मिला है और मैं अध्ययन करना चाहता हूं कि एक आधुनिक ग्रेड इंजन कैसे काम करता है, साथ ही औद्योगिक ग्रेड सी/सी ++ ऐप कैसे काम करता है।

समस्या यह है कि, मुझे नहीं पता कि कहां से शुरू करना है। जैसा कि, मैंने क्वैक 3 इंजन source code डाउनलोड किया है (जिसे id Tech 3 पर पुनर्निर्मित किया गया है) और मुझे यह भी सुनिश्चित नहीं है कि इसके साथ कहां से शुरुआत करें।

एक आश्रित सी #/WinForms कैसे एक बड़े सी कोडबेस पर आईडी टेक 3 या कुछ अन्य बड़े एएए इंजन पर हमला करना चाहिए?

+2

बस FYI: भूकंप 3 स्रोत "भयानक" है btw अगर आप अच्छा स्वच्छ कोड में रुचि रखते हैं। मेरा मतलब है कि यह काम करता है, यह बहुत ही कुशल है। लेकिन वास्तव में, यह भयानक है, क्योंकि अधिकांश उत्पादन गेम कोड है। उस ने कहा कि मैं बस कूदता हूं और "कुछ" करता हूं - मैं व्यक्तिगत रूप से इसे देखकर कोड को समझ नहीं सकता। – Justicle

+0

हाँ मुझे स्वच्छ कोड में कम दिलचस्पी है और आधुनिक 3 डी गेम इंजन कैसे काम करते हैं इस बारे में अधिक रुचि रखते हैं। यहां तक ​​कि अगर वे जिस तरह से भूकंप 3 में बातें करते हैं पुराना है, यह एक शुरुआत –

उत्तर

12

सबसे सरल 3 डी "हैलो वर्ल्ड" प्रोग्राम करने का प्रयास करें जो इंजन के सबसे बुनियादी सबसेट का उपयोग करता है। वह शायद आपको भार सिखाएगा।

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

+0

+1 बिल्कुल नहीं है - केवल एक नया कोडिंग काम पर पहले दिन की तरह, सबसे अच्छी बात में कूद और बगों शुरू करने के लिए है - आप जल्दी ही सब कुछ पता लगाना आप पता करने की जरूरत। – Justicle

4

एक मोड लिखना एक अच्छा प्रारंभिक बिंदु होगा।

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

एक टेलीपोर्ट हथियार जोड़ें। यह आपको टकराव की पहचान के बारे में और बताएगा जो आप जानना चाहते हैं।

कुछ महत्वपूर्ण कार्य हैं जो अधिकांश गेम को संभालते हैं: इंजन निर्यात, trap_ * कॉल। यह इंजन कोड खोलने और उनके कार्यान्वयन को देखने से पहले उनके साथ वास्तव में क्या कर रहे हैं, यह जानने में बहुत मदद कर सकता है।

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

1

शायद ज़रुरत आप अन्य 3 डी खेल इंजन के लिए देख रहे हैं और शायद उन्हें एक दूसरे के साथ तुलना करने के लिए चाहते हो सकता है में, dim3 देखें:

http://code.google.com/p/dim3/

3

यह एक मजाक की तरह लगता है, लेकिन: main() लगता है समारोह। यह कार्यक्रम के निष्पादन का अच्छी तरह से परिभाषित प्रारंभिक बिंदु है, और आप वहां से सबकुछ का पालन करने में सक्षम होना चाहिए।

इससे आपको यह पता लगाने में मदद करनी चाहिए कि किस उपप्रणाली पर निर्भर करता है, क्योंकि उनके प्रारंभिक क्रम के क्रमशः नीचे-नीचे होंगे। उदाहरण के लिए, एक सामान्य इंजन इसकी स्मृति, डीबगिंग और उपप्रणाली का पता लगाने शुरू कर देगा, क्योंकि अधिकांश अन्य प्रणालियों को उन सेवाओं को उठाने और चलाने की आवश्यकता होती है।

आपको गेम के मुख्य पाश में रास्ता तय करने में सक्षम होना चाहिए, और समझना चाहिए कि लूप नियंत्रण से पहले क्या आवश्यक है।

+0

यह विंडोज सी ++ प्रोग्राम के साथ अनुभव की कमी में जुड़ा हुआ है - मुझे WinMain फ़ंक्शन मिला है लेकिन यह स्पष्ट नहीं है कि यह कुछ भी कैसे करता है। मुझे लगता है कि यह कदम उठाने के लिए समय है ... –

1

आंद्रे लामोथे काफी मुझे सब कुछ खेल प्रोग्रामिंग के बारे में मैं जानता हूँ कि सिखाया। एक बार जब आप इन दो पुस्तकों से गुज़र जाएंगे, तो आपको 3 डी इंजनों के बारे में जानने के लिए जो कुछ भी पता होना चाहिए, उसे बहुत अधिक पता चलेगा।

  1. Tricks of the Windows Game Programming Gurus
  2. Tricks of the 3D Game Programming Gurus - Advanced 3D Graphics and Rasterization

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

इसके अलावा करने के उद्देश्य NeHe Gamedev Tutorials में देखने का प्रयास कर सकते हैं।

0

मैं एक बड़ी तैयार उत्पाद पढ़ने के एक बड़े प्रशंसक कभी नहीं किया गया है। और विशेष रूप से क्वैक कोड बेस। निश्चित रूप से आप इससे अच्छी तरह से सीख सकते हैं लेकिन यह आपका प्रारंभिक बिंदु नहीं होना चाहिए। गेम प्रोग्रामिंग में आपको पहले कुछ नई अवधारणाओं को सीखने की जरूरत है।

मैं सी पकड़ पर थोड़ा ++, लेकिन अब के लिए XNA स्थापित (आप खेल बनाना चाहते हैं तो आप वास्तव में कुछ बिंदु पर इसे वापस करने के लिए जाने की जरूरत है) डाल करने के लिए सुझाव देंगे। यह सब कुछ .NET के रूप में महान फ्रेमवर्क के रूप में है। वहां गेम एक्सएनए के बारे में बहुत सारे ट्यूटोरियल हैं।

संबंधित मुद्दे