मेरे पास एक "अमीबा" गेम मैकेनिक है। इसे लागू करने के बारे में कोई विचार?


19

टेट्रिस क्लोन के बाहर , एक भद्दा 2D टॉप-डाउन शूटर , और कुछ एकता और फ्लिक्सल जैसे सामान के साथ खिलवाड़, मुझे एहसास है कि मुझे अभी तक एक एकल , पॉलिश, घंटियाँ और सीटी का खेल पूरा करना है। मैं इसे बदलना चाहता हूं, और मुझे अपनी अगली परियोजना के लिए एक विचार है।

विचार यह है कि आप अमीबा हैं। अमीबा के पास इन आंखों की तरह कोर (या ऐसा कुछ है, मुझे जीव विज्ञान नहीं पता है), और आपके पास दो हैं। आप एक पर नियंत्रण रखते हैं WASDऔर दूसरे के साथ IJKL। प्रत्येक कोर के आस-पास सामान की एक निरंतर त्रिज्या होनी चाहिए :

2meba1

और अमीबा के क्षेत्र को स्थिर रहना होगा। इसलिए यदि आप एक दिशा में एक कोर ले जाते हैं, तो आप अमीबा के क्षेत्र को बढ़ाते हैं, लेकिन उस वृद्धि की भरपाई कहीं और घट जाती है:

2meba2

Aaaaaand मैं एक मैकेनिक मैकेनिक को लागू करना चाहूंगा । आप चीजों को एंज्‍वॉय करके, बॉस की तरह सोख लेते हैं। हो सकता है कि यहां तक कि एक अतिरिक्त कोर, या एक सुई है कि आप पॉप और अपने सभी आंतरिक सामान शुरू करने के लिए कारण बनता है gushing बाहर:

2meba3

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

PS इस विचार को चुराने के लिए स्वतंत्र महसूस करें। मेरे पास बहुत सारे विचार हैं। यदि आप करते हैं, तो कृपया मुझे बताएं कि आपने इसे कैसे बनाया है इसलिए मैं इसे स्वयं आजमा सकता हूं।


3
Noun- और क्रिया-रूप हैं invagination और invaginate क्रमशः FYI करें,। (मैंने जीव विज्ञान किया।) अच्छी तस्वीरें।
इंजीनियर

2
आपको वह मीठा काला पेपर कहां मिलेगा?
ब्रेंडन

5
@brendan: यदि आप काले के साथ सफेद, लाल के साथ लाल और काले के साथ सफेद स्वैप करते हैं, तो यह बहुत अधिक स्पष्ट हो जाता है जहां उसे यह "ब्लैक पेपर" मिला है। ;)
नाइट ६६

1
तुम लोग बहुत चालाक हो: D
जेसन तू

जवाबों:


16

मेरे सिर के ऊपर से, जो खंड मुझसे चिपक जाता है वह यह है कि आप चाहते हैं कि क्षेत्र स्थिर हो। यह मुझे इस सब में दर्द के रूप में प्रभावित करता है, तो चलो कोशिश करते हैं और उस के लिए एक आसान समाधान के साथ आते हैं।

स्ट्रिंग का एक टुकड़ा लें और एक सर्कल बनाने के लिए छोरों को एक साथ टाई। मैं गलत हो सकता हूं, लेकिन मेरा अंतर्ज्ञान कहता है कि उस तार के अंदर एक स्थिर क्षेत्र है, या आपकी अमीबा सीमा की तरह एक भयानक बहुत कुछ करेगा।

तो मैं कहूंगा: स्ट्रिंग को लागू करें। ;) अधिकांश भौतिकी पुस्तकालय स्प्रिंग्स कर सकते हैं (Box2D में यह दूरी संयुक्त की तरह दिखता है), और एक स्ट्रिंग बनाने का सबसे आसान तरीका बहुत सारे तार एक साथ कनेक्ट करना है। लूप बनाने के लिए पहले वाले अंतिम से जुड़ें। सुनिश्चित करें कि स्ट्रिंग में स्प्रिंग्स के पास एक उच्च पर्याप्त वसंत स्थिर है, जो अलग नहीं हुआ है - आप चाहते हैं कि वे काफी कठोर हों और एकसमान में आगे बढ़ें, न कि बाहर का विस्तार करने के लिए।

अगला, स्ट्रिंग पर कार्य करने के लिए बल बनाएँ। तुच्छ रूप से, आपके दो कोर / आंखें / नियंत्रण बिंदु, स्ट्रिंग बनाने वाले बिंदुओं पर बल बनाते हैं। उलटा वर्ग फ़ंक्शन के साथ बल को गिराना:

float forceOnPoint(point, ball)
{
  float d = distance(point, ball);
  return K / (d*d);
}

और बल की दिशा को नियंत्रण आँख / गेंद से सीधे दूर करें, जैसे गेंद से निकलने वाली विकर्षक बल। बल की ताकत को नियंत्रित करने के लिए Tweak K। सुनिश्चित करें कि K बहुत अधिक नहीं है - आप नहीं चाहते कि इसे केवल बल द्वारा बड़े पैमाने पर धकेला जाए, बस इसे गेंदों से दूर रखें। अपनी स्ट्रिंग में बहुत कमी छोड़ दें।

बस उन दो के साथ आप शायद एक समान आकार के साथ समाप्त हो जाएंगे, इसलिए मैं आपको सुझाव दूंगा कि आप अमीबा के आकार को बदलने के लिए आसपास के 'सूप' में कुछ कमजोर ताकतों को पैदा करें। आप इन यादृच्छिक स्थानों को बना सकते हैं, उनके बल को नियमित रूप से बदल सकते हैं (आप इसे अच्छी चाल के लिए एक साइनसॉइड फ़ंक्शन बना सकते हैं) और उन्हें गेंदों के समान काम कर सकते हैं।

वाग्नेशन (fnarr): यह मुश्किल है। यदि आप यह देखते हुए किसी ऑब्जेक्ट को कवर करने का कारण बनते हैं कि क्या स्ट्रिंग पर दो गैर-आसन्न बिंदु पर्याप्त रूप से बंद होने में कामयाब रहे हैं, और यदि आपको इसकी आवश्यकता है:

स्ट्रिंग पर बिंदुओं के बीच की दूरी को मापें। वसंत वर्गों की संख्या की गणना करें। A से B तक का 'छोटा' मार्ग खोजें

स्ट्रिंग को तोड़ें और इसे दो बिंदुओं के साथ फिर से जोड़ दें। दूसरे शब्दों में, सीधे बिंदु A से बिंदु B तक जुड़ते हैं और सभी सामानों को छोड़ देते हैं।

दूसरे पक्ष में स्ट्रिंग में गुम अंकों की संख्या (साथ ही यदि आप कुछ खाकर आकार में विस्तार करना चाहते हैं तो किसी भी बोनस अंक) को फिर से डालें - यानी, बी से ए की तरफ की तरफ। यदि आप उन्हें लंबाई के साथ समान रूप से सम्मिलित करते हैं। बिंदुओं के बीच वांछित दूरी से उन्हें छोटा करें, आपको एक अच्छा वसंत-विस्तार प्रभाव प्राप्त करना चाहिए।

मुझे लगता है कि सब कुछ कवर करता है। वैसे: विचार भयानक लगता है।


18
Fwiw, जबकि मैं पूरे पर इस समाधान की तरह, स्ट्रिंग निरंतर क्षेत्र होने के इंटीरियर के बारे में अपने अंतर्ज्ञान है गलत - चक्र अपनी सीमा के रूप में है कि बंधे-साथ स्ट्रिंग के साथ किसी भी आकार के बाहर अधिक से अधिक क्षेत्र है। यह देखने का सबसे आसान तरीका है कि यह भिन्न होता है दो छोरों को खींचकर स्ट्रिंग को 'स्क्विशिंग' करने की कल्पना करना; तब आपको जो आकार मिलता है (चाहे आयत या दीर्घवृत्त या क्या-क्या-आप) कभी भी आधा परिधि से अधिक चौड़ा नहीं हो सकता है, लेकिन इसकी ऊंचाई शून्य हो जाती है इसलिए यह क्षेत्र (जो चौड़ाई * ऊंचाई से घिरा होता है) भी शून्य तक सिकुड़ जाता है।
स्टीवन स्टैडनिक

1
मुझे लगता है कि आपका मतलब "... एक स्ट्रिंग बनाने के लिए बहुत सारे स्प्रिंग्स को एक साथ जोड़ना है ।"
रिचर्ड मार्स्केल - Drackir

8

एंडोसाइटोसिस (सेल को बाहरी कोर खाने की प्रक्रिया) का अनुकरण करने के लिए, प्रत्येक कोर, अमीबा के अंदर और बाहर, अमीबा की सीमा को पीछे हटा देगा। अमीबा के अंदर के शवों पर मध्यम रूप से मजबूत प्रतिकारक प्रभाव होगा, जबकि बाहर वालों पर एक छोटा प्रतिकारक प्रभाव होगा। यह नीचे सचित्र है।

यहां छवि विवरण दर्ज करें

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

यह एंडोसाइटोसिस की प्रक्रिया की अच्छी तरह से नकल करता है, और एक अच्छा दृश्य प्रभाव देता है।

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


खेल को यथार्थवादी बनाने के लिए कुछ अन्य विचार किसी भी तरह से कोशिकाओं की नमक सामग्री को संशोधित करने में सक्षम होंगे। जब किसी कोशिका के अंदर और बाहर नमक की सघनता मेल नहीं खाती है, तो ऑस्मोसिस नामक प्रक्रिया में उच्च नमक सामग्री वाले स्थान की ओर सेल झिल्ली के माध्यम से पानी निकलता है। अगर अमीबा में नमक की मात्रा अधिक होती है, तो इसकी मात्रा अधिक होती है, लेकिन परिधि नहीं बदलेगी। खेल में, नमक की सामग्री अधिक होने पर यह अंदर के कोर को एक उच्च प्रतिकारक प्रभाव देकर अनुकरण किया जा सकता है।

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


3

अच्छी तरह से ग्राफिकल इफ़ेक्ट करने के लिए आप सबसे अधिक मेटाबॉल का उपयोग करेंगे (उनके लिए ऑनलाइन बहुत सारे ट्यूटोरियल देखें)


2

वैसे मैं सेलक्राफ्ट नामक एक शैक्षिक खेल के बारे में जानता हूं (हालांकि Minecraft का कोई संबंध नहीं है) जिसमें सेल जैसे प्राणी को नियंत्रित करना शामिल है जो आपके लिए बहुत ही समान आंदोलनों की आवश्यकता है। खेल नि: शुल्क है और शायद अधिक महत्वपूर्ण यह है कि उन्होंने अपनी साइट पर स्पष्ट रूप से कहा कि वे स्रोत कोड मुफ्त में उपलब्ध कराने का इरादा रखते हैं और यह एक्शनस्क्रिप्ट 3 में बनाया गया था और यह एक फ्लैश आधारित गेम है।

http://www.cellcraftgame.com/Home.html


1

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

कणों के अनुकरण के लिए "स्मूथेड पार्टिकल हाइड्रोडायनामिक्स", और उन्हें (और स्ट्रिंग) अनुकरण करने के लिए "वर्टे इंटीग्रेशन" देखें। वर्लेट एक स्थिति-आधारित तकनीक है इसलिए यह बहुत सरल और स्थिर है।

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

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

एक अन्य दृष्टिकोण स्ट्रिंग कणों को उनके 'बाहरी' मानदंडों की दिशा में एक छोटा 'फुलाव' बल प्रदान करना होगा। यह एक तरह के आंतरिक दबाव का अनुकरण करेगा। परिणाम यह है कि लूप एक सर्कल आकार को बनाए रखने की कोशिश करेगा। यही कारण है कि मैं के लिए इस्तेमाल किया है इस

आशा करता हूँ की ये काम करेगा।

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