खेल विकास के मूल सिद्धांत क्या हैं? [बन्द है]


12

मुझे पूरी तरह से समझ नहीं आया कि वीडियो गेम को कैसे कोड किया जा सकता है।

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

जवाबों:


14

यह मानते हुए कि आप प्रोग्रामिंग में एक पूर्ण शुरुआत हैं, और कुछ उदाहरणों के आधार पर मेरे उदाहरण को जानने के लिए, एक सांत्वना एप्लिकेशन लिखते समय, जिसमें एक मेनू है जहाँ आप उपयोगकर्ता को उपलब्ध विकल्प में से चुनना चाहते हैं, आप पहले क्या करेंगे?

यदि आपने अपना मेनू बनाने के बारे में सोचा, तो आपको एक बिंदु मिल गया, लेकिन क्या होगा अगर उपयोगकर्ता ने एक कुंजी दबाया जो उपलब्ध विकल्प का हिस्सा नहीं है,

  1. क्या आपका आवेदन बाहर निकलेगा, या
  2. जब तक उपयोगकर्ता "बाहर निकलें" कुंजी दबाता है तब तक यह जारी रहेगा?

मेरी शर्त # 2 होगी, यह एप्लिकेशन तब तक जारी रहेगा जब तक उपयोगकर्ता कंसोल एप्लिकेशन से बाहर निकलने के लिए कुंजी को स्पष्ट रूप से दबाए नहीं।

एक खेल किसी तरह है! जब आप चाहते हैं कि खेल से बाहर निकलें? जब उपयोगकर्ता चुनता है, है ना? इसलिए, उपयोगकर्ता को बाहर निकलने की इच्छा होने तक कार्रवाई या गेम मेनू को चलना होगा। फिर, आपको एक लूप बनाना होगा जो प्रोग्राम को जारी रखने के लिए कहता है जब तक कि बाहर निकलने के लिए यह बहुत महत्वपूर्ण दबाया गया हो।

आपको बस गेम लूप से परिचित कराया गया है। एक खेल सिर्फ एक और कार्यक्रम है जो उपयोगकर्ता द्वारा स्पष्ट रूप से बाहर निकलने तक चलता है।

गेम लूप में रहते हुए, जब आप गेम खेल रहे होते हैं, तो चालें विशिष्ट निर्देशांक पर स्क्रीन पर खींची गई छवियां होती हैं। जब उपयोगकर्ता / खिलाड़ी एक दिशात्मक कुंजी दबाता है जैसे कि[Left] , तब आप अपनी छवि को उसके एक्स निर्देशांक को घटाते हुए उसके निर्देशांक को ताज़ा करते हैं ताकि आप बाईं दिशा की ओर गति के लिए आभास दें। आपको यह जानकारी प्राप्त करने के लिए कि खिलाड़ी को उसके चरित्र / जहाज को आगे क्या करना है, यह प्राप्त करने के लिए मिला। तब, गेम लूप तब तक लूप जारी रखता है जब तक कि आप खिलाड़ी से एक और वांछित कार्रवाई प्राप्त नहीं कर सकते, जब तक कि खेल से बाहर नहीं निकल जाता है।

खैर, मुझे डर है कि यह उत्तर काफी लंबा होना शुरू हो जाता है, इसलिए मुझे आपको दो अन्य प्रश्नों की ओर संकेत करने की अनुमति दें जो आपके लिए रुचि के हो सकते हैं, मुझे उम्मीद है।

  1. खेल, कोई ट्यूटोरियल या लाइक लिखना कहां से शुरू करें?
  2. वर्गों का उपयोग करके XNA में मेरे स्प्राइट को स्थानांतरित करना

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

आशा है कि ये आपकी मदद करेगा! =)


4

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

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

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

उसके साथ कुछ अनुभव प्राप्त करने के बाद, एक ग्राफिक्स लाइब्रेरी की मूल बातों पर जाएं। यदि आप प्रक्रियात्मक प्रोग्रामिंग कर रहे हैं, तो मैं OpenGL की सिफारिश करूंगा, जबकि यदि आप ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग कर रहे हैं, तो मैं XNA की सिफारिश करूंगा।

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

आगे एक लंबा रास्ता है, लेकिन याद रखें कि मज़ा वास्तव में इसके माध्यम से चल रहा है।

अच्छा काम करते रहें!


4

कंप्यूटर गेम एक अंतहीन लूप है:

  • अपडेट: खेल को एक छोटे समय के स्लाइस के रूप में आगे बढ़ाएं (जैसे 1/80 सेकंड)।
  • वर्तमान खेल स्थिति पेंट करें।

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

अद्यतन चरण जो प्रत्येक सेकंड में 50 और 100 बार होता है (हाँ ऐसा अक्सर होता है)

  • खेल भौतिकी अद्यतन करें। कहते हैं कि एक अभिनेता का एक वेग होता है। अद्यतन उसे सही दिशा में एक छोटे से कदम चाहिए। इसके अलावा, यदि आप एक भौतिकी इंजन का उपयोग करते हैं, तो इसे अन्य एक्टोस या बाधाओं के साथ टकराव की जांच करनी चाहिए।
  • गेम के नियमों को अपडेट करें। यह वही है जो इसे एक खेल बनाता है न कि एक भौतिकी प्रयोग। बतादें कि एक गोली खिलाड़ी अभिनेता को लगी। खेल के नियम खिलाड़ी को स्वास्थ्य के X अंक और अनिष्ट करने के लिए गोली से कटौती करने के लिए कहते हैं।
  • ऐ अपडेट। कभी-कभी कंप्यूटर नियंत्रित अभिनेताओं को यह बताना चाहिए कि क्या करना चाहिए। बाएं या दाएं जाएं? एक अच्छी जगह होने के लिए एक रास्ता खोजें। एक हथियार आग।
  • इनपुट नियंत्रण कीबोर्ड पर दबाए गए बटन के अनुसार खिलाड़ी अभिनेता को अपडेट करें।
  • अद्यतन दृश्य ग्राफ। यह एक एनीमेशन को एक कदम आगे बढ़ा सकता है, या यह दिखाने के लिए GUI को अपडेट कर सकता है कि खिलाड़ी के पास अब 10 अंक कम स्वास्थ्य है। यह केवल उद्देश्य है कि खेल को देखो और अच्छा महसूस करो।

कहां से शुरू करें?

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

मुझे लगता है कि आप कुछ प्रकार की कक्षाएं बना सकते हैं। बॉल क्लास बनाओ। इसके सदस्य निम्नलिखित हैं: x, y, deltaX, deltaY। सभी पूर्णांक और पिक्सेल स्केल में हैं। अब, इस लूप को लिखें।

forever, do this {
  start measure time (in milliseconds)
  //physics part
  add deltaX to x
  add deltaY to y
  if x is bigger than the screen width, assign -deltaX to deltaX
  if y is bigger than the screen height, assign -deltaY to deltaY
  if x is less than 0, assign -deltaX to deltaX
  if y is less than 0, assign -deltaY to deltaY

  //paint
  paint the ball at x, y
  stop measuring time, assign this to workTime
  make the thread sleep for (25 - workTime) milliseconds
}

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

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

(25 - वर्कटाइम) मिलीसेकंड के लिए क्यों सोते हैं ? यदि आप इसे इस तरह करते हैं, तो सिमुलेशन प्रति सेकंड 40 अपडेट और पेंट की गति से चलेगा। यह काफी चिकना होगा। यदि आप नींद वाले हिस्से को छोड़ देंगे, तो एनीमेशन झटकेदार होगा, और 100% सीपीयू लेगा। इसके अलावा, गेंद की गति इसे चलाने वाली मशीन की गति पर निर्भर करेगी। अब, गेंद ऊर्ध्वाधर गति 40 * डेल्टा पिक्सेल प्रति सेकंड है।


2

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

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

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

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

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


योग्य, "बहुत तेजी से सीमित डेटा-सेट डेटाबेस के रूप में वीडियो गेम" शायद भ्रम में जोड़ रहा है।
michael.bartnett

1

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

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

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