2017-01-02 15 views
9

मैं अपने TVOS खेल के लिए एक SKScene का एक संग्रह के रूप में एक मंच के डेटा को बचाने की कोशिश कर रहा हूँ। मुझे यह एक सिम्युलेटर पर काम मिल गया। हालांकि, टीवीओएस में स्पष्ट रूप से संग्रह को रखने के लिए स्थानीय भंडारण नहीं है।TVOS SpriteKit खेल डेटा संग्रह स्थान

संग्रह में प्रवेश करने के लिए केवल एक ही स्थान जो मैं संग्रह में डाल सकता हूं वह बंडल में है (जो किसी कारण से फहरा हुआ है) और बादल (जो क्लाउड से कनेक्ट करने के लिए मूर्खतापूर्ण लगता है जो गेम डेटा को पढ़ने के लिए वास्तव में खेल के साथ आना चाहिए)।

मैं सच में यकीन है कि क्या आगे बढ़ने के लिए सही तरीके से, अब नहीं हूँ।

उत्तर

1

tvOS स्थानीय भंडारण करता है। हालांकि, यह 4 जीबी तक सीमित है।

12 जनवरी, 2017 तक - ऐप्पल अब टीवीओएस ऐप बंडलों को स्वीकार कर रहा है जो आकार में 4 जीबी तक हैं। Now Accepting Larger tvOS Binaries

एक tvOS एप्लिकेशन बंडल के आकार की सीमा, 4 जीबी के लिए 200 MB से बढ़ गया है, ताकि आप अपने प्रस्तुत करने में अधिक मीडिया में शामिल हैं और स्थापना पर एक पूर्ण, अमीर उपयोगकर्ता अनुभव प्रदान कर सकते हैं: घोषणा यहाँ देखें। साथ ही, टीवीओएस ऐप ऐप स्टोर पर 20 जीबी अतिरिक्त सामग्री होस्ट करने के लिए ऑन-डिमांड रिसोर्सेज का उपयोग कर सकते हैं।


12 जनवरी, 2017 से पहले - यह 200 एमबी तक ही सीमित था। इस परिवर्तन को दर्शाने के लिए ऐप्पल के दस्तावेज को अद्यतन किया गया है।

documentation से:

अपने अनुप्रयोग के लिए स्थानीय संग्रह सीमित है

अधिकतम आकार एक tvOS एप्लिकेशन बंडल 200 MB4 जीबी के लिए। इसके अलावा, आपका ऐप केवल 500 KB सतत स्टोरेज तक पहुंच सकता है जो डिवाइस के लिए स्थानीय है (NSUserDefaults क्लास का उपयोग करके)। इस सीमित स्थानीय भंडारण के बाहर, अंतरिक्ष कम होने पर अन्य सभी डेटा ऑपरेटिंग सिस्टम द्वारा शुद्ध किया जाना चाहिए। इन संसाधनों के प्रबंधन के लिए आपके पास कुछ विकल्प हैं:

  • आपका ऐप iCloud में उपयोगकर्ता डेटा को स्टोर और पुनर्प्राप्त कर सकता है।

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

  • आपके ऐप ने केवल पढ़ने के लिए ऑन-डिमांड संसाधनों का उपयोग कर संपत्ति पैकेज कर सकते हैं। फिर, रनटाइम पर, आपका ऐप उन संसाधनों का अनुरोध करता है जिनकी आवश्यकता होती है, और ऑपरेटिंग सिस्टम स्वचालित रूप से उन संसाधनों को डाउनलोड और प्रबंधित करता है। अपने उपयोगकर्ताओं को व्यस्त रखने के दौरान नई संपत्तियों को कैसे और कब लोड करना एक सफल ऐप बनाने के लिए महत्वपूर्ण है। ऑन-डिमांड संसाधनों के बारे में जानकारी के लिए, On-Demand Resources Guide देखें।

इसका मतलब यह है कि नए एप्पल टी वी के लिए विकसित की हर एप्लिकेशन iCloud में डाटा स्टोर और एक तरीका है कि एक महान ग्राहक अनुभव प्रदान करता है में इसे पुनः प्राप्त करने में सक्षम होना चाहिए।

अपने बंडल 200 MB4 जीबी सीमा से अधिक है, तो आप विकल्प एप्पल ऊपर का वर्णन करता है में से एक को रोजगार देना होगा। आगे बढ़ने का सही तरीका आपके गेम की वास्तुकला पर निर्भर करेगा और अधिक विशेष रूप से यह आर्किटेक्चर ऑन-डिमांड संपत्तियों को कैसे प्रबंधित कर सकता है।

+0

यह गेम सामग्री के संग्रहण के बारे में है, गेम डेटा नहीं। – Confused

1

आपके पास UserDefaults और iCloud केवीएस के माध्यम से 1 एमबी के लिए 500kb है। बाकी सब कुछ iCloud में होना चाहिए।

मैं देखता हूं कि आपके दृश्य ग्राफ का एक प्लिस्ट/dict कितना बड़ा है और यह निर्धारित करता है कि इसे कहां से सहेजना है।

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

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

बड़ी संग्रहण आवश्यकताओं के लिए, 1 एमबी से अधिक, आपके ऐप को क्लाउडकिट को लागू करने की आवश्यकता है। क्लाउडकिट एक उपयोगकर्ता द्वारा किसी अन्य उपयोगकर्ता द्वारा संग्रहीत जानकारी को अनुमति देता है। यह उन उदाहरणों में बेहद उपयोगी है जहां एक उपयोगकर्ता के कार्य किसी अन्य उपयोगकर्ता के विकल्पों को प्रभावित करते हैं; उदाहरण के लिए, किसी गेम द्वारा किसी उपयोगकर्ता द्वारा किए गए कार्यों को सीधे किसी अन्य उपयोगकर्ता को प्रभावित करता है।

https://developer.apple.com/library/content/documentation/General/Conceptual/AppleTV_PG/iCloudStorage.html#//apple_ref/doc/uid/TP40015241-CH10-SW1

यह छोटे मैं सिर्फ UserDefaults का प्रयोग करेंगे के रूप में यह त्वरित और आसान है और प्लेटफ़ॉर्म पर एक ही कोड का उपयोग करेगा अगर।

1

मैं अपने टीवीओएस गेम के लिए एसकेसीसीन के संग्रह के रूप में एक मंच के डेटा को सहेजने की कोशिश कर रहा हूं। मुझे यह एक सिम्युलेटर पर काम मिल गया। हालांकि, TVOS जाहिरा तौर पर में संग्रह डाल करने के लिए स्थानीय भंडारण नहीं है।

आप स्थानीय भंडारण की एक छोटी राशि है ...

केवल अन्य स्थानों मैं डाल करने के लिए लगा सकते हैं में संग्रह बंडल ही (जो किसी कारण से पर सिकोड़ी है)

में हैं आप अन्य छोटे भंडारण के लिए स्थानीय स्तर पर और iCloud KVS 1mb (1024 कुंजियों तक) UserDefaults 500 KB है।

और क्लाउड (जो क्लाउड से कनेक्ट होने के लिए क्लाउड से जुड़ने की आवश्यकता है, जो वास्तव में गेम के साथ आना चाहिए)।

जब आप एप्पल पुस्तकालयों का उपयोग, आप, मूर्ख काम करने अंततः आदत हो: {

मैं सच में यकीन है कि क्या आगे बढ़ने के लिए सही तरीके से, अब नहीं हूँ।

उपयोग UserDefaults या CloudKit कितना बड़ा अपने रेखांकन कर रहे हैं पर निर्भर करता है, और उसके बाद एप्पल बारे में गुस्से में ईमेल (जैसा कि हम सभी चाहिए)।

संबंधित मुद्दे