मैं एक iPhone shmup बना रहा हूं और यह तय करने की कोशिश कर रहा हूं कि किस प्रकार के गेम लूप का उपयोग करना है। मैं या तो सेमी-फिक्स्ड टाइमस्टेप या पूरी तरह से फिक्स्ड टाइमस्टेप का उपयोग करना चाहता हूं।
सेमी-फिक्स्ड टाइमस्टेप के साथ मैं शून्य या अधिक अपडेट (FIXED_INTERVAL) कॉल करेगा जिसके बाद एक अपडेट (dt) कॉल आएगा जहां dt <= FIXED_INTERVAL प्रति गेम लूप। जैसा कि मैं इसे समझता हूं कि इस पद्धति के साथ कमियां यह हैं कि मेरे भौतिकी अद्यतन (डीटी) तर्क को प्रोग्राम करना अधिक कठिन होने वाला है क्योंकि मुझे मूल रूप से हर अपडेट के लिए एक वैरिएबल डीटी को ग्रहण करना है। और फिर मैंने यह भी सुना है कि मेरे खेल का प्रत्येक रन फ़्लोटिंग पॉइंट वैल्यू के कारण हर बार थोड़ा अलग होगा।
फिर पूरी तरह से तय समय के साथ मैं एक प्रक्षेप (dt / FIXED_INTERVAL) कॉल के बाद शून्य या अधिक अपडेट (FIXED_INTERVAL) कर रहा हूं जहां dt <FIXED_INTERVAL प्रति गेम लूप है।
तो ऐसा लगता है कि मुझे जो बड़ा फैसला करना है, वह यह है: क्या मैं एक अद्यतन (dt) को लागू करने की चुनौती को एक परिवर्तनीय dt से निपटना चाहता हूं या क्या मैं प्रक्षेप लागू करने की चुनौती से निपटना चाहता हूं?
अब मैंने जो पढ़ा है, उसमें से अधिकांश लोग पूरी तरह से नियत का उपयोग करने और प्रक्षेप करने के लिए कह रहे हैं। लेकिन जब मैं प्रक्षेप लागू करने के बारे में सोचता हूं तो ऐसा लगता है कि मैं वैरिएबल डीटी के साथ एक अपडेट (डीटी) की तुलना में बहुत अधिक जटिल होगा। ऐसा इसलिए है क्योंकि अगर मैं प्रक्षेप का उपयोग करता हूं तो मुझे पिछली स्थिति और वर्तमान स्थिति दोनों को याद रखना होगा। इसलिए अगर मैं प्रक्षेप का उपयोग करना चाहता हूं तो मुझे परोक्ष की एक अतिरिक्त परत के साथ आना होगा जो पूरे व्यक्तिगत गेम स्टेट्स को अमूर्त करता है। जबकि अर्ध-स्थिर टाइमस्टेप के साथ जहां मुझे प्रक्षेप का उपयोग नहीं करना पड़ता है, मुझे गेम स्टेट एब्स्ट्रैक्शन के साथ नहीं आना पड़ता है क्योंकि हमेशा एक ही गेम स्टेट होता है और यह "ग्लोबल एरेस" है जो मेरे दुश्मनों और दुश्मन का प्रतिनिधित्व करता है। गोलियां आदि।
तो क्या अधिक व्यावहारिक विकल्प है: क्या मैं इसे यह जानते हुए अर्ध-कार्यान्वित करता हूं कि मेरे भौतिकी के अपडेट वैरिएबल डीटी के साथ जटिल हो सकते हैं। या क्या मैं पूरी तरह से निर्धारित का उपयोग करता हूं और गेम स्टेट एब्सट्रैक्शन के साथ आने की कोशिश करता हूं ताकि मैं प्रक्षेप करने के लिए पिछले राज्य और वर्तमान राज्य का ट्रैक रख सकूं?