2 डी गेम में मनमाने ढंग से बड़ी छवियों से कैसे निपटें?


13

सवाल

जब आपके पास एक 2D गेम होता है जो वास्तव में बड़ी छवियों (आपके हार्डवेयर से बड़ा समर्थन कर सकता है) का उपयोग करता है, तो आप क्या करते हैं? शायद इस समस्या का कुछ दिलचस्प समाधान है जो मुझे पहले कभी नहीं हुआ था।

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

प्रसंग

यह अच्छी तरह से ज्ञात है कि ग्राफिक कार्ड उन बनावटों के आकार पर प्रतिबंध का एक सेट लगाते हैं जो वे उपयोग कर सकते हैं। उदाहरण के लिए, जब आप XNA के साथ काम कर रहे हों, तो आप अधिकतम 2048 या 4096 पिक्सल के टेक्सचर साइज़ तक सीमित रह जाते हैं।

आमतौर पर यह 2 डी गेम में बहुत अधिक समस्या पैदा नहीं करता है क्योंकि उनमें से अधिकांश में छोटे व्यक्तिगत टुकड़ों (जैसे टाइल या परिवर्तित स्प्राइट) से निर्माण किए जा सकते हैं।

लेकिन कुछ क्लासिक point'n'click ग्राफिक एडवेंचर गेम्स (जैसे मंकी आइलैंड) के बारे में सोचें। ग्राफिक एडवेंचर गेम्स के कमरों को आमतौर पर एक पूरे के रूप में डिजाइन किया जाता है, जिसमें परिदृश्य पर काम करने वाले चित्रकार की तरह बहुत कम या कोई दोहराए जाने वाले खंड नहीं होते हैं। या शायद फाइनल फंतासी 7 जैसा गेम जो बड़े प्री-रेंडर बैकग्राउंड का उपयोग करता है।

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

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

यदि आप एक उच्च स्तर के एपीआई के साथ काम कर रहे हैं, तो क्या यह शायद इस स्थिति से निपटने के लिए तैयार नहीं होना चाहिए और आंतरिक रूप से बनावट के विभाजन और संयोजन करना चाहिए (या तो एक पूर्व-प्रक्रिया जैसे कि XNA की सामग्री पाइपलाइन या रनटाइम पर)?

संपादित करें

यहाँ मैं जो सोच रहा था, एक XNA कार्यान्वयन के दृष्टिकोण से।

मेरे 2D इंजन को केवल Texture2D की कार्यक्षमता का एक बहुत छोटा सा हिस्सा चाहिए। मैं वास्तव में इसे इस इंटरफ़ेस के लिए कम कर सकता हूं:

public interface ITexture
{
    int Height { get; }
    int Width { get; }
    void Draw(SpriteBatch spriteBatch, Vector2 position, Rectangle? source, Color  color, float rotation, Vector2 origin, Vector2 scale, SpriteEffects effects, float layerDepth);
}

एकमात्र बाहरी विधि जिसका उपयोग मैं Texture2D पर निर्भर करता है, SpriteBatch.Draw () है, इसलिए मैं एक एक्सटेंशन विधि जोड़कर उनके बीच एक पुल बना सकता हूं:

    public static void Draw(this SpriteBatch spriteBatch, ITexture texture, Vector2 position, Rectangle? sourceRectangle, Color color, float rotation, Vector2 origin, Vector2 scale, SpriteEffects effects, float layerDepth)
    {
        texture.Draw(spriteBatch, position, sourceRectangle, color, rotation, origin, scale, effects, layerDepth);
    }

इससे पहले कि जब भी मैंने एक Texture2D का उपयोग किया था, यह मुझे एक विनिमेय रूप से उपयोग करने की अनुमति देगा।

तब मैं ITexture के दो अलग-अलग कार्यान्वयन बना सकता था जैसे RegularTexture और BigTexture, जहाँ RegularTexture बस एक नियमित Texture2D लपेटेगा।

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

अंत में, पूरी प्रक्रिया को पारदर्शी बनाने के लिए, मैं एक एकीकृत बनावट लोडर वर्ग बनाऊंगा जो कि फैक्टरी विधि के रूप में कार्य करेगा। यह एक पैरामीटर के रूप में बनावट का रास्ता अपनाएगा और एक ITexture लौटाएगा जो या तो एक RegularTexture या एक BigTexture होगा जो कि सीमा से अधिक छवि आकार के आधार पर होगा या नहीं। लेकिन उपयोगकर्ता को यह जानने की जरूरत नहीं थी कि यह कौन सा है।

थोड़ा ओवरकिल या क्या यह ठीक लगता है?


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

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

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

यह वास्तव में डिज़ाइन के बारे में आप पर निर्भर है। यदि आप परियोजना को पूरा करते हैं और आप कमरों के बीच स्क्रॉल नहीं कर सकते हैं तो यह बेहतर होगा, समाप्त नहीं होने वाला संपादक जो आपको बड़े बनावट को स्क्रॉल करने की अनुमति देता है: D
Aleks

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

जवाबों:


5

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

कुछ ट्रिक्स हैं जो आप विशेष रूप से साहसिक खेलों के लिए कर सकते हैं। मैं सभी क्लासिक एडवेंचर गेम्स की तरह कल्पना करता हूं कि आपके पास इन बनावटों की कुछ परतें होंगी ताकि ... आपका चरित्र पेड़ या इमारत के पीछे चल सके ...

यदि आप चाहते हैं कि इन परतों का पक्षाघात प्रभाव हो, तो जब आप अपनी टाइलों को विभाजित कर रहे हों तो बस एक बार सभी पारभासी छोड़ दें। यहां आपको टाइल्स के आकार के बारे में सोचने की जरूरत है। छोटी टाइलें ओवरहेड का प्रबंधन करेंगी और कॉल ड्रॉ करेंगी, लेकिन कम डेटा होगा जहां बड़ी टाइलें अधिक GPU के अनुकूल होंगी, लेकिन बहुत अधिक पारभासी होगी।

यदि आपके पास पैरालैक्सिंग प्रभाव नहीं है, तो पूरे दृश्य को 2-4 विशाल चित्रों के साथ कवर करने के बजाय जिसमें 32 बिट्स की गहराई है, आप सिर्फ एक 32 बिट्स गहराई बना सकते हैं। और आपके पास एक स्टेंसिलिंग या गहराई की परत हो सकती है जो प्रति पिक्सेल केवल 8 बिट्स होगी।

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

क्लासिक गेम इसे कैसे कर रहे थे, इसके बारे में। मुझे यकीन नहीं है कि उन्होंने शायद सिम्मिलर ट्रिक्स किया था, लेकिन आपको यह याद रखना होगा कि उस समय स्क्रीन 320x240 खेल 16 रंगों के साथ थे, जब पैलेटाइज्ड टेक्सचर का उपयोग करते हुए आपको सिंगल बाइट में 2 पिक्सल को एन्कोड करने की अनुमति मिलती है। लेकिन यह नहीं है कि वर्तमान आर्किटेक्चर कैसे काम करते हैं: डी

शुभ लाभ


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

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

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

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

मुझे स्टैंसिल अप्रोच पसंद है लेकिन अगर मैं एडवेंचर गेम एडिटर बना रहा हूं तो शायद मैं इसका इस्तेमाल नहीं करूंगा ... शायद इसलिए क्योंकि अगर मैं इस तरह के टूल का निर्माण कर रहा हूं तो गेम डेवलपर्स के लिए मेरा इरादा है। वैसे यह पेशेवरों और विपक्ष है। उदाहरण के लिए आप एक और छवि का उपयोग कर सकते हैं जिस पर बिट्स प्रति पिक्सेल ट्रिगर को परिभाषित कर सकते हैं या यदि आपके पास कुछ पानी एनिमेटेड है तो आप इसे आसानी से स्टेंसिल कर सकते हैं। नोट: एक अजीब असंबंधित सुझाव आपकी स्क्रिप्टिंग के लिए यूएमएल स्टेट / एक्टिविटी डायग्राम में दिखता है।
Aleks

2

उन्हें काटें ताकि वे अब मनमाने ढंग से बड़े न हों, जैसे आप कहते हैं। कोई जादू नहीं है। उन पुराने 2 डी गेमों ने या तो ऐसा किया या वे सॉफ्टवेयर में प्रस्तुत किए गए, जिस स्थिति में रैम आकार से परे कोई हार्डवेयर प्रतिबंध नहीं थे। ध्यान दें कि उन 2D खेलों में से कई में वास्तव में बहुत बड़ी पृष्ठभूमि नहीं थी, वे बस धीरे-धीरे स्क्रॉल करते थे इसलिए उन्हें बहुत बड़ा लगा।

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

यदि आप अपना खुद का लिखने के बजाय एक मौजूदा एपीआई और पुस्तकालय का उपयोग करना चाहते हैं, तो मैं सुझाव दूंगा कि आप उन बड़ी छवियों को उस "बिल्ड" के दौरान टाइल में बदल दें और 2 डी टाइल इंजन का उपयोग करें, जिनमें से कई हैं।

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


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

1

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

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

लोड / रन टाइम: जिस तरह से मैं लोडिंग के बारे में जाऊंगा वह सिर्फ आनुपातिक आकार के टुकड़ों में कट रहा है। अगर यह पिक्सेल की विषम संख्या है, तो सही सबसे अधिक टुकड़े पर एक पिक्सेल के लिए खाता है, कोई भी अपनी छवियों को काट रहा है पसंद नहीं करता है, विशेष रूप से अनुभवहीन उपयोगकर्ता जो शायद यह नहीं जानते हैं कि यह पूरी तरह से उनके लिए नहीं है। उन्हें आधी चौड़ाई या आधी ऊंचाई (या 3rds, जो भी हो) का कारण चौकों या 4 वर्गों (2 पंक्तियों 2 स्तंभों) में न होने के कारण बना दें क्योंकि यह x और y दोनों के बारे में चिंता नहीं होने के कारण छोटी मेमोरी को छोटा कर देगा। एक ही समय में (और कितने बड़े हैं, यह निर्भर करता है कि यह बहुत महत्वपूर्ण हो सकता है)

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

  1. यह एक सिंगल फाइल है
  2. सभी फाइलों में लगभग समान स्वरूपण होगा
  3. आप आसानी से चुन सकते हैं कि कब और क्या इसे अलग-अलग बनावट में काट दिया जाए
  4. व्यक्तिगत छवियों को एक्सेस करना आसान हो सकता है यदि वे पहले से ही एक लोडेड हैं। क्योंकि यह स्मृति में छवि फ़ाइलों की गड़बड़ी की आवश्यकता नहीं होगी।

ओह और यदि आप .gif विधि का उपयोग करते हैं, तो आपको फ़ाइल एक्सटेंशन को कुछ और (.gif -> .kittens) में कम भ्रम के लिए बदलना चाहिए जब आपका .gif एनिमेशन करता है जैसे कि यह एक टूटी हुई फ़ाइल है। (उस की वैधता के बारे में चिंता न करें, .gif एक खुला प्रारूप है)


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

लेकिन जिज्ञासा से बाहर, क्या आप कुछ और विस्तृत कर सकते हैं कि आप किस मापदंड का चयन करते थे कि छवि का कौन सा क्षेत्र प्रत्येक अनुभाग में गया?
डेविड गौवेया

यदि आप छवि से निपटने में कम अनुभवी हैं, तो यह आपके सिर पर हो सकता है। लेकिन अनिवार्य रूप से, मैं छवि को खंडों में काटने का वर्णन कर रहा था। और हाँ .gif पॉइंट स्टोरेज और लोडिंग दोनों का वर्णन कर रहा था, लेकिन इसका मतलब आपके लिए इमेज को कट करना है, और फिर इसे कंप्यूटर पर स्टोर करना है कि यह कैसा है। यदि आप इसे एक जिफ़ के रूप में सहेजते हैं, तो मैं कह रहा था कि आप इसे अलग-अलग चित्रों में काट सकते हैं, और फिर इसे एक एनिमेटेड GIF के रूप में सहेज सकते हैं, छवि के प्रत्येक कट को अलग एनीमेशन फ्रेम के रूप में सहेजा जा रहा है। यह अच्छी तरह से काम करता है और मैंने इसके साथ अन्य सुविधाएँ भी जोड़ी हैं।
यहोशू हेज

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

रोजर, मुझे GIF फ्रेम का उपयोग करने के बारे में एक संग्रह मिला। लेकिन मैं यह भी सोच रहा हूं कि क्या GIF को सीमित रंग पैलेट के साथ प्रारूपित नहीं किया गया है? क्या मैं प्रत्येक फ्रेम में पूरे 32bpp RGBA छवियों को स्टोर कर सकता हूं? और मैं इसे और भी जटिल बनाते हुए लोड करने की प्रक्रिया की कल्पना करता हूं, क्योंकि XNA इसका कुछ भी समर्थन नहीं करता है।
डेविड गौवेया

0

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

मुझे पता है कि यह समस्या से बचा जाता है, और ईमानदारी से, यह हल करने के लिए एक बहुत ही दिलचस्प समस्या है। वैसे भी, यह एक तुच्छ समाधान है, जो आपके लिए कुछ समय का काम कर सकता है।


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

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