
कुछ दिन पहले, 15 मई को,
ScummVM में , पॉइंट-एंड-क्लिक एडवेंचर के लिए गेम इंजन का एक प्रसिद्ध क्रॉस-प्लेटफ़ॉर्म सेट, एक कोड ब्रांच को एक इंजन के साथ जोड़ा गया जो क्लासिक सर्च जॉनर, गेम द नेवरहुड का समर्थन करता है।
यह ScummVM में सबसे रोमांचक और सबसे लंबी परियोजनाओं में से एक था। इस कृति के बारे में कई वर्षों तक बात की, और मंचों ने नियमित रूप से इस खेल के लिए समर्थन जोड़ने के लिए कहा। इंजन को विकसित करने में दो साल लग गए, और मैं संक्षेप में वर्णन करना चाहता हूं कि यह कैसे हुआ।
यह ध्यान देने योग्य है कि ScummVM में गेम जोड़ना बिल्कुल आसान काम नहीं है। आज, लगभग आधे इंजनों के लिए, हम लेखकों से स्रोत प्राप्त करने में कामयाब रहे, लेकिन इन मामलों में भी, कोड को हमेशा फिर से लिखना पड़ता है। इसलिए, हाल ही में परियोजना में बहुत सारे गेम आ रहे हैं, जो मूल रूप से पास्कल और असेंबलर में लिखे गए हैं, और उन्हें जोड़ने के लिए, सब कुछ सी ++ में अनुवादित करने की आवश्यकता है। दूसरे इंजन हार्डकोर रिवर्स इंजीनियरिंग (आप अन्यथा नहीं कह सकते हैं) के माध्यम से निकले, जब आईडीए को अपनाया जाता है, और हम धीरे-धीरे फ़ंक्शन नाम, चर और टिप्पणियों के साथ मूल इंजन को चिह्नित करना शुरू करते हैं, इसके ऑपरेशन लॉजिक को समझने के लिए परत द्वारा परत।
यह दूसरा तरीका था जिसे द नेवरहुड के साथ जबरदस्ती इस्तेमाल किया गया था। लेखकों से संपर्क करने के प्रयास विशेष रूप से सफल नहीं थे, उनके हाथों को खरोंच किया गया था, और जून 2011 में परियोजना शुरू की गई थी।
प्रोजेक्ट इतिहास
स्रोत डेटा:
* 800 kb बाइनरी कोड
* C ++ में मूल
* 7.2 हजार कार्य
* 340 आभासी कक्षाएं
दो लोगों के दो साल बाद, परिणाम है:
* कोड की 36 हजार लाइनें
* 2 हजार तरीके
* 320 वर्ग
पहला वचन सरल था:
लेखक: जॉन्डो
दिनांक: बुध जून 22 22:58:51 2011 +0000
NEVERHOOD: बुनियादी पहचान के साथ पहला कोड, अब तक और कुछ नहीं
यह कंकाल अनिवार्य रूप से मानक है, और प्रत्येक इंजन का विकास आमतौर पर इसके साथ शुरू होता है। ओह, ScummVM के लिए खेल को उलटने के कितने प्रयास वहां समाप्त हुए! लेकिन इस बार नहीं, इस बार नहीं। दो दिन बाद, बीएलबी अभिलेखागार तक पहुंच के लिए कोड लिखा गया था, और दो दिन बाद ग्राफिक्स को डिकोड किया गया था और खेल के लिए मॉड्यूल 1515 पर काम शुरू हुआ था।
हमें इस तथ्य से नहीं रोका गया कि खेल एक हार्डकोड है। ScummVM द्वारा समर्थित साहसिक खेलों के अधिकांश इंजन वर्चुअल मशीन हैं (आप इस बारे में एक अलग पोस्ट लिख सकते हैं), और उनकी संरचना भी जटिल नहीं है। कभी-कभी, मूल डेवलपर्स एक प्रोग्रामिंग भाषा में सीधे गेम स्क्रिप्ट लिखते हैं, जो दसियों बार काम को उलटने की मात्रा और जटिलता को बढ़ाता है। विशेष रूप से मुश्किल सी ++ के साथ काम कर रहा है। इस भाषा के कंपाइलर अक्सर उन्नत अनुकूलन का उपयोग करते हैं, और वर्चुअल क्लासेस को असेंबलर में भी अंतर्निहित कॉल के रूप में अनुवादित किया जाता है, जो और भी अधिक सिरदर्द का कारण बनता है। इसके अलावा, यह तथ्य कि आईडीए और हेक्स-रे को अभी तक नहीं पता है कि प्लसस के साथ कैसे काम करना है और बहुत अधिक बैसाखी का उपयोग करना आवश्यक है, काम को सरल नहीं करता है।
हालाँकि, 4 जुलाई को, गेम की प्रारंभिक स्प्लैश स्क्रीन लॉन्च की गई थी। हालांकि यह स्मैकर प्रारूप में क्लिप का एक सेट है, यहां तक कि इसके लिए एक संदेश प्रणाली को लागू करना, स्क्रीन को अपडेट करना, कीबोर्ड को संसाधित करना, पैलेट को काला करना, दृश्यों के बीच स्विच करना, सामान्य रूप से, कोड की लगभग 3 हजार लाइनें लिखना आवश्यक था। एक हफ्ते बाद, पहला दृश्य पूरा हो गया और खेल के दूसरे दृश्य, Scene1002 पर काम शुरू हुआ।
फिर हर हफ्ते एक के बाद एक दृश्यों को जोड़ा गया। वैसे, खेल में उनमें से 71 हैं।
सितंबर 2011 के मध्य तक, जब लगभग आधे दृश्यों का एहसास हुआ, फिर से काम करना शुरू हो गया। मूल कोड, जैसा कि अपेक्षित था, इसमें बहुत सारे नूडल्स शामिल थे। ScummVM मानक काफी अधिक हैं, और कोड की गुणवत्ता में सुधार करने के लिए, हम हमेशा संरचना को बेहतर बनाने के लिए काम कर रहे हैं, और अक्सर मूल इंजनों की वास्तुकला। कभी भी यहां कोई अपवाद नहीं है, ऑब्जेक्ट जनरेटर, रैपर को जोड़ा गया था और कई कार्यों को एक साथ मिला दिया गया था।
जनवरी से जुलाई 2012 तक लगभग कोई काम नहीं किया गया था, और अगस्त में एक दर्जन से अधिक दृश्यों को जोड़ा गया और ध्वनि पर काम शुरू हुआ। नेवरहुड में, ध्वनि अपने स्वयं के मालिकाना RLE एनकोडर के साथ एन्कोडेड होती है, और बैकग्राउंड म्यूजिक के साथ-साथ एक साथ बजने के लिए तीन ध्वनियों की आवश्यकता होती है। अक्टूबर की शुरुआत तक, गेम के सभी दृश्यों में संबंधित चुनौतियों को जोड़ा गया था, और हमने आंतरिक अल्फा परीक्षण शुरू किया।
रिफैक्टरिंग की दूसरी लहर के बाद, जब डुप्लिकेट कोड का एक महत्वपूर्ण हिस्सा बाहर फेंक दिया गया था और इंजन "खो वजन", शाखा के लिए मुख्य ScummVM कोड के साथ विलय करने की तैयारी शुरू हुई। ऐसा करने के लिए, मेनू, अंतिम क्रेडिट, हॉल ऑफ फेम कमरे को जोड़ना और साथ ही खेल की स्थिति को रिकॉर्ड करना और पुनर्स्थापित करना आवश्यक था।
21 जनवरी, 2013 को, डेढ़ साल के विकास के बाद, यह अचानक हम पर हावी हो गया कि मूल नायक को केलमैन कहा जाता था, न किलेमैन, क्योंकि यह अंग्रेजी व्याकरण के अनुसार तर्कसंगत होगा, और इस अंतर्दृष्टि के बाद कोड में चर और वर्गों का बड़े पैमाने पर नामकरण किया गया था। ।
कुछ और रीफैक्टरिंग, बग फिक्स, और 5 मई, 2013 को मुख्य स्कममम शाखा में एक पुल अनुरोध किया गया था।
यहाँ यह है, परियोजना का इतिहास।
भविष्य के बारे में संक्षेप में
इंजन पर काम पूरा होने से बहुत दूर है। अब आपको यह सुनिश्चित करने की आवश्यकता है कि गेम सभी समर्थित प्लेटफार्मों पर काम करता है, विशेष रूप से, बड़े-एंडियन एआरएम पर।
इसके अलावा, दुर्भाग्य से, खेल के रूसी संस्करणों का अभी तक समर्थन नहीं किया गया है, क्योंकि हमारे अनुवादक, जैसा कि अक्सर होता है, यहां और वहां के प्रारूपों को थोड़ा बदल दिया है, और स्कमवम में इंजन प्रारंभिक स्प्लैश स्क्रीन के बाद क्रैश हो जाता है। हम अभी इस पर काम कर रहे हैं। यह संभव है कि हम खेल के पीएसएक्स संस्करण के लिए समर्थन जोड़ने पर काम करेंगे।
विशेष रूप से, वैश्विक निर्माणकर्ताओं को हटाने के लिए कुछ रिफैक्टिंग कार्य करना आवश्यक है, जो कि बुराई हैं। और अंत में, सार्वजनिक बीटा परीक्षण की घोषणा करें।
संदर्भ:
ScummVM प्रोजेक्ट साइट , द नेवरहुड को लॉन्च करने के लिए, आपको दैनिक बिल्ड संस्करण 1.7.0 की आवश्यकता है
इंजन स्रोत कोडखेल कैसे शुरू करें
खेल को मूल डिस्क से कॉपी किया जाना चाहिए, ScummVM में गेम जोड़ें बटन पर क्लिक करें, उस पथ को निर्दिष्ट करें जहां खेल की प्रतिलिपि बनाई गई है, और फिर खेल सूची में दिखाई देगा (अब तक केवल अंग्रेजी संस्करण और डेमो काम कर रहे हैं)। इसके बाद गेम के नाम पर डबल क्लिक करें, गेम शुरू हो जाएगा।
डेमो
यहाँ से डाउनलोड किया जा सकता
है । आप ईबे, अमेज़ॅन पर पूरा गेम खरीद सकते हैं, अभी भी हमारे रुसिफिकेशन स्टोर्स की अलमारियों पर आ सकते हैं।