लिनक्स गेम्स में एसेट फाइल ढूंढना


11

विकास के दौरान और एक रिलीज में 3 डी मॉडल, बनावट, ध्वनियों और लिपियों (जैसे लुआ फाइलें) को संग्रहीत करने की सामान्य विधि क्या है? मैं मुख्य रूप से C ++ में अपने दोस्तों के साथ एक खेल विकसित कर रहा हूं; प्रोटोटाइपिंग चरण में हमारे पास केवल एक ही बनावट थी जिसे GIMP के साथ C हेडर के रूप में सहेजा गया था, लेकिन निश्चित रूप से, यह दृष्टिकोण ठीक नहीं है और संकलन समय को बहुत बढ़ाता है।

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

मैं दो अलग-अलग संभावित समाधानों के साथ आ सकता हूं:

  • निष्पादन योग्य को स्वयं के सापेक्ष संपत्ति फ़ाइलों को खोजने दें, और गेम को स्थापित करें /opt। फिर सिम्बलिंक्स को रखें /usr/bin। विकास के दौरान, बायनेरिज़ को परिसंपत्तियों का सापेक्ष पथ तैनाती के दौरान के समान है।
  • एक पूर्ण पथ के साथ फ़ाइलों तक पहुंचें, जिसे प्रीप्रोसेसर प्रतीक के रूप में परिभाषित किया गया है। निर्माण प्रक्रिया (हमारे मामले में, कच्चे Makefileएस) को फिट होने के साथ इसे परिभाषित करने का ख्याल रखें।

दोनों दृष्टिकोण मुझे एक पहलू या किसी अन्य में कुछ हद तक असंगत लगते हैं। क्या इस बारे में खेल विकास उद्योग में एक आम बात है?

एकमात्र प्रासंगिक प्रश्न जो मुझे मिल सकते थे , वे संसाधनों और परिसंपत्तियों के लिए डिस्क गेम एसेट्स और डायरेक्ट्री पाथ पर स्थापित / के स्थान को निर्धारित कर रहे थे , लेकिन उन लोगों ने "सोर्स ट्री से" चलाने की समस्या को संबोधित नहीं किया।

जवाबों:


6

../lib/programnameया ../share/programname/, के सापेक्ष dirname(3)की argv[0], अगर संपत्ति वास्तुकला पर निर्भर हैं या नहीं पर निर्भर करता है।

यह अन्य सभी लिनक्स (और सबसे गैर-मैक यूनिक्स) कार्यक्रमों के समान मानक है।

यदि आप "स्रोत वृक्ष" से भागना चाहते हैं,

  1. आपको एक वास्तविक बिल्ड सिस्टम प्राप्त करना चाहिए और एक बिल्ड करना चाहिए, क्योंकि आप कभी भी "सोर्स ट्री से नहीं चलते हैं", आप एक अंतर्निहित निष्पादन योग्य चलाते हैं, जिसे आपका बिल्ड सिस्टम कहीं बाहर थूकता है, और यह संपत्ति को आसानी से कॉपी या लिंक कर सकता है।
  2. यदि आपका बिल्ड सिस्टम बहुत भद्दा है, तो भी जाँच करें .या ./assets, आदि, और फिर बाद में विकास में एक नई बिल्ड सिस्टम देखें।

Happy_emi के विपरीत, आपको निश्चित रूप से पर्यावरण चर के साथ इसे ओवरराइड करने का एक तरीका प्रदान करना चाहिए। यह वही है जो वे चाहते हैं।


इन वातावरण चर पर भी विचार करें, जो लिनक्स डेस्कटॉप पर मानक हैं: standard.freedesktop.org/basedir-spec/basedir-spec-latest.html
bogglez
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.