गेम फ्रेमवर्क और गेम इंजन में क्या अंतर है?


23

एक गेम फ्रेमवर्क (उदाहरण के लिए, CNA के साथ XNA, C ++ के लिए SDL) और गेम इंजन में क्या अंतर है?

क्या खेल चौखटे इंजन का उपयोग करते हैं? क्या एक गेम इंजन भौतिकी इंजन, कण इंजन आदि जैसे उप-इंजनों को घेरता है? क्या उन्हें एक साथ इस्तेमाल किया जाना चाहिए, या क्या वे परस्पर अनन्य हैं?

मुझे लगता है कि यह 2 डी और 3 डी दोनों के लिए अलग-अलग इंजन हैं?


जवाबों:


21

"इंजन" या "रूपरेखा" के लिए वास्तव में सख्त परिभाषाएँ नहीं हैं।

आम तौर पर, एक इंजन को "अधिक करने" के लिए माना जाता है या एक फ्रेमवर्क की तुलना में अधिक उपकरण और संबंधित समर्थन होता है, जो कि अक्सर कुछ एकीकृत एपीआई के माध्यम से संबंधित कार्यक्षमता का केवल एक ढीला संग्रह होता है।

उस अंत तक, जो चीजें इंजन होने का दावा करती हैं, वे उन चीजों का उपयोग कर सकती हैं जो कार्यक्षमता प्राप्त करने के लिए चौखटे होने का दावा करती हैं, लेकिन ऐसा हमेशा होने की आवश्यकता नहीं है। इसी तरह, गेम इंजन होने का दावा करने वाली एक चीज यह दावा कर सकती है कि यह घटक भागों (भौतिकी और प्रतिपादन, वगैरह) को भौतिकी इंजन या भौतिकी ढांचे के साथ लागू किया गया है। दोनों शर्तों द्वारा निर्दिष्ट प्रौद्योगिकी के प्रकार का परस्पर उपयोग किया जा सकता है, या नहीं।

भौतिकी, ध्वनि, और हाँ, यहां तक ​​कि 2 डी या 3 डी ग्राफिक्स के बारे में कुछ के लिए "इंजन" या "फ्रेमवर्क" हो सकते हैं।

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


11

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

एक ठोस उदाहरण के लिए, आर्टेमिस घटक प्रणालियों के निर्माण के लिए एक छोटा सा ढांचा है, लेकिन आप इसे इंजन नहीं कहेंगे। आप इससे इंजन बनाने के लिए आर्टेमिस सिस्टम और मानक घटक बना सकते हैं।


1
मेरी कंपनी में किसी ने इंजन के ऊपर एक रूपरेखा तैयार की। यह फ्रेमवर्क उन अनुपलब्ध भागों के संग्रह के रूप में कार्य करता है जो इंजन प्रदान नहीं करता है, सामान को एकीकृत करता है जो अन्यथा हमारे (पुराने) इंजन में थोड़ा अस्वस्थ होते हैं। और देवों की सुविधा के लिए सहायक प्रदान करता है।
v.oddou

2

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

उदाहरण: एक इंजन आपको नक्शे पर एक स्थिति के साथ, प्रत्येक संस्थाओं की एक सूची रखने की अनुमति देता है। एक फ्रेमवर्क आपको एक निश्चित स्थिति पर 3 डी ऑब्जेक्ट को प्रस्तुत करने की अनुमति देता है।

इसलिए आप उन्हें अपनी प्रत्येक संस्था को एक 3 डी ऑब्जेक्ट देकर कनेक्ट करते हैं, और ज़रूरत पड़ने पर उन्हें सौंप देते हैं।

और ता-दा, आपके पास एक खेल है।


2

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

मुझे इस सवाल का जवाब देने की कोशिश करने दीजिए।

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

सॉफ्टवेयर के आर्किटेक्चर से अन्य शब्दों के साथ टर्म्स इंजन और फ्रेमवर्क आता है। तो चलो मूल शब्दों के साथ शुरू करें und को ऊपर की ओर बढ़ने देता है।


पुस्तकालय

विशिष्ट उदाहरण: गणितीय गणना (वेक्टर, मैट्रिक्स, ...) या छवि (jpeg या png) लाइब्रेरी के लिए सभी बुनियादी प्रकार और फ़ंक्शन प्रदान करने वाली एक गणित लाइब्रेरी jpeg या png छवियों को लिखने के लिए कार्यक्षमता प्रदान करती है।

यूनिटी 3 डी मैथ में मैथ्स लाइब्रेर है।

सिद्धांत: एक लाइब्रेर एक विषय (जैसे गणित) के आसपास समर्पित विशेषताएं प्रदान करता है और मांग पर प्रोग्रामर द्वारा बुलाया जाता है

कुछ पूर्वावलोकन: वहाँ हो सकता है पुस्तकालयों धारण ढांचा उर्फ ​​एक रूपरेखा पुस्तकालय जा रहा है।


ढांचा

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

विशिष्ट उदाहरण: एकता 3 डी मोनोबीहॉर अवेक, स्टार्ट, ऑनअपडेट जैसे तरीके प्रदान करता है। डेवलपर इन तरीकों को लागू करता है और फिर इन तरीकों को (गेम ऑब्जेक्ट मैनेजमेंट) फ्रेमवर्क द्वारा बुलाया जाता है (यह नियंत्रण का व्युत्क्रम है) । तरीकों OnCollisionEnter, OnCollisionExit के साथ भी ऐसा ही है। वे एक ही मोनोबेहवियर में हैं, लेकिन मैं शर्त लगाता हूं कि उन्हें भौतिकी के ढांचे द्वारा बुलाया जाएगा।


एक पूर्वावलोकन: इंजन, रनटाइम, संपादक, एसडीके

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

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

संपादक स्पष्ट है। यह आपको इंजन / रनटाइम द्वारा पूर्वनिर्धारित डेटा को परिभाषित करने देता है।

एक संपादक वाले इंजन को एसडीके (जैसे हैमर एसडीके) कहा जाता था।

तब समर्पित इंजन थे। एक phyiscs इंजन, रेंडरिंग इंजन, साउंड इंजन, गेमबजेक्ट मैनेजमेंट इंजन, नेटवर्क इंजन, ....

मेरी व्यक्तिगत राय में वे इंजन नहीं हैं (विशेष रूप से एक रेंडर इंजन आईएस गेम इंजन नहीं है क्योंकि यह केवल रेंडर करता है)। जब मैं Google गेम इंजन देता हूं तो परिणाम में 90% शुद्ध रेंडर इंजन होते हैं जो गेम इंजन नहीं हैं। मैं उन सभी को पुस्तकालयों को कॉल करूंगा लेकिन चूंकि वे पूर्वनिर्धारित डेटा लोड कर सकते हैं इसलिए वे डेटा-संचालित इंजन से मेल खाते हैं।

अंतिम संक्षिप्त पक्ष नोट करने से पहले हम विवरण में प्राप्त करते हैं: मैंने सफलतापूर्वक कंप्यूटर विज्ञान में स्नातकोत्तर डिग्री प्राप्त की है। मेरे मास्टर थीसिस ने "खेल इंजन के मूल को कैसे विकसित किया जाए" विषय को संभाला। कोड का वह भाग जो अन्य सभी इंजनों के साथ एक साथ जुड़ता है, गेम ऑब्जेक्ट मैनेजमेंट, गेम लूप इत्यादि करता है ...

मैंने अपनी मास्टर थीसिस को एक (लघु) पुस्तक के रूप में प्रकाशित किया। खरीदार / पाठक से अमेज़ॅन पर एकमात्र टिप्पणी (कुछ वर्षों के बाद): यह गेम इंजन के बारे में नहीं है। चूंकि मैंने सफलतापूर्वक स्नातक किया है और इसलिए 3 अनुभवी प्रोग्रामर (गेम और इंटरैक्टिव अनुप्रयोगों के लिए समर्पित उनमें से 2) के खिलाफ मेरी थीसिस का बचाव किया है। मुझे लगता है कि मैंने एक गेम इंजन लिखा है।


संपादक

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

यह यूनिटी 3 डी संपादक करता है।


क्रम

यह शब्द अक्सर इंजन के साथ समान रूप से उपयोग किया जाता है (जो सही या गलत हो सकता है)।

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

यूनिटी वेब प्लेयर / एक रनटाइम था, जिससे आप एक वेबब्रोसर के भीतर यूनिटी गेम खेलते हैं।

आप एक ही रनटाइम के साथ कई अलग-अलग गेम लोड और निष्पादित कर सकते हैं।

यूनिटी 3 डी स्क्रिप्टिंग एपीआई के मामले में कार्यक्षमता के बीच एक कटौती है जो खेल और कार्यक्षमता में काम करेगी जो केवल संपादक के भीतर काम करेगी।


एसडीके

इस शब्द को अक्सर रूपरेखा भी कहा जाता है

इसके बाद एक SDK प्रोग्रामर्स के लिए एडिटर, IDE (इंटीग्रेटेड डेवलपर इनवायरमेंट), डेटाफॉर्मेट्स के लिए एक्सपोर्टर्स और रनटाइम / इंजन जैसे टूल्स का बंडल रहा है।

तो एक एसडीके / फ्रेमवर्क आपको एक पूर्वनिर्धारित वर्कफ़्लो और उपयोगिताओं के साथ प्रदान करता है और आपको एक (अच्छी तरह से डिज़ाइन किया गया) तरीका दिखाता है कि आप कैसे (आसानी से) गेम बना सकते हैं।

मूल रूप से एकता 3 डी इंजन गलत होगा क्योंकि यह एसडीके दिशा में अधिक फिट होगा। लेकिन चूँकि एकता और भी अधिक नया शब्द / परिभाषा है, इसलिए इसे मिलान करने की आवश्यकता है।

वैसे भी, दूसरे कार्यकाल को शुरू करने के लिए, एक एसडीके / फ्रेमवर्क आपको एक पूर्वनिर्धारित खेल विकास पाइपलाइन प्रदान करता है (न केवल एक परिसंपत्ति पाइपलाइन, लेकिन शायद, यूनिटी की तरह, संपत्ति के लिए एक पाइपलाइन, तर्क, बिल्ड, तैनाती, ....)


इंजन

हर चीज के लिए उपयोग किए जाने वाले व्यंग्य, क्योंकि हर कोई न केवल एक पुस्तकालय, एक रूपरेखा या एक खेल लिखकर शांत होना चाहता है, बल्कि एक पूर्ण इंजन लिखना बेहतर है। कटाक्ष

आइए इसे ट्रिगर करें:

एक इंजन

  1. कोड / सॉफ्टवेयर का एक टुकड़ा है
  2. इसका उद्देश्य कई परियोजनाओं में पुन: उपयोग किया जाना है (आप केवल एक गेम के लिए एक गेम इंजन भी लिख सकते हैं)
  3. पुन: उपयोग होने के लिए खेल इंजन खेल विशिष्ट भाग से पुन: प्रयोज्य भाग को अलग करता है
  4. पुन: प्रयोज्य होने के लिए (यह पुन: उपयोग करने के लिए कैसे किया जाता है पर निर्भर करता है) डेटा चालित इंजन की तरह अलग - अलग स्वाद हैं बाहरी डेटा लोड करना

एक इंजन में कई अन्य इंजन शामिल हो सकते हैं (क्योंकि आजकल सब कुछ इंजन कहलाता है)। एक खेल इंजन शामिल कर सकते हैं

  • रेंडरिंग करने वाला एक रेंडर इंजन (AGAIN: God, damn, hell: कोड केवल रेंडरिंग कर रहा है गेम इंजन नहीं है)
  • एक भौतिकी इंजन भौतिकी कर रहा है (यह एक भौतिकी इंजन है, खेल इंजन नहीं है)
  • AI सामान को संभालने वाला AI इंजन (यह AI इंजन है और गेम इंजन नहीं)
  • एक नेटवर्क इंजन (जैसे RakNet) नेटवर्क सामान कर रहा है (यह एक नेटवर्क इंजन है, गेम इंजन नहीं)
  • एक ऑडियो इंजन ऑडियो सामान (यह एक ऑडियो इंजन है और गेम इंजन नहीं है)

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

यहाँ छवि विवरण दर्ज करें


खेल इंजन के लिए निकटतम निश्चितता

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

खेल इंजन बीच में गड़बड़ है।



0

जैसा कि @ जोश पहले ही बता चुका है, फ्रेमवर्क या इंजन की कोई सख्त परिभाषा नहीं है, लेकिन एक वैचारिक अर्थ में, दोनों बहुत अलग उपकरण हैं।

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

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

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