TVOS Spritekit Spiel Datenarchiv Speicherort

9

Ich habe versucht, die Daten einer Bühne als Archiv einer SKScene für mein TVOS-Spiel zu speichern. Ich habe es an einem Simulator arbeiten lassen. Allerdings hat das TVOS anscheinend keinen lokalen Speicher, in den das Archiv gestellt werden kann.

Die einzigen anderen Orte, an denen ich das Archiv einsetzen kann, sind das Bundle selbst (das aus irgendeinem Grund verpönt ist) und die Cloud (die albern zu sein scheint, um mit der Cloud zu verbinden, um Spieldaten zu lesen, die eigentlich nur passen sollten komm mit dem Spiel).

Ich bin mir nicht sicher, was der richtige Weg ist, jetzt.

    
Zek 02.01.2017, 19:06
quelle

3 Antworten

1

Sie haben 500kb für UserDefaults und 1mb über iCloud KVS. Alles andere muss in iCloud sein.

Ich würde sehen, wie groß ein plist / dict von Ihrem Szenengraph ist und bestimmen, wo es von dort gespeichert werden soll.

  

Der Speicherplatz auf Apple TV ist begrenzt, und es kann nicht garantiert werden, dass auf dem Gerät gespeicherte Informationen verfügbar sind, wenn ein Nutzer das nächste Mal Ihre App öffnet. Um die Daten des Benutzers über mehrere Geräte hinweg zu teilen, müssen Sie die Informationen des Benutzers auch an einem anderen Ort als Apple TV speichern. Apple bietet zwei gemeinsam genutzte Speicheroptionen für Apple TV: iCloud Key-Value Storage (KVS) und CloudKit.

     

Für kleine Speicheranforderungen unter 1 MB kann Ihre App iCloud KVS verwenden. iCloud KVS synchronisiert automatisch Informationen auf allen Geräten eines Benutzers. Nur der Besitzer der App kann auf die von iCloud KVS gespeicherten Informationen zugreifen. Andere Nutzer Ihrer App können nicht auf diese Informationen zugreifen. Weitere Informationen finden Sie unter Entwerfen von Schlüsselwertdaten in iCloud.

     

Für große Speicheranforderungen, die größer als 1 MB sind, muss Ihre App CloudKit implementieren. CloudKit ermöglicht, dass von einem Benutzer gespeicherte Informationen von einem anderen Benutzer abgerufen werden können. Dies ist äußerst nützlich in Fällen, in denen die Aktionen eines Benutzers die Optionen eines anderen Benutzers beeinflussen; zum Beispiel die Aktionen, die ein Benutzer während eines Spiels macht, die sich direkt auf einen anderen Benutzer auswirken.

Ссылка

Wenn es klein ist, würde ich einfach UserDefaults verwenden, da es schnell und einfach ist und den gleichen Code plattformübergreifend verwendet.

    
Fluidity 14.01.2017 22:08
quelle
1
  

Ich habe versucht, die Daten einer Bühne als Archiv einer SKScene für mein TVOS-Spiel zu speichern. Ich habe es an einem Simulator arbeiten lassen. Allerdings hat das TVOS anscheinend keinen lokalen Speicher, in den das Archiv gestellt werden kann.

Sie haben eine kleine Menge lokalen Speicher ...

  

Die einzigen anderen Orte, an denen ich das Archiv anlegen kann, sind im Bündel selbst (was aus irgendeinem Grund verpönt ist)

Sie haben UserDefaults 500kb lokal und iCloud KVS 1mb (bis zu 1024 Schlüssel) für anderen kleinen Speicher.

  

und die Cloud (was albern erscheint, wenn man sich mit der Cloud verbinden muss, um Spieldaten zu lesen, die eigentlich nur mit dem Spiel kommen sollten).

Wenn Sie Apple-Bibliotheken verwenden, werden Sie sich langsam an alberne Dinge gewöhnen: {

  

Ich bin mir nicht sicher, was der richtige Weg ist, jetzt.

Verwenden Sie UserDefaults oder CloudKit , je nachdem, wie groß Ihre Grafiken sind, und schreiben Sie dann Apple eine wütende E-Mail (wie wir alle sollten).

    
Fluidity 15.01.2017 01:02
quelle
1

tvOS hat lokalen Speicher. Es ist jedoch auf 4 GB begrenzt.

Ab dem 12. Januar 2017 akzeptiert Apple nun tvOS-App-Bundles mit einer Größe von bis zu 4 GB. Siehe die Ankündigung hier: Jetzt größere tvos Binaries akzeptieren

  

Die Größenbeschränkung eines tvOS-App-Bundles wurde von 200 MB auf 4 GB erhöht. Sie können also mehr Medien in Ihre Einreichung aufnehmen und bei der Installation eine umfassende und umfassende Benutzererfahrung bieten. Außerdem können tvOS-Apps On-Demand-Ressourcen verwenden, um bis zu 20 GB zusätzlichen Content im App Store zu hosten.

Vor dem 12. Januar 2017 - Es war auf 200 MB beschränkt. Die Dokumentation von Apple wurde seither aktualisiert, um diese Änderung widerzuspiegeln.

Aus der Dokumentation :

  

Der lokale Speicher für Ihre App ist begrenzt

     

Die maximale Größe für ein tvOS-App-Paket 200 MB 4 GB . Darüber hinaus kann Ihre App nur auf 500 KB persistenten Speicher zugreifen, der lokal für das Gerät ist (mithilfe der NSUserDefaults-Klasse). Außerhalb dieses begrenzten lokalen Speichers müssen alle anderen Daten vom Betriebssystem entfernt werden können, wenn der Platz knapp ist. Sie haben einige Optionen zum Verwalten dieser Ressourcen:

     
  • Ihre App kann Benutzerdaten in iCloud speichern und abrufen.

  •   
  • Ihre App kann die benötigten Daten in ihr Cache-Verzeichnis herunterladen. Heruntergeladene Daten werden nicht gelöscht, während die App ausgeführt wird. Wenn der Speicherplatz jedoch knapp ist und Ihre App nicht ausgeführt wird, werden diese Daten möglicherweise gelöscht. Verwenden Sie nicht den gesamten Cache-Speicherplatz, da dies zu unvorhersehbaren Ergebnissen führen kann.

  •   
  • Ihre App kann schreibgeschützte Assets mit bedarfsgesteuerten Ressourcen verpacken. Zur Laufzeit fordert Ihre App dann die benötigten Ressourcen an, und das Betriebssystem lädt diese Ressourcen automatisch herunter und verwaltet sie. Zu wissen, wie und wann neue Assets geladen werden sollen, während die Nutzer aktiv bleiben, ist entscheidend für die Erstellung einer erfolgreichen App. Informationen zu On-Demand-Ressourcen finden Sie unter Leitfaden für On-Demand-Ressourcen .

  •   

Dies bedeutet, dass jede App, die für das neue Apple TV entwickelt wurde, in der Lage sein muss, Daten in iCloud zu speichern und sie so abzurufen, dass sie ein großartiges Kundenerlebnis bietet.

Wenn Ihr Paket das <200 MB

4 GB Limit überschreitet, müssen Sie eine der oben beschriebenen Optionen von Apple verwenden. Die richtige Vorgehensweise hängt von der Architektur Ihres Spiels und insbesondere davon ab, wie diese Architektur mit On-Demand-Assets umgehen kann.

    
Ryan H. 02.01.2017 19:21
quelle

Tags und Links