जब आप उनमें से बहुत से हैं, तो आप एक गेम में संसाधनों को कैसे पैक करते हैं?


10

मैंने हाल ही में एलीग्रो 5 ढांचे का उपयोग करते हुए, सी ++ में एक बुनियादी अंतरिक्ष आक्रमणकारियों का क्लोन बनाया है। समाप्त होने के बाद, मुझे एहसास हुआ कि मेरे पास लगभग 10 स्प्राइट्स, और 13 एमबी मूल्य के डीएलएल हैं; कुछ खिलाड़ियों के पास mingW DLL भी नहीं था, जो खेल को बहुत ही भ्रामक बना रहा था।

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


1
आप संसाधनों को कैसे समझते हैं? छवियों, ध्वनियों, जैसे परिसंपत्तियों ... या क्या आप इस शब्द में DLL शामिल करते हैं?
ईसाई आइविसेविच

मुझे पसंद है अगर मैं DLL भी फिट कर सकता हूं क्योंकि मेरे पास बहुत सारे हैं।
बगस्टर

मेरा पहला विचार zziplibएक ज़िप फ़ाइल में अपनी सभी सामान्य संपत्तियों को संग्रहीत करने और फिर एक कस्टम सामग्री पाइपलाइन इंजन के माध्यम से अपने गेम में लोड करने के लिए (काफी पुरानी ...) जैसी उपयुक्त लाइब्रेरी खोजने का होगा । जो आप मूल रूप से शुरुआत की तलाश में हैं वह एक ज़िप फ़ाइल से मेमोरी में फ़ाइलों को लोड करने का एक तरीका है जो आपके गेम में उनका उपयोग करने में सक्षम होने के लिए है। DLLs यह काफी मुश्किल है के संबंध में क्योंकि वे आम तौर निष्पादन या रूप में एक ही निर्देशिका में होना चाहिए Windowsया System32निर्देशिका है जो नहीं की सिफारिश की! कैसे एक SFX संग्रह के बारे में निकालने TEMPऔर वहाँ से चलाने के लिए ?
क्रिश्चियन आइविसेविच

3
क्या आप एक इंस्टॉलर का उपयोग करने के तरीके के बारे में पूछ रहे हैं? क्योंकि DLL संसाधन नहीं हैं।
निकोल बोलस

जवाबों:


13

ऐसा लगता है कि आपके सामने दो चुनौतियां हैं: वितरण, और परिसंपत्ति पैकेजिंग।

वितरण

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

आप अपनी फाइलें कैसे रखते हैं?

  • आपके .dll को आमतौर पर निष्पादन योग्य के समान निर्देशिका में होना चाहिए (अपवाद हैं, लेकिन सरलता के लिए ...)
  • आपकी संपत्ति (चित्र, ऑडियो) आप जहां चाहें उन्हें ले जा सकते हैं, हालांकि यदि आप उन्हें अपने निष्पादन योग्य के संदर्भ में स्थानांतरित करते हैं तो आपको इसे लेने के लिए संसाधन-लोडिंग कोड को संशोधित करना होगा।

मैं आमतौर पर ऐसा कुछ करता हूं:

MyGame \ // शीर्ष स्तर की निर्देशिका संपूर्ण प्रोग्राम रखती है
  बिन \ // dll संकलित निर्वासन के साथ यहां जाते हैं
  Res \ // खेल संसाधन शीर्ष स्तर निर्देशिका
    संगीत \
    ध्वनि प्रभाव\   
    आवाज़\
  cfg \ // डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइलें (उपयोगकर्ता-कॉन्फ़िगरेशन उपयोगकर्ता निर्देशिका में जाती हैं)
  MyGame.lnk // संकलित निर्वासन के लिए शॉर्टकट

एसेट पैकेजिंग

आप अपने सभी गेम रिसोर्सेज (उपरोक्त रेस \ डायरेक्टरी) को एक ही फाइल में कंप्रेस करने के लिए किसी प्रकार की कंप्रेशन लाइब्रेरी (zlib, lzo) का उपयोग कर सकते हैं। फिर आपको अपने खेल में अपनी संपत्ति को लोड करने के लिए, अपने संसाधनों की सामग्री को वास्तविक समय में निकालने के लिए उसी संपीड़न लाइब्रेरी का उपयोग करने की आवश्यकता है।

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

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

एक संस्थापक का निर्माण

यह मान रहा है कि आप विंडोज को लक्षित कर रहे हैं ... एक बार जब आप ऊपर नीचे होते हैं, तो आप अपने गेम के लिए एक इंस्टॉलर के निर्माण पर काम कर सकते हैं। मैं विजुअल स्टूडियो द्वारा समर्थित ClickOnce तरीकों की हर कीमत पर बचूंगा। यह नहीं अपने ठेठ विंडोज संस्थापक और विचित्रता के अपने आप सेट के साथ आता है।

इस StackOverflow प्रश्न पर एक नज़र डालें - इसमें इंस्टॉलर पैकेजों के लिए उपयोगी लिंक का एक सेट है जिसका आप उपयोग कर सकते हैं। इन दिनों बहुत सारे लोग वाईएक्स को पसंद करने लगते हैं । मैंने खुद इसका कभी इस्तेमाल नहीं किया है। इसके अलावा, AdvancedInstaller और InnoSetup दोनों लोकप्रिय विकल्प हैं।


1
इस उत्तर के लिए धन्यवाद, अब मेरे पास एक मूल विचार है कि मुझे अपने खेल को कैसे वितरित करना चाहिए।
बगस्टर

1
WiX का उपयोग न करें। यह आपके सिर को चोट पहुंचाएगा और आपके परिवार को मार देगा।
रे डे

1
एक और विकल्प है - एक से अधिक परिसंपत्ति पैकेज हो सकते हैं। कुछ इस तरह के "resource.pak, patch1.pak, patch1337.pak, .." तब पैच डेटा स्टोर करने का एक तरीका होगा। मूल पैकेज को संशोधित करने की आवश्यकता नहीं होगी, बस इंजन को पैच पैकेजों का पता लगाने और ऑर्डर करने में सक्षम बनाना चाहिए।
स्नेक

0

हो सकता है कि आप dll को शामिल करने के बजाय कुछ पुस्तकालयों को सांख्यिकीय रूप से लिंक करने में सक्षम हों। हालांकि, हर लाइब्रेरी के लिए अलग और अलग है।


-1

आप अपनी फ़ाइलों को पैक करने और उन्हें एक .dat में सहेजने के लिए Enigma जैसे सॉफ़्टवेयर का उपयोग कर सकते हैं। आपको अपने लॉन्चर के फ़ोल्डर को बदलना होगा।

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