2010-11-15 13 views
12

साइथन को गेम के लिए प्राथमिक प्रोग्रामिंग भाषा के रूप में उपयोग करना कितना व्यावहारिक होगा?गेम विकास के लिए साइथन का उपयोग करना?

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

की गति के साथ एक पायथन जैसी भाषा का उपयोग कर सकता हूं, मुझे समझ में आता है कि मुझे शायद थोड़ा सी/सी ++ सीखना होगा, लेकिन ऐसा लगता है कि साइथन विकास के समय को तेज करेगा तुलना में थोड़ा सा।

तो, क्या यह व्यावहारिक है? और क्या मैं अभी भी ओपनजीएल, ओपनएएल और बुलेट फिजिक्स जैसे सी/सी ++ पुस्तकालयों का उपयोग करने में सक्षम हूं?

+0

http://docs.cython.org/src/userguide/external_C_code.html –

+0

यह इस बात पर निर्भर करता है कि आपका गेम टिक-टैक-टो या पहला व्यक्ति शूटर है ... ;-) –

उत्तर

15

यदि आप इस तरह के संयोजन के साथ काम कर रहे हैं और आपका लक्ष्य 3 डी गेम लिखना है, तो संभवतः आप परिपक्व भौतिकी और ऑडियो बाइंडिंग और पायथन एपीआई जैसे तैयार किए गए 3 डी इंजन से बेहतर लाभ प्राप्त करेंगे। OGRE 3D (Python-OGRE) या Panda3D। यहां तक ​​कि यदि आप नहीं करते हैं, तो यह पोस्ट using Cython with Panda3D सहायक हो सकता है।

मैं अब बारे में निश्चित नहीं हूँ, लेकिन back in 2007, व्यापार बंद इन दोनों के बीच है कि मूल रूप से किया गया था:

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

... लेकिन यह संभव है कि परिवर्तित हो सकती है यह देखते हुए कि, एक तरफ समय बीतने के, 2007 में, Panda3D अभी भी एक जीपीएल असंगत लाइसेंस के तहत था और कहा कि बहुत से लोगों को बंद कर दिया,। (स्वयं शामिल)

+0

+1 इस सवाल के संभावित रूप से उपयोगी उत्तर देने के लिए प्रबंधन। मैंने सोचा कि यह निराशाजनक था। –

+3

एक नोट के रूप में, पायथन-ओग्रे अब काफी मर चुका है, खासकर जब वेबसाइट पूरी तरह से चली गई है :-( –

5

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

PyGame के बारे में कैसे?

-1

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

यदि आप पाइथन/साइथन की तुलना में एक बड़ा गेम नहीं लिख रहे हैं तो ठीक है। लेकिन साइथन अच्छी धागे के समर्थन के बिना आधुनिक भाषा के रूप में अच्छा नहीं है।

+1

यदि आपका कोड पायथन ऑब्जेक्ट्स को स्पर्श नहीं करता है, तो आप जीआईएल को नोगिल ब्लॉक में छोड़ सकते हैं। कार्यों को भी एनोट के रूप में एनोटेट किया जा सकता है "नोगिल"। इन दिनों, साइथन के मूल सरणी हैं, इसलिए आप पाइथन वस्तुओं को छूए बिना काफी कुछ कर सकते हैं। – Winterstream

6

इस तिथि (12 अप्रैल 2011) unixmab83 गलत है।

साइथन थ्रेड के उपयोग को मना नहीं करता है, आपको केवल no_gil विशेष विवरणों का उपयोग करने की आवश्यकता है।

सी ++ के बाइंडिन्स के अलावा अब साइथन में कार्यात्मक है।

हम इसे gamedev के करीब किसी चीज़ के लिए उपयोग करते हैं। इसलिए जब मैं इस पर अंतिम नहीं हो सकता, साइथन एक वैध उम्मीदवार है।

7

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

0

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

एक खेल साइथन में गति लाभ के लिए सही विकल्प होगा लेकिन मैं इस प्रदर्शन को भी सीमित कर दूंगा।

संबंधित मुद्दे