2012-12-11 42 views
8

इसे शायद पहले पूछा गया है, लेकिन मुझे इसे कहीं भी नहीं मिल रहा है ...cocos2d में केवल 60 एफपीएस वास्तव में चिकनी क्यों है?

वीडियोलैंड में, 24 एफपीएस और ऊपर कुछ भी चिकनी है। कोकोस 2 डी लगता है केवल 60 एफपीएस या शायद थोड़ा कम। 30 और 50 के बीच कुछ भी निश्चित रूप से चिकनी नहीं है, एफपीएस काउंटर सटीक प्रतीत नहीं होता है ...

यह क्यों है? या यह केवल मुझे यह स्थिति है?

उत्तर

25

वास्तव में इस व्यवहार के कई कारण हैं, और यह केवल cocos2d नहीं है बल्कि vertical synchronization (VSYNC) के साथ वातावरण में किसी भी गेम इंजन में देखा गया प्रभाव है। आईओएस वीएसवाईएनसी पर हमेशा पीसी पर होता है, यदि आपके पास आमतौर पर screen tearing की लागत पर मॉनीटर की दर से लगातार नीचे होते हैं तो फ़्रेमेटर्स को बेहतर बनाने के लिए इसे बंद करने का विकल्प होता है। आम तौर पर आईओएस डिवाइस जैसे एलसीडी 60 एचज़ पर अपने प्रदर्शन को अपडेट करते हैं, जिससे अधिकतम 60 एफपीएस की अनुमति मिलती है।

अपडेट के लिए CADisplayLink कक्षा का उपयोग करने के लिए Cocos2D 1.x डिफ़ॉल्ट, Cocos2D 2.x विशेष रूप से CADisplayLink का उपयोग करता है। CADisplayLink स्क्रीन रीफ्रेश दर के साथ सिंक्रनाइज़ किए जाने वाले अपडेट का कारण बनता है। मतलब यह है कि जब स्क्रीन ने अपनी सामग्री को चित्रित करना समाप्त कर दिया है तो एक अधिसूचना भेजी जाती है।

जब आपको 60 एफपीएस मिलते हैं तो सब ठीक है। लेकिन अगर गेम 60 एफपीएस प्रस्तुत करने के लिए समय में एक फ्रेम प्रस्तुत करने का प्रबंधन नहीं कर सकता है, तो अगली स्क्रीन रीफ्रेश पूरा होने के बाद ही इसका अगला अपडेट प्राप्त होगा। जैसे ही फ्रेमरेट 60 एफपीएस से नीचे गिरता है - या जैसे ही आपके अपडेट & रेंडर चक्र को पूरा करने के लिए 16.666 मिलीसेकंड से अधिक समय लेता है, यह प्रभावी ढंग से फ्रेमरेट को कम करता है। इसका मतलब है कि आप CADisplayLink अपडेट के साथ आईओएस पर केवल 60, 30, 20 और 15 एफपीएस (60 से 1, 2, 3 और 4 विभाजित) के अलग-अलग फ़्रेमेट कर सकते हैं।

प्रभाव काफी ध्यान देने योग्य है क्योंकि एक फ्रेमरेट जो 60, 30, 20 और 15 एफपीएस के बीच उतार-चढ़ाव करता है - यहां तक ​​कि केवल एक सेकंड के अंश के लिए - मुख्य रूप से चिकनी महसूस नहीं करता है क्योंकि यह बहुत अस्थिर है - अस्थिरता जो हम देखते हैं "चिकनी नहीं" के रूप में। यदि आपका गेम इससे प्रभावित होता है, तो आप पाएंगे कि फ्रेमरेट को 30 एफपीएस तक सीमित करने से वास्तव में गेम चिकनी दिखाई देगा। आपके पास & फ़्रेम के बीच सामान प्रस्तुत करने के लिए और अधिक समय है।

यह 24 एफपीएस फिल्म फ़्रेमेट की स्थिरता है जिसे "चिकनी" के रूप में माना जाता है, लेकिन फिल्म निर्देशकों ने उन दृश्यों से बचने के लिए सीखा है जहां सीमित फ़्रेमेट सभी स्पष्ट हो जाता है। मिसाल के तौर पर, वे नरक के रूप में बचते हैं जो गेम अक्सर करते हैं: किनारे पर स्क्रॉल करें, यानी कैमरे से गुजरने वाली वस्तुओं के कैमरे या किनारे के आंदोलन के किनारे की गति।

आपको आश्चर्य होगा कि जब आप हॉबिट देखते हैं तो कितनी चिकनी फिल्में हो सकती हैं - यह 48 एफपीएस पर चलने वाली पहली ब्लॉकबस्टर फिल्म है। आप तुरंत देखेंगे कि फिल्म में वर्ण कितने "असली" और "आजीवन" हैं। इंप्रेशन प्राप्त करने के लिए, यह unofficial 48 fps The Hobbit trailer देखें।

एफपीएस के रूप में कौन सी कोकोस 2 डी प्रदर्शित करता है, यह स्विच 60 से 30 से 20 और 15 एफपीएस तक स्विच का सटीक प्रतिनिधित्व नहीं है बल्कि कई फ्रेमों पर औसत फ़्रेमेट होता है।इसलिए जब cocos2d प्रिंट करता है "45 एफपीएस" इसका मतलब है कि आधा समय गेम 30 एफपीएस प्रदर्शित करता है, दूसरा आधा पिछले कुछ फ्रेमों में 60 एफपीएस पर होता है।

+1

हमेशा के रूप में, उपयोगी जानकारी का एक खजाना ट्रोव। thks। – YvesLeBorg

+1

आप 20fps (60/3) – Sebastian

+0

आह, भूल गए ... – LearnCocos2D

2

दो मुख्य समस्याएं।

सबसे पहले डिस्प्ले की रीफ्रेश दर से मेल खाता है - कुछ भी और आपको अनियमित गति मिलती है जो आंख/मस्तिष्क स्पॉटिंग पर अच्छा होता है। कम से कम इसके एक पर हो।

दूसरा गति-धुंध है। फिल्म/वीडियो में मोशन ब्लर होता है, जो दर्शकों को निरंतर गति देखने में मूर्ख बनाता है।

+0

मुझे लगता है, यह समझ में आता है। लेकिन डेस्कटॉप मॉनिटर्स में अक्सर 60 हर्ट्ज रीफ्रेश दर होती है। मुझे डेस्कटॉप गेम के साथ परेशानी होने पर ध्यान नहीं दिया जा सकता है जिसमें कम एफपीएस 50 है। शायद मुझे गलत लगता है ... क्या यह आईफोन के लिए कुछ विशिष्ट है? – yurki

+0

डेस्कटॉप मॉनीटर आमतौर पर इन दिनों की तुलना में थोड़ा अधिक होते हैं। इसके अलावा कुछ सस्ता एलसीडी डिस्प्ले थोड़ा धुंधला हो जाएगा। अन्यथा विशेष रूप से विशेष कुछ भी नहीं चल रहा है। – JasonD

+0

मैंने देखा है कि 60Hz मॉनीटर – user739711