क्या कोई गेम इंजन एक कार्यात्मक प्रोग्रामिंग भाषा का उपयोग कर रहा है? [बन्द है]


10

क्या स्कीम, कॉमन लिस्प, क्लोजर या जावास्क्रिप्ट के समान कार्यात्मक प्रोग्रामिंग भाषा का उपयोग करने वाला कोई गेम इंजन है?

मैंने यूनिटी 3 डी की कोशिश की है, लेकिन उनका "जावास्क्रिप्ट" वास्तव में जावास्क्रिप्ट नहीं है, दृढ़ता से टाइप किया गया है और कार्यात्मक नहीं है।


2
मैं थ्रीजेएस का उपयोग कर रहा हूं, लेकिन, जब यह अजीबता से भरा है, तो यह एक सक्रिय समुदाय की कमी है और प्रलेखन एक गंभीर समस्या है।
MaiaVictor

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

2
Unity3D की जावास्क्रिप्ट नियमित रूप से जावास्क्रिप्ट के रूप में कार्यात्मक है, आपको बस C # 4.0 प्रकार, कुछ इस तरह का उपयोग करने की आवश्यकता है:var add : Func<int, int, int> = ...
fableal

2
"किस तकनीक का उपयोग करें" प्रश्नों के बारे में अक्सर पूछे जाने वाले प्रश्न देखें । यह प्रश्न, जैसा कि उत्तर दिखाता है, केवल एक सूची उत्पन्न कर रहा है। यह रचनात्मक नहीं है क्योंकि कोई एकल सही उत्तर नहीं है ("हाँ वहाँ है" के अलावा)। यह सूची संकलन करने का स्थान नहीं है।
MichaelHouse

2
यह "सही नौकरी के लिए सही उपकरण" समस्या की तरह है। कार्यात्मक प्रोग्रामिंग दृढ़ता से कम से कम, और जहां भी संभव हो, उत्परिवर्तनीय स्थिति को समाप्त करने पर केंद्रित है। यह अनुप्रयोगों के कुछ वर्गों के लिए अच्छी तरह से काम कर सकता है, लेकिन यह किसी भी गेम के काम के बारे में पूरी तरह से विरोधी है।
मेसन व्हीलर

जवाबों:


7

नहीं है LambdaCube जो हास्केल में लिखा है (यह वास्तव में नहीं खेल इंजन, लेकिन अधिक ग्राफिक्स इंजन की तरह है)।


2
यह भी आप के लिए ब्याज की हो सकती है (महाकाव्य से टिम स्वीनी की सामान्य
हास्य

दिलचस्प लिंक, यहाँ
bobobobo

2

आप हमेशा f # या लोहे के पायथन का उपयोग कर सकते हैं (हाँ मुझे पता है, अजगर कार्यात्मक नहीं है) या किसी अन्य .netified भाषा के साथ .net मंच पर XNA।

http://fsharpgamedev.codeplex.com/ http://www.ironpython.info/index.php/XNA_Example_with_a_Bouncing_Sprite

संपादित करें: एक और इंजन, जो लिस्प में लिखा गया है: http://code.google.com/p/blackthorn-engine/


2

मेरे पास लिखित रूप में प्रश्न का उत्तर नहीं है, लेकिन मेरा मानना ​​है कि आप संभवतः "एक विशिष्ट गेम इंजन क्यों नहीं हैं" का उपयोग करने के लिए एक विशिष्ट की तलाश करने के बजाय यह पूछने की कोशिश कर रहे हैं। यदि यह सही है, तो आपको प्रश्न को फिर से लिखना चाहिए। अगर नहीं ... मेरी उपेक्षा करें। :)

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

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

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

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


1
देखें: स्वच्छ खेल पुस्तकालय (स्वच्छ) और निकी और रोबोट (हास्केल)।
एंड्रेस एफ।

1
यह उत्तर अधिकतर गलत है और वास्तविक कार्यात्मक भाषाओं की बहुत खराब समझ पर आधारित है।
सीए मैककैन

1
क्या आपके पास कोई वास्तविक काउंटर पॉइंट है?
शॉन मिडिलिचच

4
... आपके पास कार्यात्मक भाषाओं में उद्योग-गुणवत्ता के खेल शिपिंग का कितना अनुभव है? यदि आपके पास अनुभव है, तो इसे साझा करें। स्पष्टीकरण और औचित्य के साथ बयान दें, विशेषज्ञता या प्राधिकरण या व्यक्तिगत आरोपों के लिए अपील नहीं। इस तरह की अशिष्ट बहस और व्यक्तिगत मनमुटाव की संभावना बिल्कुल इस सवाल को बंद कर दिया गया था।
शॉन मिडिल्डिच

4
तुम मेरे मुंह में शब्द डाल रहे हो। मैं अपने अनुभव के स्तर को नहीं बता रहा हूं क्योंकि मेरी विशेषज्ञता के बारे में आपकी राय विषय के लिए पूरी तरह अप्रासंगिक है। दावा न करें कि आपके पास व्यक्तिगत कौशल स्तरों पर हमला करने का समय होने पर तथ्यों को बताने का कोई समय नहीं है। आपके पास शायद वास्तविक सुधार हैं, लेकिन आपको उन्हें बताना होगा। "वह आदमी गलत है," किसी के लिए मूल्यवान उत्तर प्रतिक्रिया नहीं है। मैं सिर्फ यह दावा कर सकता हूं कि आप गलत हैं, और फिर हमारे पास एक अंतहीन और व्यर्थ चक्र है। कृपया कहें कि एक उत्तर गलत क्यों है।
शॉन मिडिलडविच

0

नौगट्टी डॉग कंपनी ने अपने गेम इंजन पर लिस्ट का इस्तेमाल किया और इसे गेम ओरिएंटेड असेंबली लिस्प कहा गया।

कुछ जानकारी यहाँ मिल सकती है: http://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp

कुछ कोड नमूने: http://web.archive.org/web/20070127022728/http://lists.midnightryder.com/pipermail/sweng-gamedev-midnightryder.com/2005-Austust/003804.html

यह सार्वजनिक उपयोग के लिए उपलब्ध नहीं है।


यदि आप विकिपीडिया के विवरण को देखते हैं, तो यह जल्दी से स्पष्ट हो जाता है कि GOAL शायद ही एक कार्यात्मक भाषा थी, LISP वंशावली के बावजूद।
मेसन व्हीलर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.