जोश पेट्री ने कहा :
" यहां सिंड्रोम नहीं बनाया गया है ?"
मैं अपना खुद का इंजन भी लिख रहा हूं, और मुझे लगता है कि इसका कारण वहां के हर डेवलपर के लिए अलग होगा, लेकिन वास्तव में - मुझे आमतौर पर अन्य लोगों के कोड में काम करना पसंद नहीं है। मैं इस अर्थ में मजबूर हूं कि अगर मुझे लगता है कि मैं इसे स्वयं बना सकता हूं, तो किसी और चीज के लिए बसने का कोई मतलब नहीं है ।
मैंने विभिन्न प्रकार के गेम इंजनों का परीक्षण किया, एपीआई प्रतिपादन और इस तरह, विशेष रूप से प्लॉब्स, UNITY WaveEngine, XNAFinalEngine, Love, Ogre, आदि .. कई और अधिक ... मैं खेल लिखना शुरू करना चाहता था - मैंने एक अच्छे आरामदायक की तलाश में बहुत कुछ डाउनलोड किया। और अच्छी तरह से प्रलेखित प्रवेश बिंदु ...
हालाँकि, मेरी समस्या उस समय थी जब मुझे पता नहीं था कि इंजन के नीचे क्या हो रहा है। मैं अच्छा नियंत्रण चाहता था, और मुझे ऐसा ढांचा चाहिए था जिसे मैं अपने हाथ के पीछे की तरह जानता हूं। मैं इस विचार के साथ आया "HEY! मुझे लगता है कि एक ही तरीका है कि मैं यह जानने वाला हूं कि चीज कैसे काम करती है और समझती है कि अपने स्वयं के इंजन को पूरी तरह से और पूरी तरह से खरोंच से बनाने की कोशिश करना है। मेरा अधिकांश प्रोग्रामिंग इतिहास वेब और प्रसंस्करण समाधानों के साथ था। - यह मेरे लिए बिल्कुल नया बॉल गेम था।
जो कि मैंने करना समाप्त कर दिया।
इसलिए मैंने XNA की स्थापना के लिए चुना क्योंकि मैं पहले से ही सी # जानता था, और यह सोचना शुरू कर दिया कि मुझे कैसे या कहां शुरू करना चाहिए। मुझे एक आइडिया चाहिए था।
मैंने फैसला किया कि, कोई बात नहीं, मैं सीधे 3 डी में जाऊंगा ।
नीचे मूल बातें प्राप्त करना अच्छा था - स्प्राइट बैच सामान, लेकिन जैसा कि मैंने प्रगति की मैंने नई बाधाओं और बाधाओं की खोज की - मेरा पहला वास्तविक बैच सीमा है । मेरा लक्ष्य एक ऐसे खेल का निर्माण करना था, जो किसी भी समय कम से कम 10000 संस्थाओं को दृश्य कुंठा में प्रस्तुत कर सके।
मैंने Shader Based Instancing को लागू करने की एक नई यात्रा शुरू की (और जब मैं उस पर था तब HLSL सीखा), मैंने XNA के मॉडल और इफ़ेक्ट ऑब्जेक्ट्स में अपनी जगह बदलने के लिए बनाया। मुझे सबसे पहले VBO स्ट्रीम को समझने में परेशानी हुई; मैंने चीजों को तोड़ दिया - मैं ऑनलाइन सामान के बारे में सवाल पूछ रहा था और जब तक मैं अंत में समझ नहीं पाया कि GPU क्या कर रहा था। इसने भुगतान किया; अब मेरे पास बीस हज़ार से अधिक परीक्षण इकाइयाँ थीं, जो मेरे VBO को PIX (dxsdk) के साथ डिबग करने के कुछ दिनों के बाद अपने व्यूपोर्ट में ज़ूम कर रही थीं।
अब मेरे पास "कुछ" विचार था कि पाइपलाइनों को कैसे काम किया जाता है, लेकिन अभी तक काम नहीं किया गया था - मैंने अपना गेम-स्टेट, कैमरा, पोस्ट इफेक्ट्स और एंटिटी ऑब्जेक्ट्स बनाने का काम समाप्त कर लिया, अपने स्वयं के निर्माण से XNA कंटेंट पाइपलाइन से दूर चला गया लोडर (XNB चीज़ के प्रति व्यक्तिगत नापसंद), एक जटिल गहराई की छँटाई और मिश्रण-राज्य से अलग ज्यामिति श्रृंखला का निर्माण किया और साथ ही स्प्राइट्स और पाठ को खेल दृश्य में पेश किए जाने के लिए प्रेरित किया।
मैं लगभग पूरे एक वर्ष तक लगातार इससे जुड़ता, ठीक करता, बदलता रहा और प्रयोग करता रहा। अंत में, यह बहुत अच्छा निकला। मुझे अब इस बात की समझ थी कि हुड के नीचे क्या चल रहा है, क्योंकि मैंने इसे बनाया है - मेरा बच्चा।
अब मेरा इंजन ज्यादातर स्थिर था और बस समाप्त हो गया था। यह सही नहीं है: स्क्रिप्टिंग सम्मानजनक है और जीयूआई महान नहीं था। लेकिन मैं फिर भी इसे प्यार करता था। कोड, एसेट्स और मीडिया की हजारों लाइनें - एक निजी 2 जीबी गिट रिपॉजिटरी में होली, और सभी सिरदर्द जो मुझे एक प्रकार के विकास को करने की कोशिश करने से गुजरना पड़ा, जो मैंने पहले कभी नहीं किया था। मैंने जो भी बाधा पार की, वह एक सीख थी - और एक राहत थी।
मैंने लगभग वह सब कुछ खींच लिया जो मैं चाहता था।
लेकिन अंत में - मैंने फैसला किया कि उसे नीचे रखने का समय आ गया है।
जितना मैंने अपने आप को नेट, और अन्य gamedev मित्रों से सलाह के साथ अपने आप से इतना बड़ा इंजन लिखने से संतुष्ट किया, मैंने फैसला किया कि मैं इसे फिर से करने जा रहा हूं - और इसे बेहतर करूंगा - क्योंकि अब इस समय को मैं ज्यादातर जानता हूं मै क्या कर रही हूँ।
वह परियोजना अभी भी मेरे जीआईटी रेपो में टक टिकी हुई है।
एक नया इंजन (इस बार मोनोगेम पर) लिखने में मेरा दूसरा पास अच्छा चल रहा है। जब कुछ टूटता है, तो इसे ठीक करना आसान होता है। कम गड़बड़। मुझे उम्मीद है कि इस साल मैं सार्वजनिक रूप से अपना खेल दिखाऊंगा, क्योंकि मैं अपने कोड से थोड़ा 'बहुत' जुड़ा हुआ हूं।
अंत में मेरा अपना इंजन लिखना यह है कि मैंने इसे कैसे सीखा 'कैसे' किया, जबकि यह कहने में सक्षम था कि मैं जानता हूं और समझता हूं कि हर घटक क्या करता है, और उन्हें कैसे काम करना चाहिए। मैं वास्तव में अन्य लोगों के कोड को पढ़ने से घृणा करता हूं, विशेष रूप से बड़ी अनिर्दिष्ट परियोजनाओं के लिए। मुझे वह सब कुछ चाहिए जो मैं अपने द्वारा बनाए जाने के लिए उपयोग करता हूं।
यह सिर्फ मुझे हालांकि है। मुझे संदेह है कि मैं कभी भी एक पूर्व-निर्मित इंजन का उपयोग करूंगा, शायद इसलिए क्योंकि मुझे लगता है कि मेरे लिए अपने ढांचे को लिखने और किसी और के कोड - पूर्ण नियंत्रण के साथ व्यवहार करने की तुलना में यह केवल और अधिक मजेदार है।