खरोंच से एक गेम बनाते समय रेक और सर्कल चलना

सपनों को सच करने और खरोंच से एक खेल बनाने के बारे में एक पोस्ट। और विभिन्न आकारों के एक रैक के बारे में।











0. दिया गया



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

कुछ मायनों में, एक शौक के रूप में, मैंने भी गामेदेव के प्रति अपना दृष्टिकोण रखा, हालांकि, दूसरी तरफ, बॉट्स का विकास और वह सब।

साल बीत गए, और मेरी अपनी प्राथमिकता और कवियों के साथ कुछ लिखने की सोची, मुझे पीड़ा नहीं हुई। कुछ बिंदु पर, मुझे एहसास हुआ कि अब या कभी नहीं।



1. आइडिया और प्रोटोटाइप



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



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



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

नतीजतन, विकल्प यूनिटी 3 डी पर गिर गया, यह मुझे इष्टतम लगा और मैंने धीरे-धीरे लिखना शुरू कर दिया। एक महीने बाद, iPad के लिए इस तरह का एक आवेदन आया था।











इसमें हम लाल रंग में एक किसान के लिए खेले और नीले रंग में किसानों से दूर भागे, उसी समय दिल इकट्ठे हुए - सितारों को पढ़ा। उस समय, हमने अभी भी दीवारों के रूप में क्यूब्स का उपयोग किया था, लेकिन फिर स्क्रीन पर जगह बचाने के लिए हमने उन्हें बदल दिया।

मैं इस बात पर ध्यान देना चाहूंगा कि मैंने कभी भी C # में नहीं लिखा था, लेकिन JS में लिखा था, इसलिए प्रोटोटाइप UnityScript द्वारा लिखा गया था (यह Unity3D के भीतर JS की ऐसी बोली है)। और ये पहली बड़ी रेक थीं जो हमें एक सबक के रूप में पेश करती थीं। मुझे C # में सब कुछ फिर से लिखना पड़ा और इसमें कुछ महीने लग गए।



2. टीम



जैसा कि मैंने एक दर्जन भाषाओं में लिखा है, यह सच है, तो क्या यह सच है कि मैं एक सीधी रेखा भी नहीं खींच पा रहा हूं। इसलिए, प्रोटोटाइप बनाने के बाद, मैंने एक कलाकार \ 3Dshnik की तलाश शुरू की, इसके लिए मैं फ्रीलांस साइट पर गया और पहले तीन सौ लोगों को देखा, एक दर्जन के साथ - मैंने लिखा था। किसी जोखिम भरे प्रोजेक्ट में हिस्सेदारी के लिए किसी व्यक्ति को ढूंढना आसान काम नहीं है। लेकिन यह हल हो गया था, और एक प्रतिभाशाली कलाकार रामिल परियोजना में दिखाई दिया; इसलिए - हम में से दो थे।

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



3. खेल की मूल अवधारणा का विस्तार



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



संकल्पना कला








खेल की मुख्य विशेषता, हमने यह सुनिश्चित करने की योजना बनाई कि चरित्र समय में वापस आ सकता है, कुछ पीछे हटता है। यानी चाल को रद्द नहीं कर रहा है, लेकिन सेल में प्रति स्तर 1 बार स्थानांतरित करने की क्षमता जहां चरित्र 3 था वापस आ गया। इसने इस कदम के लिए बड़ी संख्या में विकल्प दिए, लेकिन पहले परीक्षणों में यह पता चला कि सामान्य खिलाड़ी ऐसे स्तरों को पारित करने में सक्षम नहीं हैं। बहुत जटिल है। क्या यह ब्रेनियाक संस्करण बनाने लायक हो सकता है?



हमने स्तरों के आकार के साथ भी बहुत कुछ प्रयोग किया है, अंत में हम इस तथ्य पर बसे हैं कि पूरे स्तर को स्क्रीन पर फिट होना चाहिए, यहां तक ​​कि छोटे स्क्रीन वाले उपकरणों पर भी। इसलिए हमें 5x8 सेल स्तर मिला। लेकिन एक ही समय में, हमारे पास एक चुटकी ज़ूम है, बड़ी उंगलियों या 6x10 के स्तर के लिए। स्तरों के आकार को कम करने के अलावा, समय में वापसी को बंद करने के लिए, सरल बनाने के लिए, चाल को रद्द करने का प्रयास प्रति प्रयास 5 गुना तक जोड़ा गया था।



4. 2 डी बनाम 3 डी



कुछ बिंदु पर, हमारे परीक्षण का निर्माण इस तरह हुआ:

खौफ का साया






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

दृश्य से स्क्रीनशॉट


नतीजतन, iPhone4 पर, बाईं ओर (3D) प्रति सेकंड केवल 20 फ्रेम थे, और दाईं ओर (2D), स्थिर 60। इसी समय, दाईं ओर, तस्वीर की गुणवत्ता, जैसा कि आप देख सकते हैं, बेहतर परिमाण का एक क्रम है। अब, निश्चित रूप से, यदि आप iphone5 + स्तर के न्यूनतम प्रदर्शन पर ध्यान केंद्रित करते हैं और विशेष रूप से कई वर्ग ग्राफिक्स बनाते हैं, कोषेर शेड्स + लाइटमैपिंग + लाइटप रोब, आप 3 डी के लिए उत्कृष्ट ग्राफिक्स बना सकते हैं




परिणामस्वरूप, 2 डी में सब कुछ फिर से करने का निर्णय लिया गया। लेकिन यहां हमने एक गलती की, जो तभी तय नहीं हो सकी। 2D एनीमेशन 2 प्रकार का हो सकता है, पहला फ्रेम का एक क्रम है, दूसरा ओवरले और ऑफसेट स्प्राइट है।

स्पष्ट तुलना








चूंकि हमारे पास 3 डी मॉडल थे, इसलिए हमने पहला विकल्प चुना। नतीजतन, यह एक बड़े आवेदन भार के परिणामस्वरूप होगा, यहां तक ​​कि बड़ी संख्या में अनुकूलन को ध्यान में रखते हुए, हम 50 मेगाबाइट को पूरा करने में सक्षम नहीं होंगे।



5. फोर्स मेज्योर एक अवसर है



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

उन लोगों के लिए जो यह नहीं समझते हैं कि यह किस बारे में है






इस एप्लिकेशन पर, मैं सामाजिक के साथ एकीकरण का परीक्षण करने में सक्षम था। नेटवर्क, कई विज्ञापन नेटवर्क, आंतरिक विश्लेषिकी और इन-ऐप खरीदारी।



6. तकनीकी भाग



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

जनरेटर ने स्वयं एक txt फ़ाइल बनाई (जिसे एक दृश्य बनाने के लिए एकता द्वारा पार्स किया गया था) और चरण-दर-चरण स्तर को दिखाते हुए चित्रों की एक श्रृंखला।



जिफ एनीमेशन


यहां, हरे रंग का वर्ग खिलाड़ी है, पीला दुश्मन है, खोपड़ी एक जाल है जो खिलाड़ी को मारता है या 3 बारी से दुश्मन को इच्छामृत्यु देता है।





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



देशी पुस्तकालयों के एकीकरण द्वारा समय का एक बड़ा हिस्सा लिया गया था। मैं सीधे तौर पर कहूंगा: यदि आप एक तैयार किए गए कार्यान्वयन को खरीद सकते हैं जो आपको चाहिए, तो खरीदने के लिए स्वतंत्र महसूस करें। इस मामले में, एक विक्रेता से सब कुछ लेना वांछनीय है, क्योंकि प्रकट (एंड्रॉइड) में यूनिटी 3 डी में, मुख्यता के रूप में ऐसी चीज है और यह वह जगह है जहां विभिन्न प्लगइन्स संघर्ष कर सकते हैं। फिर iOS के लिए, सबसे अधिक संभावना है, आपके पास प्लगइन्स होंगे जो विभिन्न पोस्टप्रोसेसिंग में लगे हुए हैं, यह संघर्षों के लिए भी एक जगह है। सामान्य तौर पर, मूल निवासी, यह एक ऐसी जगह है जहां आप आसानी से त्रुटियों का पता लगाने के लिए बहुत मुश्किल हो सकते हैं। इसलिए, मूल कोड से संबंधित लगभग सब कुछ, हमने प्राइम 31 से खरीदा।



प्लगइन्स की पूरी सूची और प्रत्येक के बारे में कुछ शब्द
Prime31 (Android + iOS) Admob $ 95 - एक बड़ी भराई के साथ एक विज्ञापन, यह सिर्फ इतना हुआ कि सभी नेटवर्क एक बैनर नहीं दिखा सकते हैं जब उनसे पूछा जाता है ...

प्राइम 31 (एंड्रॉइड + आईओएस) $ 100 - एनालिटिक्स + विज्ञापन की हड़बड़ाहट।

Prime31 (Android + iOS) InApp $ 130 - इन-ऐप खरीदारी खरीदता है।

Prime31 (Android + iOS) सामाजिक $ 120 - ट्विटर और फेसबुक का सामाजिक एकीकरण ताकि आप परिणाम को पोस्ट कर सकते हैं या आवेदन की तरह।

Prime31 (Android + iOS) Etcetera $ 130 - एक देशी ऐप रेटिंग विंडो + हर छोटी चीज़।



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



गेम एनिमेशन के लिए 2DToolKit $ 65, अब उसके पास एक वैकल्पिक, अंतर्निहित 2D समर्थन एकता से है। लेकिन 2DToolKit को फ्रेम के दृश्यों के साथ काम करने के लिए तेज किया गया है, इसके अलावा, इसमें कई महत्वपूर्ण विशेषताएं हैं। उदाहरण के लिए, यह वर्गों में एक बड़ी तस्वीर को काट सकता है और उन्हें एक एटलस में डाल सकता है, यह आवश्यक है यदि आपके पास 1xxx पिक्सेल द्वारा किसी प्रकार की बनावट 2048+ हो। यह आपको इसे बनावट 2048x2048 (Android बनावट के लिए आकार सीमा) में फिट करने की अनुमति देगा। बॉक्स से बाहर, इसमें एक्स 1 एक्स 2 एक्स 4 मल्टी एटलस के लिए समर्थन है। उदाहरण के लिए, आपके पास एक चरित्र है; उनके पास बहुत सारे एनिमेशन हैं और वे, किसी भी तरह से, 2048x2048 की बनावट में फिट नहीं हैं, यह स्वचालित रूप से कई एटलस में विभाजित हो जाएगा, जो कोड से आपको एक संग्रह के रूप में दिखाई देगा। होना ही चाहिए।



UniWebView $ 15 प्लगइन जो आपको ब्राउज़र दिखाने और उससे सामान्य कॉलबैक प्राप्त करने की अनुमति देता है। वीके आपी से संवाद करने की आवश्यकता है

इसके अलावा कुछ मुफ्त प्लगइन्स:



एकता के लिए आधिकारिक Google Play गेम्स प्लगइन , उपलब्धियों, लीडरबोर्ड और, भविष्य में, उपकरणों के बीच प्रगति को सिंक्रनाइज़ करने के लिए एक प्रणाली।



पुशवोश फर-टंकण भेजने के लिए एक सेवा है, जिसमें यूनिटी 3 डी के लिए एक पैकेज है।



Google Play OBB डाउनलोडर प्लगइन जो आपको Google Play Store के लिए 50 मेगाबाइट से अधिक एप्लिकेशन बनाने की अनुमति देता है। स्रोत के साथ आता है, अन्य देशी प्लगइन्स के साथ संगतता के लिए आंशिक रूप से फिर से लिखा गया है।



पाथ-ओ-लॉजिकल गेम्स द्वारा पूलमैन एक अच्छा पुल मैनेजर है ताकि ऑब्जेक्ट बनाने के समय लैग से बचा जा सके।



ऑडियो टूलकिट - ध्वनि के साथ काम करने के लिए।







7. सांख्यिकी



रिलीज़ में मेरे द्वारा लिखे गए लगभग 400kb कोड हैं। एक अन्य 150kb एक जनरेटर और कुछ संबंधित स्क्रिप्ट है।

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

औसतन, सितारों के बिना एक स्तर को 25 चालों में पूरा किया जा सकता है। 55 के आसपास सितारों के साथ सबसे कठिन स्तर।



8. मुद्रीकरण और संवर्धन



अभी तक कोई सटीक संख्या नहीं है, लेकिन नायलॉन की तरह हमारे पास एक योजना है।

एक मूवी अनुमान लगाने के खेल के उदाहरण का उपयोग करते हुए, हमने महसूस किया कि विज्ञापन केवल तभी किया जा सकता है जब आपके पास 300k + उपयोगकर्ता हों। चूंकि परियोजना हमारे साथ है, जो कोई भी कह सकता है, एक आला, मुझे लगता है कि यह एक विकल्प नहीं है। लेकिन इसी समय, एंड्रॉइड के लिए भुगतान किया गया आवेदन आत्महत्या है। नतीजतन, वर्तमान मानक मॉडल चुना गया था: विज्ञापन प्रदर्शन और सिक्कों की बिक्री। सिक्कों की किसी भी खरीद के साथ पूरा सेट विज्ञापन आता है। सिक्के स्तरों के पारित होने के दौरान दिए गए हैं और उनके लिए आप स्तर के आदर्श मार्ग का पता लगा सकते हैं।



हमने समीक्षाओं के माध्यम से विज्ञापन देने का फैसला किया, क्योंकि प्रतिष्ठानों की खरीद बहुत महंगी है और आरओआई नकारात्मक होगा।



IOS संस्करण भी तैयार है, लेकिन अभी तक यह तय नहीं किया गया है कि इसे कैसे जारी किया जाए। यह कुछ प्रकाशक के साथ बातचीत करने के लिए समझ में आ सकता है।



9. एक छोटा सा इन-वीडियो वीडियो।







सच है, खेल में स्क्रीन का पोर्ट्रेट ओरिएंटेशन।



All Articles