क्या मैं अपने लाभ के लिए फीचर रेंगना का उपयोग कर सकता हूं? [बन्द है]


16

क्या मैं अपने लाभ के लिए फीचर रेंगना का उपयोग कर सकता हूं ?

जब भी मैं किसी गेम को प्रोटोटाइप करता हूं, तो अनजाने में फीचर्स जुड़ जाते हैं। यह या तो संयोग से होता है, या मौजूदा सामग्री के आधार पर जोड़ना आसान होता है।

अगर मुझे खेल की शैली का पता है, तो क्या मैं सिर्फ मूल यांत्रिकी बनाना शुरू कर सकता हूं और वे स्पष्ट होने के साथ ही विशेषताएं जोड़ सकते हैं?

उदाहरण के लिए, यदि मैं 6 महीने के दौरान 2d प्लेटफ़ॉर्मर बनाना चाहता हूं, तो क्या मैं बस रनिंग, जंपिंग, शूटिंग आदि करना शुरू कर सकता हूं और कोर मैकेनिक्स को जोड़ सकता हूं क्योंकि मैं अनजाने में उन्हें ढूंढता हूं? या यह एक पूर्व निर्धारित योजना के बिना एक समय के निवेश का जोखिम भरा है?

इसके पीछे मेरा तर्क यह है कि हिरन के लिए डिजाइन अधिक धमाकेदार होगा। डिज़ाइन के विकल्प अधिक आसानी से बनाए जाएंगे जो कि बनाने में आसान है (समय-वार)।

सारांश में, क्या मुझे गेम डिजाइन करने से पहले गेम बनाने में कुछ गड़बड़ है?


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

3
पहली जगह में एक प्रोटोटाइप मत बनाओ। प्रोटोटाइप आम तौर पर फेंक दिए जाते हैं क्योंकि वे "बस कुछ परीक्षण करने के लिए" बनाये जाते हैं - कचरा। इसलिए अपनी चीज़ को ठोस बनाइए, और इसे लचीला बनाइए।
Vaillancourt

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

जवाबों:


17

यह एक रूचिकर प्रश्न है। मुख्य रूप से इसका उत्तर देने के कारण शेड्स-ऑफ-ग्रे बनाम ब्लैक-बनाम-व्हाइट दुविधा बढ़ जाती है।

इससे पहले कि मैं इसे डिजाइन करता हूं, गेम बनाने में कुछ गलत है?

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

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

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

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

मेरा यह कहने का मतलब यह नहीं है कि आपको वह नहीं करना चाहिए जो आपने कहा है। मैं सिर्फ यह दावा कर रहा हूं कि आपको कुछ संतुलन तलाशना होगा।

उदाहरण के लिए, यदि मैं 6 महीने के दौरान 2d प्लेटफ़ॉर्मर बनाना चाहता हूं, तो क्या मैं बस रनिंग, जंपिंग, शूटिंग आदि करना शुरू कर सकता हूं और कोर मैकेनिक्स को जोड़ सकता हूं क्योंकि मैं अनजाने में उन्हें ढूंढता हूं? या यह एक पूर्व निर्धारित योजना के बिना एक समय के निवेश का जोखिम भरा है?

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

ऐसा नहीं है क्योंकि आप जानते हैं कि गेम एक 2D प्लेटफॉर्म होगा, जो गेम डिज़ाइन के आधार पर रनिंग, जंपिंग या शूटिंग भिन्न नहीं हो सकता है। क्या आपका खिलाड़ी दीवारों पर दौड़ सकता है? क्या आपका खिलाड़ी कूदते समय हवा में तैर सकता है? यहां तक ​​कि, क्या आपका खिलाड़ी दौड़ते समय शूटिंग कर सकता है? क्या आपका खिलाड़ी केवल एक रेखीय दिशा में या परवलय के माध्यम से गोली मारता है? ये निर्णय बहुत अधिक खेल-सुविधा पर निर्भर हो सकते हैं।

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

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


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


4

गेम्स जैसे जटिल प्रोजेक्ट करते समय, आप अक्सर वे सभी सुविधाएँ नहीं कर सकते हैं जो आप चाहते हैं, क्योंकि आप समय / धन से बाहर चल रहे हैं या क्योंकि वे आपकी अपेक्षा के अनुरूप नहीं बने हैं। इसे फीचर रेंगना कहा जाता है। लेकिन इसका एक दूसरा पहलू भी है; आपको ऐसी सुविधाएँ भी मिलेंगी जिनके बारे में आपको नहीं लगता था कि आपको ज़रूरत है, लेकिन जैसे-जैसे यह परियोजना आकार लेती है उनकी ज़रूरत स्पष्ट होती जाती है।

यही कारण है कि लोग प्रोटोटाइप का निर्माण करते हैं - इसलिए वे सीख सकते हैं कि क्या काम करता है और क्या नहीं, इसलिए वे उन विशेषताओं में कटौती कर सकते हैं जो काम नहीं करते हैं , लेकिन इसलिए भी वे नई सुविधाओं को पा सकते हैं जो भयानक होंगे । यदि आप उन चीजों को नहीं कर रहे हैं जो आप नहीं सीख रहे हैं, तो आप इसे गलत कर रहे हैं।

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

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

बेशक, इसका मतलब यह नहीं है कि आपको अपना गेम बिना किसी पूर्व डिज़ाइन के बनाना चाहिए । आपको यह सुनिश्चित करना चाहिए कि आगे बढ़ने से पहले आपके खेल का मूल मज़ा है, क्योंकि यह अक्सर खेल बनाने का सबसे कठिन हिस्सा है।


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

2

मैं कहूँगा हाँ, इसके लिए जाओ। लेकिन प्रत्येक नए घटक के बीच कुछ सामंजस्य रखने के लिए समय से पहले कुछ सामान्य सुविधाओं / कक्षाओं की योजना बनाएं।

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

यूनिटी गेम ऑब्जेक्ट में सभी का ट्रांसफॉर्म घटक होता है। यह ऑब्जेक्ट की स्थिति, रोटेशन और पैमाने बताता है। इसलिए इन मूल्यों को धारण करने के लिए एक सामान्य 'ट्रांसफॉर्म' क्लास बनाएं, साथ ही वास्तविक गेम ऑब्जेक्ट का संदर्भ भी हो सकता है।

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

अब आप घटकों के एक टन बनाने का मज़ा ले सकते हैं, फिर उन्हें गेम ऑब्जेक्ट्स में संलग्न कर सकते हैं, उन्हें एक ऑब्जेक्ट पर जोड़ सकते हैं, उदाहरण के लिए: रन, जंप, क्राउच, मूविंगटाइल, फायर वेपन (निर्दिष्ट 'बुलेट' स्प्राइट, और बनाने के लिए व्यवहार एक सामान्य घटक), आदि।

एकाधिक उपयोगों / विविधताओं की अनुमति देने के लिए प्रत्येक घटक को यथासंभव सामान्य बनाएं। FireWeapon के लिए, आप बुलेट स्प्राइट, गति, क्षति, आदि को निर्दिष्ट कर सकते हैं। आप उन विशेषताओं को सामान्यीकृत करने का प्रयास कर सकते हैं, ताकि 0 और 1. के बीच गति और क्षति निर्दिष्ट हो। फिर गेम के अधिकतम मानों को मापें। इस तरह आप केवल हथियारों के बीच सापेक्ष अंतर के बारे में चिंता करते हैं। इसके अलावा यह वैश्विक सेटिंग्स जैसे कि कठिनाई जहां एक उच्च कठिनाई एक उच्च अधिकतम क्षति है, आदि के लिए adapts।

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


1

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

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


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

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

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

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

मुझे नहीं लगता कि हम जो खेल खेलते हैं उनमें से अधिकांश कोडिंग से पहले पूरी तरह से डिजाइन किए गए थे, मुझे यकीन है कि उन्हें समयसीमा का पालन करने के लिए कठिन निर्णय लेने थे।

जब कोई और इसके लिए भुगतान कर रहा है: समझाना, बातचीत करना।

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