क्या मुझे दुनिया को स्थानांतरित करना चाहिए या खिलाड़ी को स्थानांतरित करना चाहिए?


11

मैं एक ऐसे गेम को विकसित करने के बारे में शुरू करने जा रहा हूं, जहां खिलाड़ी का लक्ष्य छूने से पहले क्षैतिज धुरी में यात्रा करना है। ध्यान दें कि मुझे कभी भी क्षैतिज अक्ष पर वापस जाने की आवश्यकता नहीं है।

मैं Android के लिए AndEngine के साथ इसे विकसित कर रहा हूं जो OpenGL और Box2d का उपयोग करता है।

शुरू करने से पहले, मुझे कुछ महत्वपूर्ण निर्णय लेने की आवश्यकता है: क्या मुझे आंदोलन का अनुकरण करने के लिए खिलाड़ी के आसपास की दुनिया का उपयोग करना चाहिए या वास्तव में खिलाड़ी को स्थानांतरित करना चाहिए और गेम इंजन की कैमरा विशेषताओं के साथ उसका पालन करना चाहिए?

दोनों दृष्टिकोणों में अलग-अलग ताकत और कमियां हैं, इसलिए मुझे नहीं पता कि कौन सा सबसे अच्छा माना जाता है। उदाहरण के लिए, रास्ते में बिजली अप को जोड़ना आसान होगा और एक अच्छी एनिमेटेड पृष्ठभूमि होगी?

धन्यवाद!


2
कैमरा घुमाओ।
जोनाथन डिकिंसन

1
जब तक आपके पास कैमरे का उपयोग नहीं करने का एक विशिष्ट कारण है (जो आपके लिए पहले ही लिखा जा चुका है), आपको खिलाड़ी और कैमरा को स्थानांतरित करना चाहिए। "पावर-अप्स" को जोड़ना किसी भी तरह से प्रभावित नहीं होना चाहिए।
क्रिस्टोफर हॉरेंस्टीन

जवाबों:


9

कैमरा ले जाएं (अपने खिलाड़ी से जुड़ा हुआ)। मुझे लगता है कि आपकी दुनिया में दुश्मन जैसी कई वस्तुएं हैं। यदि आप दुनिया को आगे बढ़ाते हैं, तो आपको हर बार दुनिया को स्थानांतरित करने के लिए अपनी स्थिति को अपडेट करने के लिए इन सभी वस्तुओं के माध्यम से लूप करना होगा।

यदि आप खिलाड़ी को स्थानांतरित करते हैं, और खिलाड़ी को कैमरा देते हैं तो न्यूनतम संसाधन उपयोग होता है। यह खेल अपने रेंडर चरण में पहुंचेगा, लूप सब कुछ के माध्यम से एक बार जैसे यह हर फ्रेम करता है, और उन्हें स्थिति पर खींचता है - camera.position। कैमरा स्थिति हमेशा इस मामले में आपके खिलाड़ियों की स्थिति के बराबर होगी।


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

1
+1। camera.setChaseEntity(player);इसे प्राप्त करने के लिए उपयोग करें।
मार्टिनटार्गा

6

मैं हमेशा कैमरा घुमाता हूँ और इसकी सिफारिश करता हूँ - ऐसे कई कारण हैं, जिनकी वजह से मैं इसे पसंद करता हूँ, लेकिन सबसे महत्वपूर्ण शायद इसके लिए उबालता है:

  1. यदि आप कैमरा और प्लेयर को स्थानांतरित करते हैं, तो स्क्रीन को स्क्रॉल करने के लिए केवल दो एंटिटीज़ को अपडेट करना होगा।

  2. यदि आपको स्क्रीन को स्क्रॉल करने की आवश्यकता होती है, तो आप पूरी दुनिया को स्थानांतरित करते हैं, जिसमें एक अज्ञात और संभवतः बड़ी संख्या में इकाइयां शामिल होती हैं जिन्हें अपडेट करना होगा।


मैं सहमत हूं, लेकिन मैं यह जोड़ना चाहूंगा कि बस दुश्मन वर्ग के लिए विश्व आंदोलन को जोड़ने वाली लाइन + = काफी तुच्छ होगी।
सिरयालकोट

@AsherEinhorn मुझे लगता है कि आप एक परिदृश्य के बारे में बात कर रहे हैं जैसे कि एक दृश्य ग्राफ जहां प्रत्येक नोड माता-पिता के परिवर्तनों को साझा करता है और बस रूट नोड (यानी "दुनिया") को स्थानांतरित करके बाकी सब कुछ स्वचालित रूप से अनुवाद करेगा? क्योंकि हर दूसरे मामले में, दुनिया को हिलाने का तात्पर्य है दुनिया की हर चीज को हिलाना - जो कि मेरी पोस्ट की बात थी।
डेविड गाविया

अच्छी तरह से अगर दुनिया के आंदोलन खिलाड़ी के विपरीत आनुपातिक है। यानी - आप आगे बढ़ते हैं, दुनिया पीछे हटती है, तो आप बस कर सकते हैं - = खिलाड़ियों के सभी गेमबिज के लिए आंदोलन। मैं आपसे सहमत हूँ मैं कह रहा हूँ कि दोनों काम करने के लिए तुच्छ तरीके हैं।
सिरयाकोट

4

यह वास्तव में बहुत तुच्छ है, यह वास्तव में आपके द्वारा वर्णित चीजों से कोई फर्क नहीं पड़ता है।

या तो आप बैकग्राउंड को कैमरा और प्लेयर से आगे बढ़ाते हैं, या आप प्लेयर और कैमरा को उसके साथ घुमाते हैं। मुझे लगता है कि अगर आप पृष्ठभूमि को आगे बढ़ाते हैं तो एक कम बात है।

हालांकि मुझे लगता है कि यदि आप पृष्ठभूमि को आगे बढ़ाते हैं, तो आपको किसी भी पिकअप और शत्रु को उसके माता-पिता के पास ले जाना होगा, जो फिर से तुच्छ है, लेकिन इसके बारे में सोचने के लिए कुछ है।

व्यक्तिगत रूप से मैं खिलाड़ी को आगे बढ़ाऊंगा क्योंकि मैं चीजों को अधिक यथार्थवादी तरीके से करना पसंद करता हूं।


0

अन्य उत्तर अच्छे हैं, लेकिन मैं कुछ ऐसे बिंदुओं को जोड़ना चाहूंगा जो बेहतर हों, किसी ऐसे व्यक्ति की मदद करने की उम्मीद करना जो एक अलग परियोजना के लिए एक ही निर्णय लेने की कोशिश करता है।

प्लेयर को ले जाना:

  • यह सरल है, बाकी सब कुछ स्थिर (ईश) है, इसलिए सरल शब्दों में, खिलाड़ी को स्थानांतरित करने के लिए आपको केवल एक चीज की आवश्यकता है player.x += 5;(छद्मकोश)।
  • यह ज्यादातर लोगों के लिए "बेहतर क्लिक" है। जब आप कोई खेल खेलते हैं, तो आप हमेशा सोचते हैं कि खिलाड़ी चलता है, दूसरे तरीके से नहीं। इसलिए इसे यह सोचना आसान है कि "खिलाड़ी को चलना चाहिए, दुनिया को नहीं", जो बदले में, किसी के लिए इसे अपने सिर में व्यवस्थित करना आसान बना सकता है।
  • यह ट्रैक करना आसान है कि खिलाड़ी कहां है (यह स्थिति मानचित्र पर इसके निर्देशांक भी है)

विश्व घूम रहा है:

  • यदि आपका खेल काफी बड़ा है, तो आपको दुनिया के केंद्र से बहुत दूर जाकर, ओवरफ्लो / अंडरफ्लो के बारे में चिंता करने की ज़रूरत नहीं है, क्योंकि खिलाड़ी की स्थिति हमेशा बहुत करीब होती है 0
  • उपरोक्त के समान, यदि आप 3 डी गणना के साथ गड़बड़ करते हैं, तो आपको फ्लोटिंग पॉइंट के साथ गलत परिणामों के बारे में चिंता करने की ज़रूरत नहीं है, क्योंकि स्क्रीन पर आप जो कुछ भी देखते हैं वह काफी करीब होना चाहिए 0
  • यदि सही ढंग से किया जाता है, तो आप एक "अनंत" दुनिया बना सकते हैं।
  • खिलाड़ी को मैन्युअल रूप से ट्रैक करना है, खिलाड़ी की स्थिति हमेशा एक छोटा मान होगी, जो यह दर्शाता है कि खिलाड़ी स्क्रीन पर कहां है (थोड़े), यह जानने के लिए कि खिलाड़ी मानचित्र के शीर्ष-बाएं या निचले-दाएं पर है, आपको किसी तरह उस पर नज़र रखनी होगी।

दिन के अंत में, यह परियोजना पर निर्भर करता है। यदि कोई व्यक्ति एक मूल मारियो क्लोन बना रहा है, तो दुनिया को स्थानांतरित करना जटिल हो सकता है, जबकि खिलाड़ी को हिलाने से वास्तव में कई समस्याएं पैदा नहीं होती हैं। एक विशाल ओपन-वर्ल्ड गेम बनाना चाहते हैं, लेकिन इसके बजाय दुनिया को स्थानांतरित करना बेहतर हो सकता है।

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