हमने रिमोट कंट्रोल के साथ बोर्ड गेम कैसे बनाया - भाग 2

पिछली बार मैंने आपको हमारे "स्मार्ट" बोर्ड गेम के तकनीकी घटक के बारे में बताया था कि हमें किन समस्याओं का सामना करना पड़ा और आखिर में क्या हुआ।

छवि

आज मैं मोबाइल एप्लिकेशन, पहले गेम और इसके लिए थंबनेल बनाने के तरीके के बारे में अधिक विस्तार से बात करना चाहता हूं।

पहला लेख यहां पाया जा सकता है: हमने रिमोट कंट्रोल के साथ बोर्ड गेम कैसे बनाया - भाग 1

चेतावनी! पर कई चित्र।

पिछले लेख की टिप्पणियों में, उन्होंने सही ढंग से नोट किया कि खेल बनाने के लिए बेहतर नहीं है, लेकिन एक मंच जिसके आधार पर उपलब्ध यांत्रिकी का उपयोग करके खेल बनाना संभव है। शुरुआत में, हमने इसकी योजना बनाई, लेकिन परिणामस्वरूप, हमें महसूस हुआ कि हम खेल के अलावा कुछ नहीं कर सकते। सिर्फ गेम डिजाइन या परिचित गेम डिजाइनरों में अनुभव की कमी के कारण जो हमें बता सकते हैं कि किस मैकेनिक्स का समर्थन किया जाना चाहिए।

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

मोबाइल ऐप


जैसा कि मैंने पहले लिखा था, सभी प्लेटफ़ॉर्म प्रबंधन एक मोबाइल एप्लिकेशन के माध्यम से किया जाता है जो बीएलई प्रोटोकॉल के माध्यम से इसे जोड़ता है।

कई GIF
GIF "" /

GIF

GIF

GIF "" /

वास्तव में, किसी भी गेम को लागू करने के लिए आपको इसके लिए एक पूर्ण-मोबाइल एप्लिकेशन लिखना होगा, जिसमें आप सभी नियमों और यांत्रिकी का वर्णन करते हैं।

आवेदन लिखने की प्रक्रिया में, हमने प्लेटफ़ॉर्म से कनेक्ट करके सभी परीक्षण किए, जो बहुत सुविधाजनक नहीं है। इसलिए, डिबगिंग को सरल बनाने के लिए, हमने एप्लिकेशन के ढांचे के भीतर एक सरल सॉफ्टवेयर एमुलेटर बनाया, जिस पर डेटा उसी तरह से प्रदर्शित किया जाता है जैसे कि वह खेल के मैदान पर प्रदर्शित होता है।


बहुत शुरुआत में, हमें एक समस्या का सामना करना पड़ा कि एप्लिकेशन को छोड़ने वाला डेटा खो जाता है। हमने पाया कि BLE का उपयोग करते समय, भेजे जाने वाले अधिकतम पैकेट का आकार 20 बाइट्स होता है। इसलिए, हम BLE के सभी आउटगोइंग डेटा को 20 बाइट्स के पैकेट में विभाजित करते हैं, हेडर में "गेट" पैरामीटर लिखा होता है। यह पैरामीटर Arduino को यह समझने में मदद करता है कि यह पैकेज किस प्लेटफ़ॉर्म का है। Arduino की ओर से, इन पैकेजों का प्रसंस्करण प्राथमिक है:

if (NewCommandReady) { switch (CurrentGate) { case 1: processLEDCommand(); break; case 2: processDriverCommand(); break; case 3: processMagnetCommand(); case 4: // break; } //  NewCommandReady = false; } 

जब हमने स्मार्टफोन और BLE मॉड्यूल के बीच डेटा की स्ट्रीमिंग को 20-बाइट पैकेट में तोड़ दिया, तो डेटा गायब होना बंद हो गया, लेकिन अक्सर विकृत रूप में Arduino पर आ गया। यह पता चला कि हमने इस बात पर ध्यान नहीं दिया कि अरुडिनो सीरियल पोर्ट में 64 बाइट्स का बफर है। जब बफर ओवरफ्लो होता है, तो डेटा खो जाता है, और बाद वाले विकृत होते हैं। आकार बढ़ाना और अपना बफर बनाना हमेशा मदद नहीं करता था। मुझे डेटा भेजने और प्राप्त करने के लिए BLE परिवहन के शीर्ष पर एक आवरण प्रोटोकॉल लिखना था।

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

खेल के मैदान पर वस्तुओं को प्रदर्शित करने के लिए, हमने OS विंडो सबसिस्टम में परतों के सिद्धांत का उपयोग किया:

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

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

  • डायोड को पुन: प्रदर्शित करने के लिए, एक बफर का उपयोग किया जाता है जिसमें परिवर्तन तब तक किए जाते हैं जब ये परिवर्तन भौतिक बोर्ड पर प्रदर्शित होने चाहिए।
  • एक ही आदेश के भीतर एक एकल एलईडी को बाहर रखा गया है।
  • जब पुनरावृत्ति (उदाहरण के लिए, 1 सेल द्वारा एओई क्षमता के क्षेत्र की पारी), एलईडी बोर्ड की वर्तमान स्थिति का विश्लेषण किया जाता है। यदि नए राज्य में एलईडी का रंग पिछले एक से भिन्न नहीं होता है, तो अरुडीनो द्वारा इसे पुन: प्रस्तुत करने के लिए कोई आदेश प्राप्त नहीं होगा।

गेमप्ले


इसलिए, आपने खेलने का फैसला किया। नीचे मैं वर्णन करूंगा कि यह किस तरह से दिखता है:

  1. हम प्लग को आउटलेट में डालते हैं और खेल को चालू करते हैं।
  2. प्रत्येक शुरुआत में, 1 सेल को स्थानांतरित करने के लिए स्टेपर मोटर के चरणों की सटीक संख्या निर्धारित करने के लिए एक स्वचालित अंशांकन होता है।
  3. समानांतर में, हम ब्लूटूथ का उपयोग करके स्मार्टफोन को गेम से कनेक्ट करते हैं।
  4. मोबाइल एप्लिकेशन में, प्रत्येक खिलाड़ी उस चरित्र का चयन करता है जिसे वह खेलना चाहता है। सभी ने अपनी पसंद बनाने के बाद, "START" दबाएं।

  5. प्रत्येक वर्ण का अपना रंग है। खेल स्वचालित रूप से उस सेल को उजागर करेगा जहां आपको अपने नायक का आंकड़ा लगाने की आवश्यकता है।
  6. खेल क्रमिक रूप से होता है। पहला कदम खिलाड़ी द्वारा चुना जाता है जिसने पहले नायक को चुना, दूसरा - दूसरा, आदि।
  7. प्रत्येक नायक के पास निश्चित संख्या में एक्शन पॉइंट्स (OD) होते हैं जिन्हें अखाड़े के चारों ओर घूमने या क्षमताओं को लागू करने पर खर्च किया जा सकता है।
  8. प्रत्येक क्षमता का अपना पुनर्प्राप्ति समय होता है, जिसकी गणना राउंड में की जाती है। मोबाइल एप्लिकेशन के ढांचे के भीतर, 2 अवधारणाएं हैं: हटो - खिलाड़ी की वर्तमान क्रियाओं के शुरू से अंत तक अंतराल। राउंड - खेल में भाग लेने वाले सभी खिलाड़ियों की चाल का योग। वर्तमान में, एक खिलाड़ी की बारी 30 सेकंड तक सीमित है।
  9. बाधाएं उस क्षेत्र पर रखी जाती हैं जिसके माध्यम से खिलाड़ी अधिकांश क्षमताओं को पारित या उपयोग करने में सक्षम नहीं होगा। अब वे केवल खेल के मैदान पर लाल रंग में हाइलाइट किए जाते हैं, लेकिन भविष्य में उनके पास एक भौतिक अवतार होगा।

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


    यह समस्या कोशिकाओं के माध्यम से रेखांकन और बीएफएस मार्ग की मदद से काफी सरल रूप से हल हो गई है।
    संक्षेप में, एल्गोरिथ्म का सार नायक की वर्तमान स्थिति से लेकर निर्दिष्ट सेल (नारंगी में इंगित) तक दूरी को चिह्नित करना है, जिसमें नायक को स्थानांतरित किया जाना चाहिए।

    वांछित सेल को खोजने के बाद, वापसी पथ को कोशिकाओं में इस तरह से खोजा जाता है कि प्रारंभिक बिंदु से अगले सेल तक की दूरी वर्तमान सेल की तुलना में 1 कम होनी चाहिए (मार्ग पीले रंग में चिह्नित है)। प्रारंभिक स्थिति (ग्रीन सेल) पर लौटने के बाद, अंकों का एक क्रम बनता है, जो सबसे छोटा रास्ता है। यही वह क्रम है जो हीरो को स्थानांतरित करने के लिए टीमों के रूप में अरुडिनो को प्रेषित किया जाता है।
  11. नायक की मृत्यु के बाद, खेल स्वचालित रूप से उसका आंकड़ा "होम ज़ोन" में ले जाता है। होम ज़ोन - एक सेल जिसमें आंकड़ा खेल की शुरुआत में रखा गया है। प्रत्येक खिलाड़ी का अपना है। गेम शुरू करने के बाद, आप होम ज़ोन में क्षमता दर्ज या उपयोग नहीं कर सकते। ऐसा इसलिए किया जाता है ताकि खिलाड़ी को रिवाइवल पर पकड़ना असंभव हो। एक खिलाड़ी जिसका नायक हार जाता है, उसके लिए खेल 1 राउंड में समाप्त होता है। वह लड़ाई में शामिल होने के बाद।

  12. फिलहाल, जिस खिलाड़ी का नायक अंतिम मैदान पर बना रहा, वह विरोधियों को हराकर जीत रहा है। लेकिन स्थिति अलग हो सकती है, उदाहरण के लिए, जिसने एन फ़्रैग बनाया, वह पहले जीत गया।

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

थंबनेल


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

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

कुछ हफ़्ते के बाद, हमें अपना पहला स्केच मिला।


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

लघुचित्रों के उत्पादन में संलग्न होने से पहले, हमें प्रत्येक नायक के मास्टर मॉडल बनाने की जरूरत थी, जो एक प्रोटोटाइप के लिए काफी हैं। पहले तो हम उन्हें बहुलक मिट्टी से बाहर करना चाहते थे, लेकिन यह पता चला कि हमारे दोस्तों के बीच कोई लघु-वैज्ञानिक नहीं थे, और उस समय कस्टम-मेड बहुत महंगा था। इसलिए, हमने फैसला किया कि हम पहले उन्हें 3 डी प्रिंटर पर प्रिंट करेंगे। ऐसा करने के लिए, हमारे दोस्त ने ज़ुब्रश में हमारे पहले नायकों के 3 डी मॉडल बनाए।


एफडीएम-प्रिंटिंग की मदद से स्वीकार्य गुणवत्ता के आंकड़े प्रिंट करना संभव नहीं था, जो काफी अपेक्षित था।

सौभाग्य से, मेरी पत्नी के पास काम पर SLA 3D प्रिंटर हैं।

Stereolithography (SLA) एक 3 डी प्रिंटिंग तकनीक है जो आपको एक प्रकाश स्रोत, परत दर परत, फोटोपोलाइमराइजेशन प्रक्रिया का उपयोग करके तरल पदार्थों को ठोस वस्तुओं में बदलने की अनुमति देती है। एसएलए प्रौद्योगिकी द्वारा मुद्रण के दौरान परत की मोटाई एफडीएम का उपयोग करते हुए मुद्रण की तुलना में कई गुना छोटी है, इसलिए, तैयार उत्पाद की गुणवत्ता अधिक है।

कुछ दिनों बाद हमें अपना पहला लघुचित्र दिया गया।


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

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

कुल मिलाकर


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

खेल के साथ थोड़ा कठिन। बेशक, मैं एक विशिष्ट गेम के संदर्भ के बिना, प्लेटफ़ॉर्म के कार्यान्वयन पर पूरी तरह से ध्यान केंद्रित करना चाहता हूं। हालांकि, हम अच्छी तरह से जानते हैं कि कोई भी एक खेल के बिना एक मंच में दिलचस्पी नहीं रखता है।

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

Source: https://habr.com/ru/post/hi427227/


All Articles