मैं अपने गेम में "फास्ट-फ़ॉरवर्ड" फ़ीचर कैसे लागू कर सकता हूं?


15

मैं अपने टॉवर रक्षा गेम जैसे http://fieldrunners.com/ और अन्य TD गेम के लिए फास्ट फॉरवर्ड सुविधा को कैसे लागू कर सकता हूं ?

मैं यूनिटी 3 डी का उपयोग कर रहा हूं। क्या प्रति सेकंड कम तख्ते को प्रबंधित करने के लिए कुछ होगा या मैन्युअल रूप से दुश्मनों और टॉवर फायरिंग गति, एट वगैरह के तेजी से आंदोलन को सेट करना होगा?


क्या आपने अपडेट फ़्रीक्वेंसी बढ़ाने की कोशिश की है ?? आपको फ्रेम छोड़ने की आवश्यकता हो सकती है ..
अवधारणा 3 डी

जवाबों:


7

यदि आपके गेम में जटिल या कम्प्यूटेशनल रूप से महंगे सिमुलेशन नहीं हैं, जो उन्हें स्वतंत्र अपडेट टाइमलाइन में अलग करने की आवश्यकता है, तो आप Update()एकता के Time.time मान पर अपने कार्यों में कोड को आधार बनाने के एक सरल दृष्टिकोण का उपयोग कर सकते हैं , और आपके कोड में समय का मान सेट करें .timeScale जो भी आप चाहते हैं। 0 == रुका हुआ, 1 = सामान्य, हमारे परीक्षक समय निर्धारित करने के लिए प्यार करते हैं> 1 चीजें तेजी से करने के लिए।

http://unity3d.com/support/documentation/ScriptReference/Time-timeScale.html


18

दृष्टिकोण: उच्च सिमुलेशन दर

आपके उपयोगकर्ता इंटरफ़ेस के लिए आपका समय आपके वास्तविक गेम लूप से कम होना चाहिए, जैसा कि आपका प्रतिपादन होना चाहिए। उदाहरण के लिए कहें कि आपकी दुनिया 4x की गति से चलती है। कहते हैं कि आपकी मूल (1x) गति पर, आपका गेम प्रति सेकंड 30 अपडेट चलाता है।

तब आपको निम्नलिखित में से कुछ पसंद आएगा, जब फास्ट-फॉरवर्ड मोड में:

  • यूआई और रेंडरर के हर अपडेट के लिए वर्ल्ड लॉजिक 4 अपडेट चलाता है। इसका मतलब है कि इसे प्रति सेकंड 120 अपडेट चलाने की आवश्यकता है। इस प्रकार, आपके विश्व मॉडल (डेटा) को इस दर पर अपडेट किया जाता है।
  • रेंडरर और यूआई लॉजिक दोनों प्रति 30 अपडेट पर जो कुछ भी मतदान या जारी रखते हैं।

दूसरे शब्दों में, एक पूरे के रूप में खेल तेजी से नहीं चल रहा है। सिमुलेशन हिस्सा है।

आप इसमें से दो चीजें निकाल सकते हैं:

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

  2. यह उन चिंताओं का पृथक्करण है जो आपको अपने विश्व सिमुलेशन को आसानी से गति प्रदान करने की अनुमति देता है, जो कि अलगाव मॉडल, दृश्य और नियंत्रक ( एमवीसी ) है। यदि आपका विश्व डेटा (M), तर्क (V) प्रदान करता है, और गेम तर्क (C) सभी मिश्रित हैं, तो आप वास्तव में ऐसा नहीं कर पाएंगे, कम से कम एक विशाल माइग्रेन के बिना नहीं।

दृष्टिकोण: समय डेल्टा के आधार पर एक्सट्रैपलेशन

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

समाप्त करने के लिए

यह आपको सामान्य रूपरेखा प्रदान करता है। आपकी भाषा की पसंद आपकी खुद की है, संभवतः आप या तो जानते हैं कि एकता में कैसे करना है या आप नहीं करते हैं। किसी भी भाषा में टाइमिंग को समझने के लिए आपको ins और outs को विस्तार से समझना होगा, मैं सुझाव दूंगा कि Gaffer के लेखों के साथ शुरुआत करूं और Unity API डॉक्स को देखूं।


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

9

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

ऐसे परिदृश्य में, अपने खेल में टाइम स्केलिंग (तेजी से अग्रेषण सहित) को लागू करना सरल हो जाता है। बस कुछ अदिश मान द्वारा खेल तर्क समय कदम को नियंत्रित करें जो "फास्ट-फ़ॉवर्ड" या समय को धीमा करने के लिए कितना नियंत्रित करता है। डिफ़ॉल्ट रूप से यह मान एक होगा, और उदाहरण के लिए एक बार जब उपयोगकर्ता "फास्ट फॉरवर्ड" कुंजी को हिट करता है, तो आप इसे 1.5 पर सेट करते हैं, और सभी सिमुलेशन 50% तेजी से जाते दिखाई देंगे। आप अभी भी उसी दर पर प्रस्तुत करना चाहते हैं।

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


1
यह निश्चित रूप से उनके ओपनर पर लागू होता है। बस उसे कुछ गुणक करने के लिए Time.timeSale सेट करना होगा और सबकुछ बस तेजी से आगे बढ़ेगा। यह पूरे बोर्ड में बदलाव है, इसलिए यदि मेनू इंटरैक्शन जैसी चीजें हैं और इस तरह वे तेजी से आगे बढ़ेंगे, हालांकि।
तेतराड

Thnx again Tetrad :)
सैयद
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.