मुझे भौतिकी इंजन का उपयोग कब करना चाहिए? [बन्द है]


12

चूंकि मुझे Box2D का पता चला है , मैं इसे किसी भी गेम-जैसे एप्लिकेशन के लिए उपयोग कर रहा हूं, जो मैं लिखने की कोशिश करता हूं, बहुत छोटे प्रोटोटाइप या छोटे कार्यक्रमों से, कुछ का परीक्षण करने के लिए, वास्तविक परियोजनाओं के लिए।

इसके लिए धन्यवाद, वास्तविक भौतिकी के लिए, टकरावों से कुछ भी संभालना बहुत आसान है।

कभी-कभी, हालांकि, मुझे इसके बारे में कुछ संदेह है: अगर मुझे केवल हलकों या एएबीबी को संभालना है, और उन्नत भौतिकी उपकरण (जोड़ों या उस तरह के सामान) की आवश्यकता नहीं है, तो मुझे लगता है कि एक भौतिकी इंजन एक बड़ा जोड़ सकता है, अनावश्यक ओवरहेड।

मेरे प्रश्न को फिर से मानने के लिए: क्या आप Box2D (या अन्य भौतिकी इंजन) का उपयोग उस खेल में करेंगे जहाँ भौतिकी वास्तव में सरल है (जैसे सुपर मारियो, मान लीजिए)? और, यदि नहीं, तो क्यों?


2
जो सही लगे उसे करो। क्या आपको लगता है कि आपके खेल को एक भौतिकी इंजन की आवश्यकता है? क्या आपको लगता है कि Box2D से मारियो को फायदा होगा? नवीनतम मारियो निश्चित रूप से अच्छा भौतिकी के साथ एक अच्छा लग रहा है, लेकिन यह कुछ भी महसूस नहीं करता है जैसे मैंने Box2D में बनाया है।
जेफ

@ जेफ़: यह इस बात पर निर्भर करता है कि प्रश्न "मुझे बॉक्स 2 डी का उपयोग कब करना चाहिए?" या "मुझे भौतिकी इंजन का उपयोग कब करना चाहिए?"। नए मारियो में निश्चित रूप से एक भौतिकी इंजन है।

1
@ जोए Wrigchnig: हाँ, लेकिन क्या कभी ऐसा मामला है जिसमें भौतिकी इंजन का उपयोग नहीं किया गया है? केवल एक बार जब मैं सोच सकता हूं कि एक पाठ साहसिक होगा, या बिंदु और क्लिक करें। मुझे लगता है कि यह निर्भर करता है कि आप भौतिकी इंजन की अपनी परिभाषा को कितना सामान्य बनाना चाहते हैं
जेफ

@ जेफ: कुछ (नॉन-फिजिक्स) पजल गेम्स की जरूरत होती है, जैसे टेट्रिस, बेज्वेल्ड। कार्रवाई के खेल में, मैं तर्क दे सकता हूं कि अधिकांश 2D shmups एक भौतिकी इंजन से लाभ नहीं उठाते हैं, क्योंकि उन्हें आम तौर पर AABB / सर्कल ओवरलैप चेक, कोई टक्कर की प्रतिक्रिया, बिल्कुल निश्चित आंदोलन पथ और निरंतर वेग की आवश्यकता होती है। प्लेटफ़ॉर्मर्स, हालांकि, सभी भौतिकी के बारे में हैं।

जवाबों:


8

यदि बॉक्स 2 डी के लिए उपयोग की जाने वाली मेमोरी, डिस्क स्थान, विकास प्रयास या प्रोसेसर समय आपके उद्देश्यों के लिए बहुत अधिक है, तो इसका उपयोग न करें। अन्यथा, यदि आप इसे उपयोगी पाते हैं तो इससे बचने का कोई कारण नहीं है।


2
यह सब वास्तव में करने के लिए नीचे आता है। यदि यह आपके जीवन को आसान बनाता है और आपके इच्छित प्लेटफ़ॉर्म से आपको ब्लॉक नहीं करता है, तो यह एक जीत है, भले ही आप इसके कुछ हिस्सों का उपयोग न करें।

1
या, दूसरे शब्दों में - "पहिया को मजबूत करने का एकमात्र कारण पहिया को सुदृढ़ करने के बारे में सीख रहा है।"
20

4

सुपर मारियो नहीं के रूप में कुछ के रूप में आसान है, क्योंकि यह वास्तव में बहुत भौतिकी नहीं है। (मारियो अपने कूदने के साथ अन्य वस्तु भौतिकी को प्रभावित नहीं करता है)

यदि आप भौतिकी का उपयोग कई वस्तुओं (एक से अधिक) के अर्थ में भौतिक विज्ञान का उपयोग करके अन्य वस्तुओं के परिणाम को प्रभावित करने के लिए कर रहे हैं, तो मैं एक इंजन का उपयोग करूंगा।


दूसरी ओर, मारियो में गति, त्वरण, एक चर आकार, और दिशात्मक टक्कर होती है, यह सब आपको भौतिकी इंजन के साथ "मुफ्त में" मिलता है, और केवल साधारण बाउंडिंग ओवरलैप चेक नहीं हैं।

मैं सहमत हूं - मुझे लगता है कि ज्यादातर समय एक भौतिकी इंजन आपको बहुत सारी चीजें देगा जो अपने आप को लागू करने के लिए समय की बर्बादी होगी।
क्रिस्टोफर हॉरेनस्टीन

3
यह सच है कि पहिया का आविष्कार न करना हमेशा बेहतर होता है, मुझे लगता है कि अगर मुझे सिर्फ एक पहिया चाहिए, तो मैं एक कार का खाका नहीं लेने जा रहा हूं। उसके शीर्ष पर, आप अपने गेम के बारे में अधिक जानेंगे, और भौतिकी को बदलना / बदलना आसान होगा।
Spooks

1
यह वास्तव में भयानक सादृश्य है। यह अधिक पसंद है, आप एक पहिया और धुरी और शायद एक स्टीयरिंग कॉलम और मोटर चाहते हैं लेकिन शायद डैशबोर्ड या पावर विंडो नहीं।

3
कौन बिजली खिड़कियां नहीं चाहेगा?
स्पूक्स

2

मेरा उत्तर है हाँ, बिल्कुल साधारण सामान के लिए Box2D की तरह एक भौतिकी इंजन का उपयोग करें, क्योंकि आप अनावश्यक सुविधाओं को लागू करने में कुछ समय खर्च नहीं करना चाहिए जो आपको जल्दी से एक भौतिकी इंजन से मिलता है। उदाहरण के लिए, एक स्थैतिक शरीर को परिभाषित करें और उस पर एक गतिशील शरीर को छोड़ दें, और दिशात्मक इनपुट के लिए अपने गतिशील शरीर पर बल लागू करें, और आपको कुछ ही मिनटों में एक प्लेटफ़ॉर्मर मिल गया है। मुझे नहीं लगता कि कोई इंजन इस लायक बनाने के लिए पर्याप्त ओवरहेड जोड़ता है।


3
हालांकि, कोई यह कह सकता है कि सरल भौतिकी बनाने के लिए Box2D को लागू करने और उपयोग करने में अधिक समय कैसे लगेगा। (हालांकि मुझे लगता है कि यह भौतिकी के उपयोग की सीमा पर निर्भर करता है)
स्पूक्स

1
@Spooks: मैं अभी भी उपयोगी है कि Box2D की तुलना में "आसान" कुछ भी कल्पना नहीं कर सकता।

मैं यहाँ जो के साथ पूर्ण सहमति में हूँ; Box2D का उपयोग करने के साथ आने वाली उपयोगिता के लिए कोई सरल प्रतिस्थापन नहीं है। मैं ऐसी किसी चीज़ की कोडिंग करने की कल्पना नहीं कर सकता, जो बॉक्सर 2 डी के साथ कुछ फिक्स्चर बनाने और गुरुत्वाकर्षण को परिभाषित करने के तरीके सीखने की तुलना में तेज़ी से किसी की ज़रूरतों को पूरा करेगी।
क्रिस्टोफर हॉरेंस्टीन

1

यदि किसी खेल में "भौतिकी" सरल है, तो भौतिकी इंजन आयात करने की कोई आवश्यकता नहीं है।

मैं फिजिक्स शब्द का उपयोग शिथिल रूप से करता हूं क्योंकि मॉडलिंग फिजिक्स और अनुकरणशील फिजिक्स में अंतर है। अंतर करने के लिए एक बहुत महत्वपूर्ण बात।

उदाहरण के लिए, मारियो ब्रदर्स में जब आप दौड़ेंगे और रुकेंगे तो आप थोड़ा सा स्लाइड करेंगे। इस बारे में सोचें कि आप इसे कैसे लागू कर सकते हैं।

आप इसे सभी आवश्यक चर को परिभाषित करके मॉडल कर सकते हैं: जैसे। द्रव्यमान, गुरुत्वाकर्षण, घर्षण, जोर आदि का सह-कुशल और फिर अपने नए वेग, त्वरण आदि की गणना करना।

क्या यह इतना कीमती है? आप खिलाड़ियों की गति को कम करके उसी प्रभाव को अनुकरण कर सकते हैं जब वे आगे नहीं बढ़ रहे हों ...

कुछ इस तरह:

if( pressing movement key ) { 
 speed = 5; 
} else { 
 if(speed) speed--; // slide!
} 

अंतर एक है भौतिकी दूसरा नहीं है। दोनों के पक्ष और विपक्ष हैं। लेकिन साधारण गेम के लिए एक सामान्य नियम के रूप में इसे नकली करना ज्यादा आसान है।


1
उस तरह की भौतिकी स्थूल है। यदि आप इसे नकली करने जा रहे हैं, तो यह अच्छा लग सकता है। घर्षण = .9 या नीचे कुछ संख्या 1. स्पीडएक्स * = घर्षण; speedy * = घर्षण;
अटैकिंगहोबो

2
बेशक, परियोजना के अंत तक यह "में बदल जाता है (यदि आंदोलन की कुंजी दबाकर और बर्फ पर नहीं और पानी के नीचे नहीं है और आपके पास यह विशेष पावरअप है और आप एक बूट में सवारी नहीं कर रहे हैं और ...)"।

@AttackingHobo: पोस्ट का बिंदु एक अच्छा स्लाइडिंग एल्गोरिथ्म बनाने के बारे में नहीं है .. यह एक सिमुलेशन और एक मॉडल के बीच अंतर को चित्रित करना है।
अरनॉफ़र

@ जो: वे केवल आपके घर्षण चर में संशोधन कर रहे हैं .. शायद आप और @AttackingHobo को चैट करना चाहिए: पी एक भौतिकी इंजन के साथ आपको खेल में प्रत्येक ऑब्जेक्ट के लिए गुणों को परिभाषित करना होगा। मेरा कहना है कि सरल गेम के लिए भौतिकी इंजन में प्लगिंग स्वचालित नहीं होनी चाहिए। इसका स्थितिजन्य।
अरनॉफिएर

1
@ARonfarr: सिमुलेशन और मॉडल के बीच कोई अंतर नहीं है; इन उद्देश्यों के लिए वे पर्यायवाची हैं। आप सभी ने दिखाया है कि एक खिलौना मॉडल / सिमुलेशन का एक अलग हिस्सा Box2D की संपूर्णता से कम कोड है।

0

आपको परिस्थिति के अनुसार निर्णय लेना होगा

अपने कस्टम इंजन का उपयोग कर पेशेवरों

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

ऑफ-द-शेल्फ भौतिकी इंजन के पेशेवरों:

  • अधिक प्रयास के बिना नए हार्डवेयर और नए ओएस के लिए अनुकूल हो सकता है
  • जटिल सुविधाओं के लिए कम अध्ययन और प्रोग्रामिंग प्रयास
  • जटिल विशेषताओं के लिए उच्च प्रदर्शन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.