क्या STL मोबाइल उपकरणों के लिए पर्याप्त है?


9

जब आईओएस और एंड्रॉइड एनडीके पर मोबाइल गेम के विकास की बात आती है, तो कुछ डेवलपर्स अपने सी ++ कंटेनर लिखते हैं, जबकि अन्य दावा करते हैं कि एसटीएल मोबाइल गेम डेवलपमेंट के लिए पर्याप्त है (उदाहरण के लिए, आईफोन 3 डी प्रोग्रामिंग के लेखक उद्देश्य के बजाय एसटीएल का उपयोग करते हैं। C उनके उदाहरणों में। उनका बचाव यह है कि STL ऑब्जेक्टिव-सी से धीमी नहीं है)।

फिर ऐसे मोबाइल डेवलपर भी हैं जो C ++ को पूरी तरह से छोड़ देते हैं और C भाषा (C89 / C90) में पूरी तरह से (या अधिकतर) गेम विकसित करते हैं।

प्रत्येक दृष्टिकोण के लाभ और कमियां क्या हैं?


4
एसटीएल के खिलाफ मुख्य आलोचना यह अप्रत्याशित स्मृति आवंटन पैटर्न और संकलक समर्थन है - दोनों समस्याओं को एसटीएल विकल्प का उपयोग करके हल किया जा सकता है, उदाहरण के लिए ईएएसटीएल या एसटीएलपोर्ट।
राफेल आर।

1
इस प्रश्न के कई उत्तर: gamedev.stackexchange.com/questions/268/… मोबाइल प्लेटफार्मों पर स्पर्श करें और आपको अपना उत्तर देना चाहिए।
टेट्राद

5
मुझे कई लोगों पर "त्याग" करने का संदेह है (अधिक पसंद है, कभी उपयोग नहीं करना) मोबाइल प्लेटफार्मों पर सी ++ यह एसटीएल के बारे में कम है और उद्देश्य-सी ++ (और आमतौर पर ऐप्पल के टूलचिन पर लैगिंग का समर्थन) के बारे में अधिक है।

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

जवाबों:


6

पहले एक बात बता दूं। C ++, Objective-C कॉल्स से तेज है। ऑब्जेक्टिव-सी मैसेज पासिंग सिस्टम का उपयोग करता है इसलिए C ++ की तुलना में इसमें कुछ रनटाइम ओवरहेड होगा। बस यहां कुछ तुलनाओं पर एक नजर डालते हैं

आईओएस सामान्य "ऐप" विकास के लिए आ रहा है, यह उद्देश्य-सी अंतर्निहित कार्यों का उपयोग करने के लिए समझ में आता है क्योंकि प्रदर्शन कुछ हद तक बहुत अधिक मापदंड नहीं हो सकता है। लेकिन खेल के विकास में, हमें इन परिणामों पर विचार करने की आवश्यकता है।

जब मैं अपनी पिछली परियोजना (रोबोकिल) पर काम कर रहा था, तो हमने अधिकांश कोड को अनुकूलित किया, जहां कभी भी सादे-सी कॉल के साथ आवश्यक था (हमने अपने उद्देश्य-सी कण वर्ग को सी ++ वर्ग में बदल दिया)। या आप डायरेक्ट C कॉल के लिए Objective-C रनटाइम फ़ंक्शन का भी उपयोग कर सकते हैं।

आपके सवाल पर आते हैं, यहाँ मेरा जवाब है: हाँ, एसटीएल अपने उद्देश्य के लिए अच्छी तरह से अनुकूलित है । भले ही कार्यान्वयन कोड अधिक पठनीय नहीं है, लेकिन कार्यान्वयन को एक बार जांचना दिलचस्प है।

हालाँकि, हम कुछ हद तक Objecive-C कोड को ऑप्टिमाइज़ कर सकते हैं, फंक्शन पॉइंटर्स को प्री-कैच करके और Objective-C रनटाइम के साथ कॉल कर सकते हैं।

उम्मीद है की यह मदद करेगा!

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