हाँ, एक ही धागे में करना संभव है। आम तौर पर बोल रहा हूँ, आप वस्तुओं को हर फ्रेम में अपडेट करना चाहते हैं, न कि केवल तब जब अतिरिक्त साइकिल हो। आपके एनिमेशन और मूवमेंट को फ्रेम दर से काट दिया जाएगा और यदि आप नहीं करते हैं तो तड़का हुआ दिखेगा। यदि आप AI अपडेट या कुछ और के बारे में बात कर रहे हैं, जिसे वास्तविक समय की आवश्यकता नहीं है, तो मैं इस पर एक टाइमर लगाऊंगा। आपको पता होना चाहिए कि आपकी लक्षित फ्रेम दर क्या है और निष्क्रिय समय वह होगा जो बाकी सब कुछ पूरा होने के बाद शेष है।
मान लीजिए कि आप अपने खेल के लिए 60 एफपीएस को लक्षित कर रहे हैं। आपको प्रत्येक फ्रेम को करने के लिए आवश्यक सभी कार्य करने के लिए 16.667 एमएस के साथ छोड़ देता है। खेल की शुरुआत में, उपलब्ध उच्चतम रिज़ॉल्यूशन टाइमर का उपयोग करके वर्तमान समय प्राप्त करें, इसमें 16.667 एमएस जोड़ें और इसे कहीं स्टोर करें। मुझे लगता है कि अजगर में कार्य समय () है, हालांकि मुझे भाषा में काम करते हुए कुछ समय हो गया है। आपकी प्रक्रिया पूरी होने के बाद, एक लूप दर्ज करें जो आपके द्वारा रिकॉर्ड किए गए समय के खिलाफ वर्तमान समय की जांच करता है। यदि वर्तमान समय फ़्रेम समाप्ति समय से कम है, तो update_a_very_small_amount। मैं फ्रेम के अंत में जा रहे प्रसंस्करण के बारे में ज्यादा चिंता नहीं करूंगा क्योंकि आपका छोटा अपडेट प्रक्रिया के लिए त्वरित होना चाहिए। यह केवल अगले फ्रेम के शुरू होने में थोड़ी देरी होगी और इसे संभालने के लिए आपके पास पर्याप्त निष्क्रिय समय है।
फ्रेम के प्रसंस्करण समाप्त हो जाने के बाद, अंतिम फ्रेम के अंत के लिए संग्रहीत समय के लिए 16.667 एमएस जोड़ें, यह पता लगाने के लिए कि अगले फ्रेम का अंत कहां होना चाहिए। यदि आप वर्तमान समय + 16.667 एमएस का उपयोग करते हैं और प्रसंस्करण खत्म हो जाता है, तो अगले फ्रेम के अंत को बाहर धकेल दिया जाएगा, हालांकि अंतिम फ्रेम खत्म हो गया है।
पुन: दूसरा संपादित करें
स्पष्ट करने के लिए, मैं मुख्य लूप के माध्यम से एक पुनरावृत्ति को इंगित करने के लिए यहां फ्रेम-दर शब्द का उपयोग करता हूं। यदि यह उपयोगकर्ता की इनपुट गति के आधार पर है, तो मुझे लगता है कि आपका लक्ष्य केवल खेल को संवेदनशील बनाना है। अन्यथा आप केवल इनपुट की जांच कर सकते हैं और हर बार लूप के माध्यम से हर बार अपडेट कर सकते हैं, भले ही ऐसा करने में 10 सेकंड लगें। हालांकि इसे उत्तरदायी महसूस करने के लिए, आप संभवतः प्रति सेकंड 20 बार इनपुट की जांच करना चाहेंगे, जो कि 20 एफपीएस की प्रभावी फ्रेम दर देता है, भले ही आप वास्तव में इन फ़्रेमों को आकर्षित नहीं कर रहे हों। इससे पहले कि आप इनपुट के लिए फिर से जाँच करने के लिए चीजों को अपडेट करने के लिए यह आपको 50 एमएस देगा।