इसलिए मैं खेल में एक ऐसे मुद्दे पर आया हूं जिस पर मैं काम कर रहा हूं, लेकिन यह एक बहुत ही मौलिक चीज है जो शायद बहुत सारे गेम में आता है।
मेरे गेम के लिए आवश्यक है कि कुछ गेमप्ले फंक्शन किसी कैरेक्टर एनिमेशन के दौरान बहुत ही खास समय पर होता है। और इसलिए, जैसा कि शीर्षक कहता है, मैं सोच रहा हूं कि गेमप्ले से संबंधित घटनाओं / कार्यों / कार्यों को एक चरित्र के एनीमेशन में विशिष्ट बिंदुओं को सिंक्रनाइज़ करने के लिए कुछ अच्छी तकनीक और मौलिक रणनीति क्या हैं।
यहाँ विभिन्न प्रकार के खेलों के बारे में कुछ सरल उदाहरण दिए जा रहे हैं:
आपका चरित्र एक शूटर में उनकी बंदूक को फिर से लोड करता है । आपका चरित्र उसके / उसके 'पुनः लोड' एनीमेशन को निभाता है, लेकिन यह महत्वपूर्ण है कि फ़ंक्शन जो currentAmmo वैरिएबल सेट करता है, केवल पत्रिका की अदला-बदली होने के बाद सटीक समय पर कॉल किया जाता है और बंदूक को कॉक किया जाता है। यह पुनः लोड एनीमेशन के बीच में कुछ बिंदु हो सकता है।
एक टर्न-आधारित आरपीजी में आपके पात्र दुश्मनों की एक पंक्ति का सामना करते हुए खड़े होते हैं। जब हमला करने की आज्ञा दी जाती है, तो आपका एक चरित्र दुश्मनों में से एक को चलाता है / कूदता है और दौड़ने / कूदने से पहले अपने विशालकाय तलवार को अपने खड़े स्थान पर वापस ले जाता है। आप यह सुनिश्चित करना चाहते हैं कि दुश्मन उस सटीक समय पर क्षतिग्रस्त हो जाए जब स्लैशिंग एनीमेशन खेला जाता है - कुछ समय तक चलने और वापस चलने के बीच।
एक स्टील्थ गेम में , आपका चरित्र दुनिया में कंप्यूटर और बटन के साथ चुपके और बातचीत कर सकता है। हो सकता है कि एक बटन है जो बिजली की आपूर्ति को चौकी की रोशनी में बंद कर देता है जिसे आप घुसपैठ कर रहे हैं। जब कार्रवाई बटन दबाया जाता है, तो आपका चरित्र बाहर पहुंचता है और बटन को धक्का देता है और फिर अपने निष्क्रिय रुख पर लौटता है। आप चाहते हैं कि बटन 'पुश_बटन' एनीमेशन में सटीक बिंदु पर बंद हो जाए जब बटन अंदर धकेल दिया जाए।
निश्चित रूप से , मेरा विशेष मामला दूसरे उदाहरण की तरह है , जिसमें मैंने एक एनीमेशन बनाया है, जहां एक हमले के दौरान मेरा टर्न-आधारित चरित्र फेफड़े को आगे बढ़ाता है और मैं चाहता हूं कि क्षति को ठीक उसी क्षण लागू किया जाए जिससे एनीमेशन संपर्क बनाता हुआ प्रतीत होता है । क्योंकि मेरा गेम टर्न-आधारित प्रणाली का उपयोग कर रहा है (अंतिम काल्पनिक या अग्नि प्रतीक की तरह कुछ कल्पना करें) मैं क्षति / उपचार / जादू / आदि चाहता हूं। भले ही मैं वास्तव में टकराव / हिटबॉक्स का उपयोग नहीं कर रहा हूं, प्रत्येक चरित्र एनीमेशन के दौरान सही समय पर लागू होने के लिए।
मुझे यह उल्लेख करना चाहिए कि मैं एक लोकप्रिय गेम इंजन में अपना गेम बना रहा हूं, और अभी मैं अपने एनिमेशन इवेंट्स का उपयोग करके इसे संभाल रहा हूं या वांछित परिणामों के करीब कुछ हासिल करने के लिए सूचित करता हूं - मेरा चरित्र एक निश्चित कमांड करता है और एक को ट्रिगर करता है आदेश-विशिष्ट एनीमेशन (यानी: 'attack_command') और मेरे प्रत्येक आदेश के लिए ऐनिमेशन संपत्तियों में मेरे ईवेंट ExecuteCommand फ़ंक्शन में एक एनीमेशन ईवेंट / सूचित 'कॉलबैक' शामिल होना चाहिए। दूसरे शब्दों में - चरित्र हमले के एनीमेशन को खेलने के लिए कहता है, और फिर हमले के एनीमेशन से एक घटना होती है / क्षति के निपटाए जाने पर एनीमेशन के दौरान सटीक क्षण में चरित्र में कॉलबैक को सूचित करता है।
ईमानदारी से, यह अभी के लिए काम करता है, लेकिन यह सिर्फ गलत लगता है - जैसे कि मैं यहां बड़ी तस्वीर के कुछ हिस्से को याद कर रहा हूं! इस विधि के गलत होने का एक कारण यह है कि यह एनीमेशन एसेट्स के साथ गेम लॉजिक को जोड़े रखता है; अगर मेरी एनीमेशन एसेट एक एक्सक्यूटेकमैंड () ईवेंट / कॉलबैक को शामिल करना भूल जाती है, तो कमांड ठीक से निष्पादित नहीं होता है और कमांड को निष्पादित किए बिना कमांड एनीमेशन समाप्त होने पर जांच करने के लिए अतिरिक्त कोड की आवश्यकता होती है। यह गन्दा है और इसका मतलब है कि मेरे गेमप्ले की अपनी संपत्ति पर एक अजीब निर्भरता है। बेशक मैं अपने हमले के एनीमेशन के दौरान एक विशिष्ट बिंदु पर होने वाली क्षति चाहता हूं, लेकिन मुझे एनीमेशन परिसंपत्तियों के अंदर गेमप्ले कोड को कॉल करने के बारे में बहुत अजीब लगता है ..
तो मैं यहाँ क्या देख रहा हूँ? इस प्रकार की परिस्थितियों को संभालने के लिए कुछ अच्छी सामान्य तकनीकें हैं जिनमें आप कुछ महत्वपूर्ण गेमप्ले क्रियाओं को एनिमेशन के दौरान विशिष्ट समय पर करना चाहते हैं?
संपादित करें: स्पष्ट करने के लिए, यह एक इंजन-विशिष्ट प्रश्न नहीं है और न ही मैं इंजन-विशिष्ट डिज़ाइन / तकनीकों की तलाश कर रहा हूं। मैं सामान्य एनीमेशन / गेमप्ले सिंक्रोनाइज़ेशन तकनीकों में रुचि रखता हूं जो आपके गेम प्रोजेक्ट्स में उपयोग की जाने वाली तकनीकों की परवाह किए बिना उपयोग कर सकता है।