क्या विकास में बाद में उपलब्धि प्रणाली लागू की जा सकती है?


12

यदि मैं इस सुविधा को अपने खेल में लागू करना चाहता हूं या नहीं तो मैं अनिर्दिष्ट हूं। मैं नहीं चाहता कि परियोजना नियंत्रण से बाहर हो जाए इसलिए मैं पहले कोर यांत्रिकी पर ध्यान केंद्रित कर रहा हूं।

क्या यह एक ऐसी सुविधा है जो बाद में यह मानकर लागू करना आसान है कि मैं डेटा ड्राइव सब कुछ और सब कुछ स्टोर करूं?


3
मैंने कुछ साल पहले खिड़कियों के लिए एक निश्चित प्रसिद्ध डॉस गेम को चित्रित किया था - उन चीजों में से एक जो मुझे इसमें जोड़ना पसंद होगा, अगर हम गेमप्ले में कोई बदलाव करने जा रहे थे - उपलब्धियां होंगी। इसलिए अगर मैं 10 साल से अधिक पुराने खेल में उपलब्धियों को जोड़ सकता हूं, तो स्पष्ट रूप से इसके लिए डिज़ाइन नहीं किया गया है, मैं बहुत अधिक कहता हूं कि उन्हें कहीं भी जोड़ा जा सकता है। हेक, इस साइट की उपलब्धियां हैं ..
जरी कोम्पा

जवाबों:


19

क्या आप इसे लागू करने की तकनीकी की दृष्टिकोण से या डिजाइन के प्रभाव से पूछ रहे हैं? किसी भी तरह से, आपके प्रश्न का उत्तर "हां" है।

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

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


हां, अब मैं ऐसा कर रहा हूं। shotsFired++उस हिस्से में लिंक करना काफी आसान था जहां नई गोलियों को तुरंत लगाया जाता है, और shotsHit++उस हिस्से में जहां एक गोली दूसरे खिलाड़ी को प्रभावित करती है। इससे मदद मिली कि मैंने ट्रैक किया कि किसने क्या गोली मारी (क्योंकि मैं जानकारी का उपयोग करता हूं कि किसने हत्या की है आदि को ट्रैक करने के लिए)
बोबोबोबो

5

बशर्ते कि आपका गेम इंजन अच्छी तरह से डिज़ाइन किया गया हो और किसी प्रकार की अवलोकनीय घटना प्रणाली का उपयोग करता हो (जहाँ घटनाओं को उत्पन्न किया जाता है और इच्छुक पार्टियों द्वारा सुनी जाती है), बाद के बिंदु पर (उपलब्धि जोड़कर) एक प्लग-इन सिस्टम को "प्लग-इन" करना काफी आसान होना चाहिए उपयुक्त श्रोता)। इस तरह का डिज़ाइन बहुत लचीला है।


2

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

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

आप सभी घटनाओं को प्राप्त करने के लिए हमेशा एक वर्ग (अधिमानतः सिंगलटन) बना सकते हैं। अब अपनी सभी उपलब्धियों को सूचीबद्ध करें। फिर ट्रैक किए जाने वाले सभी गेम ईवेंट की सूची बनाएं। उदाहरण के लिए मेरी वर्तमान सूची इस तरह दिखती है

गोली मारना - चलना, गोलियां गोली मारना - गिरना, गिरना, स्वास्थ्य ENTER_ROOM, EXIT_ROP &

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


विकास के कार्यान्वयन के लिए वास्तव में अच्छा समाधान है। मैं इसे ध्यान में रखूंगा क्योंकि मुझे यकीन नहीं है कि मैं इसे लागू करना चाहता हूं। मैं इसे बाद के चरण में कर सकता हूं क्योंकि मैं नहीं चाहता कि मेरी परियोजना का दायरा नियंत्रण से बाहर हो।
ब्रायन हैरिंगटन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.