क्रॉस-प्लेटफॉर्म स्वतंत्र विकास


34

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

आज, इंडी डेवलपर्स को Xbox 360 (और आगामी विंडोज फोन) पर प्राप्त करने के लिए XNA का उपयोग करना चाहिए; कहीं और काम करने के लिए XNA का उपयोग नहीं करना चाहिए लेकिन विंडोज; जब तक हाल ही में एंड्रॉइड पर जावा का उपयोग करना पड़ा; फ्लैश फोन पर नहीं चलता है, HTML5 IE पर काम नहीं करता है। डायरेक्ट एक्सएक्सएक्स बनाम ओपनजीएल या विंडोज बनाम यूनिक्स के विपरीत, ये मूल भाषा में परिवर्तन हैं जो आप अपने कोड को लिखते हैं और मूल रूप से संकलक लिखते हुए बिना उस पर पैप नहीं किया जा सकता है। आप कुछ गेम लॉजिक को स्क्रिप्ट में स्थानांतरित कर सकते हैं और एक दुभाषिया को शामिल कर सकते हैं - जब आप नहीं कर सकते, सिवाय इसके कि आईफोन एसडीके इसे अनुमति नहीं देता है, और प्रदर्शन ग्रस्त है क्योंकि कोई भी जेआईटी की अनुमति नहीं देता है।

यदि आप वास्तव में क्रॉस-प्लेटफ़ॉर्म पोर्टेबल गेम, या यहां तक ​​कि इंजन और लॉजिक कोड का एक महत्वपूर्ण निकाय चाहते हैं तो आप क्या कर सकते हैं?

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

क्या यह भविष्य में अधिक स्पष्ट हो जाएगा? क्या विभाजन होने वाला है, कुछ हद तक, अभी भी नीचे विक्रेता की रेखाएं हैं? क्या हम सभी किसी भी क्रॉस-प्लेटफॉर्म को प्राप्त करने के लिए फ्लैश या एकता जैसे उच्च-स्तरीय मिडलवेयर पर भरोसा करेंगे?

tl; dr - क्या कोई समस्या पोर्ट कर रही है, क्या यह भविष्य में एक बड़ी समस्या होने वाली है, और यदि ऐसा है तो हम इसे कैसे हल करेंगे?


2
IPhone डेवलपर प्रोग्राम लाइसेंस समझौते की धारा 3.3.2 अब गेम स्क्रिप्टिंग के लिए अनुमति देता है, हालांकि यह अभी भी थोड़ा जटिल है। - "ऐप्पल की पूर्व लिखित सहमति के साथ, पूर्वगामी समझ में नहीं आता है, एक अनुप्रयोग एक सीमित तरीके से एम्बेडेड व्याख्या किए गए कोड का उपयोग कर सकता है यदि ऐसा उपयोग पूरी तरह से मामूली विशेषताओं या कार्यक्षमता प्रदान करने के लिए है जो एप्लिकेशन के इच्छित और विज्ञापित उद्देश्य के अनुरूप हैं।"
Bachus

3
Apple ने कल लाइसेंस समझौते को फिर से बदल दिया, और गेम स्क्रिप्टिंग अब पूरी तरह से ठीक है। - "व्याख्या किए गए कोड का उपयोग केवल एक एप्लिकेशन में किया जा सकता है यदि सभी स्क्रिप्ट, कोड और दुभाषियों को एप्लिकेशन में पैक किया गया है और डाउनलोड नहीं किया गया है। पूर्वगामी के लिए एकमात्र अपवाद स्क्रिप्ट और कोड डाउनलोड किए गए हैं और ऐप्पल द्वारा निर्मित वेबकीट फ्रेमवर्क में डाउनलोड और चलाए जाते हैं।"
बाचस

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

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

मेरा मतलब है, आपने HTML5 का उल्लेख किया है ... यह वेब गेम के लिए इरादा है, है ना?
क्रिस ऐश

जवाबों:


14

एकता इंजन आपको वहां के रास्ते का एक बड़ा हिस्सा मिलता है। एक बार लिखें और आपको मैक / विंडोज स्टैंडअलोन और वेबप्लेयर आधारित मिल गया है। अपने इनपुट को ट्विक करें, और अपने ड्रॉ कॉल्स को ध्यान में रखें और आप iOS / Android पर हैं।


12

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

लेकिन आप शायद यह सुनिश्चित करना चाहते हैं कि आपको एक महान गेम मिला है जो एक मंच पर वास्तव में अच्छी तरह से काम करता है, जितना संभव हो उतने प्लेटफार्मों पर इसे प्राप्त करने के बारे में बहुत अधिक चिंता करने से पहले! यदि खेल एक फ्लॉप है, तो समय और प्रयास बर्बाद करने का कोई मतलब नहीं है, यह एक मल्टी-प्लेटफॉर्म फ्लॉप है?

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

यदि आपकी परियोजना के लिए तृतीय-पक्ष क्रॉस-प्लेटफ़ॉर्म टेक / उपकरण (जैसे एकता) एक विकल्प है, तो यह निश्चित रूप से विचार करने योग्य है।

Indies के लिए मुख्य 'समस्या प्लेटफ़ॉर्म' Xbox360 Indie Games (C # केवल, सीमित नेटवर्क एक्सेस आदि) और संभवतः Android (डिवाइस प्रदर्शन / स्क्रीन आकार / इनपुट डिवाइस में बड़े पैमाने पर अंतर) प्रतीत होगा। यदि आप इनका समर्थन करने के लिए दृढ़ हैं, तो अधिक बड़े पोर्टिंग कार्य की अपेक्षा करें, या विशेष रूप से उन पर ध्यान केंद्रित करने की योजना बनाएं।


हाँ, Unity3D चट्टानों। www.unity3D.com
BerggreenDK

मैं @bluescrn से सहमत हूं - लगभग सब कुछ जानने के लिए बेहतर है, लगभग हर चीज के बारे में कुछ भी नहीं जानने के बजाय: सभी लक्षणों का जैक, कोई भी नहीं।
रॉडरिगो-सिल्वेरा

3

आप क्रॉस-प्लेटफॉर्म स्वतंत्र विकास कहते हैं । सबसे बड़ी बाधा संसाधन है, और इसका मतलब है कि ज्यादातर समय की कमी है, लेकिन यह भी पता है कि कैसे और संभवतः वित्त (लाइसेंस फीस, उपकरणों की खरीद, आदि) की कमी है।

इंडी या नहीं, सबसे बड़ी बाधा वास्तव में डिजाइन है। जैसा कि आप कहते हैं, Xbox360 और iPad पर चलने वाला गेम काम कर सकता है, लेकिन उन्हें डिज़ाइन के मामले में मौलिक रूप से अलग होना भी आवश्यक है। 360 में एक नियंत्रक, iPad एक टच स्क्रीन है। इसके अलावा, 360 के लिए विकास विंडोज में C # भाषा के रूप में किया जाता है, iPad को केवल Mac OS कंप्यूटरों पर लक्षित किया जा सकता है और C, C ++ या Objective-C का उपयोग किया जा सकता है। या जावास्क्रिप्ट, यदि आप पसंद करते हैं। कुछ चीजें अभी भी अच्छी तरह से मिश्रण नहीं करती हैं जो भी आप करते हैं।

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

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


वास्तव में, मैं कहूंगा कि पोर्ट के लिए समय एक स्वतंत्र डेवलपर / समूह के लिए एक बड़ी प्रकाशक-संचालित स्टूडियो की तुलना में अधिक होने की संभावना है।

बहुत सारे गेम डिज़ाइन हैं जो सभी प्लेटफार्मों पर समझ में आते हैं - उदाहरण के लिए टर्न-आधारित वर्चुअल बोर्ड गेम, सभी प्लेटफार्मों पर लगातार हिट हैं। तो कई गिरने / मिलान ब्लॉक पहेली खेल हैं। इन्हें अब पारंपरिक अर्थों में "पोर्टेड" भी नहीं किया जा सकता है - उदाहरण के लिए XBLIG से iPhone तक एक गेम को स्थानांतरित करना सभी कोड का एक गारंटीकृत पुनर्लेखन है।

3

मुझे लगता है कि वास्तव में एक सरल, पोर्टेबल और खुले इंटरफ़ेस ढांचे की आवश्यकता है। कुछ पेशियाँ:

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

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

फिर मंच और खेल कोड के बीच IO की मध्यस्थता के लिए फ्रेमवर्क जिम्मेदार है, क्यूटी और जीटीके फ़ंक्शन जैसे क्रॉस-प्लेटफ़ॉर्म जीयूआई फ्रेमवर्क के समान।

इस तरह की रूपरेखा होने से असंगत भाषा आवश्यकताओं की समस्या का समाधान नहीं होता है, लेकिन कम से कम एक आम एपीआई के पीछे सभी सिस्टम-विशिष्ट कॉल को एन्क्रिप्ट करना होगा, जिससे भाषा को अधिक सरल बनाना चाहिए।

खैर, अब जब मैंने वह सब लिख दिया है: क्या किसी को पता है कि जैसे एक ढांचा पहले से मौजूद है?


3

मोनोआच और XNATouch जैसी परियोजनाओं के साथ ऐसा लग रहा था कि XNA आपको थोड़े से बदलाव के साथ अधिकांश प्लेटफार्मों पर मिल सकता है। दुर्भाग्य से Apple ने इस तरह की टारपीडो लगाई कि जब उन्होंने अपने नियम और शर्तों को बदल दिया, तो यह प्रतिबंधित करने के लिए कि आप किन भाषाओं का उपयोग कर सकते हैं। एकता अब सब कुछ बहुत ज्यादा हो गया है, हालांकि XBOX पर यह आपको XBLA पर मिलेगा, लेकिन XBLIG नहीं, इसलिए छोटे इंडीज़ का विकल्प नहीं।

एक दृष्टिकोण एक फ्रेमवर्क बनाने के लिए हो सकता है जो कई भाषाओं / प्लेटफार्मों पर समान सम्मेलनों का उपयोग करता है, फिर यह पोर्ट गेम के लिए सिंटेक्स को ट्विक करने की बात है। आप अपने गेम को फ़्लैश में लॉन्च करना चाहते हैं, जिसे जल्दी से विकसित किया जा सकता है और एक बड़े दर्शक वर्ग तक पहुंच सकता है, फिर अगर यह iPhone, XNA आदि का सफल पोर्ट है, तो इस तरह से आपको पता है कि आपके पास ओवर-कमिट करने से पहले एक मजेदार गेम है।


बेवकूफ सेब, जो प्रोग्रामिंग भाषाओं को प्रतिबंधित करते हैं! कौन?!?!
फ्रेशजेस

2

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

मुझे संदेह है कि जब सामाजिक-नेटवर्क गेमप्ले परिपक्व होता है तो यह बदल जाएगा, क्योंकि अभी तक एक ही सामाजिक-गेमिंग प्रणाली में सभी को प्राप्त करने में एक और अधिक पैसा है, फिर भी एक और एफपीएस-के साथ-सेक्सी-ग्राफिक्स।


2

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


1

एक क्रॉस-प्लेटफ़ॉर्म डेवलपमेंट टूल जो इतना नया है कि मैं जरूरी नहीं कि यह सिफारिश कर रहा है http://www.monkeycoder.co.nz/

यह आपके द्वारा उल्लेखित प्रत्येक प्लेटफॉर्म को हिट करता है।

हालांकि यह वास्तव में न्याय करने के लिए बहुत नया है, इसमें एक महान वंशावली है: यह पहले से ही ब्लिट्ज़ 3 डी और ब्लिट्ज़मैक्स बनाने वाला है, जो इंडी गेम डेवलपर्स के लिए महान विकास उपकरण थे।


0

मेरे पास एयरप्ले एसडीके के साथ किस्मत है - कम से कम x86 पर और जाहिरा तौर पर iPhone को अच्छी तरह से लक्षित करता है (हालांकि अभी भी मुझे अभी तक एक iPhone पर ऐप डालना है)।

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