यह परियोजना निश्चित रूप से मेरी सबसे उन्नत परियोजनाओं में से एक है। मैंने Twilight Princess (Nintendo GameCube) के लिए एक वेब BMD व्यूअर प्रोग्रामिंग शुरू की क्योंकि मुझे यह गेम पसंद है और एक गेम निर्माता के रूप में, मैं स्तरों का विश्लेषण करने और उन्हें कैसे बनाया गया था इसके विवरण में खुद को डुबोने से रोमांचित हूं। यह परियोजना मेरे लिए उस जुनून का पता लगाने और उस खेल की गहरी समझ हासिल करने का एक तरीका है जिसे मैं पसंद करता हूं। यह एक चुनौतीपूर्ण और पुरस्कृत सीखने का अनुभव है। मैं यह देखने के लिए उत्साहित हूं कि यह परियोजना मुझे कहां ले जाएगी और मैं इस दौरान क्या नई खोज करूंगा। अब तक इस परियोजना में मुझे महीनों और महीनों का शोध करना पड़ा। शोध जो 20 से अधिक अन्य लोगों के काम पर आधारित है जिन्होंने rarc, bmd, gcm yaz0, j3d, tev आदि के बारे में अपने ज्ञान और निष्कर्षों की जांच की और उन्हें साझा किया।
धन्यवाद: ("लॉर्डनेड", "थैकिस", "जैस्पर सेंट पियरे", "कीवी", "डॉल्फिन एम्यूलेटर टीम", "गामा", "ज़ैन") - उनके अग्रणी प्रयासों के लिए!
पानी, कोहरा, एनिमेटेड टेक्सचर वर्तमान में रोडमैप पर मौजूद विशेषताएं हैं
कार्यक्रम को three.js और webGL का उपयोग करके प्रोग्राम किया गया था। यह क्रोम ब्राउज़र में लगातार 60fps पर चलता है। दुर्भाग्य से मैं आपके साथ इंटरैक्टिव व्यूअर (मॉडल, कमरे आदि) साझा नहीं कर सकता, क्योंकि मैं यह नहीं देखना चाहता कि शोध के उचित उपयोग की सीमाएँ कितनी दूर हैं। मेरे मोंटाज का आनंद लें:
https://api.fenixfox-studios.com/assets/d43523dd-5cbe-4da4-9c7d-2d275690050a
BMD और BDL, Nintendo द्वारा अपने GameCube और Wii गेम में मॉडल डेटा संग्रहीत करने के लिए उपयोग किए जाने वाले फ़ाइल स्वरूप हैं। वे Nintendo की J3DGraph लाइब्रेरी का हिस्सा हैं, जो बड़े JSYSTEM टूलकिट का एक घटक है। BMD पहली बार Luigi's Mansion गेम में दिखाई दिया। यह तब सुपर मारियो सनशाइन में इस्तेमाल किया जाने वाला एकमात्र मॉडल प्रारूप था। विंड वेकर ने आगे BDL प्रारूप पेश किया, जो MDL3 नामक सामग्री FIFO निर्देशों के लिए एक अतिरिक्त अनुभाग के साथ BMD का एक विस्तार है। MDL3 का उपयोग रेंडरिंग दक्षता में सुधार करने के लिए किया जाता है। सुपर मारियो गैलेक्सी 2 इस मॉडल प्रारूप का उपयोग करने वाला अंतिम गेम था।
JSYSTEM एक मालिकाना गेम डेवलपमेंट टूलकिट है जिसका उपयोग निनटेंडो अपने कंसोल के लिए गेम बनाने के लिए करता है। इसमें 3D मॉडलिंग, एनीमेशन और भौतिकी जैसे कार्यों के लिए विभिन्न लाइब्रेरी और टूल शामिल हैं। J3DGraph JSYSTEM के भीतर एक लाइब्रेरी है जो 3D ग्राफ़िक्स को संभालने के लिए फ़ंक्शन प्रदान करती है और BMD और BDL फ़ाइल फ़ॉर्मेट के लिए ज़िम्मेदार है। BMD का मतलब बाइनरी मॉडल है और BDL का मतलब बाइनरी डिस्प्ले लिस्ट है।
JSYSTEM टूलकिट की खोज रिवर्स इंजीनियरों और गेम मॉडर्स ने 2000 के दशक की शुरुआत में की थी, जब उन्होंने निन्टेंडो गेमक्यूब और Wii गेम के कोड का विश्लेषण और डीकंपाइल करना शुरू किया था। उन्होंने पाया कि कई गेम में समान कोड संरचना और लाइब्रेरीज़ थीं, जिसके कारण उन्हें एक सामान्य डेवलपमेंट टूलकिट के अस्तित्व पर संदेह हुआ। बहुत सारे शोध और प्रयोग के बाद, वे गेम से JSYSTEM लाइब्रेरीज़ की पहचान करने और उन्हें निकालने में सक्षम थे, और J3DGraph लाइब्रेरी और BMD और BDL फ़ाइल फ़ॉर्मेट सहित इसके विभिन्न घटकों का दस्तावेज़ीकरण और रिवर्स-इंजीनियरिंग करना शुरू किया।
जैसे-जैसे JSYSTEM की समझ बढ़ी, मॉडर्स ने JSYSTEM प्रारूप के साथ काम करने के लिए अपने स्वयं के उपकरण विकसित करना शुरू कर दिया और अपने स्वयं के कस्टम मॉडल, बनावट बनाना शुरू कर दिया और JSYSTEM लाइब्रेरी का उपयोग करके नए गेम भी बनाए। इससे एक जीवंत मॉडिंग समुदाय का निर्माण हुआ जो आज भी मौजूद है, जिसमें कई मॉडर्स अपने निष्कर्षों और उपकरणों को ऑनलाइन साझा करते हैं।
शुरुआत में, मुझे *.dol या *.gcm कंटेनर प्रारूपों में वास्तव में कोई दिलचस्पी नहीं थी क्योंकि अन्य लोगों ने पहले से ही उपयोग के लिए तैयार उपकरण प्रदान करने में बहुत अच्छा काम किया था (बाद में मैंने खुद gcm रीडर बनाया)। थोड़ी खोजबीन के बाद, मुझे ऐसे फ़ोल्डर मिले जो देखने में ऐसे लग रहे थे जैसे उनमें कुछ दिलचस्प चीज़ें हो सकती हैं, जैसे कमरे और अन्य तत्व। बड़े क्षेत्र, जैसे कि फैरन वुड्स, को टुकड़ों में विभाजित किया गया था और अलग-अलग फ़ाइलों में सहेजा गया था, जिन्हें बाद में पूरा क्षेत्र बनाने के लिए मर्ज किया जाएगा।
लेकिन मैं आसान शुरुआत करना चाहता था। शायद कुछ सरल! फ़ोल्डर में ज़्यादातर सामान को अनपैक करने के बाद, मैंने फ़ाइलों को आकार के अनुसार सॉर्ट किया और एक बहुत ही सरल ऑब्जेक्ट पाया। जब मैंने हेक्सवर्कशॉप में फ़ाइल की जाँच की, तो मुझे VTX, INF, DRW और SHP जैसे मार्कर मिले। वर्टेक्स पोजीशन से, मैं बता सकता था कि यह एक साधारण दरवाज़े की घुंडी वाला एक सपाट बॉक्स था। मुझे जल्द ही एहसास हो गया कि यह झील के किनारे बने मंदिर का दरवाज़ा था।
मुझे पता था कि वस्तु कैसी दिखेगी, और मुझे पता था कि मूल जानकारी जैसे शीर्ष निर्देशांक और बनावट संबंधी जानकारी कहां ढूंढनी है।
आपको सावधान रहना होगा क्योंकि कुछ जानकारी आपके मामले के लिए बिल्कुल गलत है। कुछ विशेषताएँ उन दस्तावेज़ों में बताई गई बातों से अलग थीं। लेकिन 3D मॉडल और उसकी बनावट निकालने के लिए आपको बस एक ऐसी फ़ॉर्मेट शीट की ज़रूरत है!
कम से कम एक साधारण वस्तु को निकालने के मेरे सफल प्रयास के बाद, मैंने सोचा कि अब आगे खुदाई करने और पूरे क्षेत्र को संभालने का समय आ गया है! उसी एल्गोरिथ्म से लैस जो मैंने अभी लिखा था, मैंने R00_00 नामक फ़ाइल चुनी। मुझे उम्मीद थी कि यह ऑर्डन विलेज या फैरन वुड्स होगा। लेकिन इससे कोई फर्क नहीं पड़ा क्योंकि मुझे केवल कचरे का ढेर मिला। स्पष्ट रूप से गलत वर्टेक्स ऑर्डर का मामला। क्या आप इस छवि को देखकर बता सकते हैं कि यह कौन सा कमरा है?
आकृति दर आकृति, मैंने धीरे-धीरे पानी का परीक्षण किया। यहाँ-वहाँ चट्टानें और कब्र के पत्थर दिखाई देने लगे। यह स्पष्ट हो गया कि मैं काकारिको कब्रिस्तान क्षेत्र को देख रहा था।
काफी समय के बाद, मैं यह परिणाम प्राप्त करने में सक्षम हुआ: कुछ वस्तुएं गायब थीं, कुछ चेहरे उल्टे थे, तथा एक भी बनावट सही ढंग से लागू नहीं हुई थी।
समाधान कुछ हद तक भ्रामक था। हालाँकि कुछ आकृतियों में विशिष्ट सामग्री सूचकांक परिभाषित थे, लेकिन उनमें सीधा 1:1 संबंध नहीं था। इसके बजाय, आपको BMD फ़ाइल के INF अनुभाग में परिभाषित दृश्य पदानुक्रम को देखना था। इस पदानुक्रम में नोड्स का एक पेड़ शामिल था जो किसी आकृति या सामग्री का प्रतिनिधित्व कर सकता था। आम तौर पर, पदानुक्रम एक सामग्री से शुरू होता है, उसके बाद कुछ आकृतियाँ होती हैं। उदाहरण के लिए, आप कुछ ऐसा देख सकते हैं (mat1, shp2, shp5, shp6, mat2, shp1, shp12...)। इस मामले में, आकृतियाँ 2, 5, और 6 सभी सामग्री 1 का उपयोग करेंगे, और इसी तरह।
खैर, बढ़िया, लेकिन जिसने भी कभी वह गेम खेला है, उसने देखा होगा कि मटेरियल ठीक से नहीं दिख रहे हैं। रंग ठीक नहीं हैं, मटेरियल के बीच कोई मिश्रण नहीं है, और यह सामान्य रूप से काफी गहरा दिखता है। इस बिंदु पर, मैं इस सब के सबसे मन-उड़ाने वाले हिस्से में गोता लगा चुका होता। गेमक्यूब इन कार्यों को संभालने के लिए TEV चरणों, या टेक्सचर एनवायरनमेंट चरणों का उपयोग करता है। TEV चरण बनावट को मिलाने, रंगों को प्रबंधित करने और पारदर्शिता प्रभाव लागू करने के लिए जिम्मेदार हैं। इस तथ्य पर ध्यान दें कि गेमक्यूब वास्तव में पारदर्शिता प्रभावों का समर्थन नहीं करता था जैसा कि हम आज दो रेंडर पास और दूर की वस्तुओं को पहले रेंडर करने के साथ जानते हैं। कुछ GitHub रिपॉजिटरी, कुछ लेख, कुछ फ़ोरम थ्रेड हैं। जितना हो सके उतनी जानकारी प्राप्त करें!
एक और महत्वपूर्ण हिस्सा जो मुझे जोड़ने की ज़रूरत थी, वह था कोहरा, खिलना और बादल जैसे वायुमंडलीय प्रभाव। इस समय तक मैं कोहरा और खिलने के प्रभाव को सफलतापूर्वक नहीं बना पाया था, लेकिन मैंने बादल की छाया ढूंढ ली और उन्हें एक मिश्रण TEV चरण में डाल दिया। मैं अभी भी बादलों के लिए सही UV निर्देशांक की तलाश कर रहा हूँ।
उस कमरे का अंतिम परिणाम कुछ इस प्रकार होगा: (वास्तव में यहां तक पहुंचने में काफी समय लगा)
यह परियोजना एक अविश्वसनीय यात्रा रही है। अतीत की तकनीकी सीमाओं को कैसे हल किया जाता था, यह जानने में अपना समय बिताने से मुझे ट्वाइलाइट प्रिंसेस की जटिल सुंदरता की सराहना करने में मदद मिली। मैंने अच्छी प्रगति की है, लेकिन अभी भी खोज और कार्यान्वयन के लिए चीजों की एक बड़ी सूची है। मैं इस व्यूअर पर काम करना जारी रखने की योजना बना रहा हूं, इसमें कोहरा, BTK (टेक्सचर एनिमेशन) और अन्य वायुमंडलीय प्रभाव जैसी विशेषताएं जोड़कर इसे यथासंभव सटीक और इमर्सिव बनाने की योजना बना रहा हूं।