2012-03-23 6 views
0

Im créer un jeu qui a plusieurs niveaux et les niveaux contiennent plusieurs textures et formes.Meilleure façon de stocker des données de jeu sur iPhone?

Quel serait le meilleur moyen de stocker ces données sur iphone/ipad?

Je pensais utiliser SQLite ou coredata pour le stocker. Mais j'ai aussi besoin d'implémenter une fonction qui mettra à jour les données du jeu à partir d'un serveur distant (dans les achats de jeux). SQLite est-il le meilleur moyen de l'archiver? Comment puis-je mettre à jour le contenu SQLite lors de la mise à jour du contenu (télécharger un fichier .zip l'extraire et l'importer dans le répertoire db /)? Si quelqu'un a des pointeurs je l'apprécierais vraiment!

Répondre

2

Le moyen le plus simple est de les stocker dans un plist (qui est un fichier xml). SQLite vous obligerait à le stocker en dehors du sandbox de l'application, dans le répertoire documents (car l'inclusion d'un sqlite dans l'application d'origine est en lecture seule).

À part cela, vous pouvez utiliser des corédates.

+0

+1 pour mentionner le sandbox SQL. Le problème avec les plistes est que si chaque mise à jour a son propre plist il serait désordonné de charger chaque plist dans le jeu. Et aussi chercher des relations dans le plist serait lent et une douleur. – blejzz

+0

(Btw c'est bac à sable application, pas SQL Sandbox - pour le moment :)) Pourquoi ne pas sérialiser vos objets et les désérialiser dans votre serveur. La partie piège serait de ne pas les sérialiser en utilisant les routines ios standard. Vous pouvez ensuite stocker les données également sur le serveur, dans une base de données et lorsqu'un utilisateur demande les données (pour actualisation, ou si son application est réinstallée ou simplement pour l'interrogation), elles seront recréées. Cela semble réinventer la roue, mais parfois c'est une nécessité. – Panagiotis

+0

Eh bien, je voudrais vraiment que le client stocke les éléments fournis avec la mise à jour. Ce que je voudrais vraiment archiver est quelque chose de similaire à la façon dont les oiseaux en colère gèrent cela (vous pouvez obtenir de nouveaux niveaux via une mise à jour). – blejzz

1

Il est bon de penser à ce que SQLite et Core Data apportent à la table. Les deux sont très bons pour l'interrogation, mais vous aurez surtout besoin de récupérer des objets pour un ID donné? Dans ce cas, vous pouvez également envisager un stockage de fichiers simple. Nous avons utilisé un index plist plus des fichiers réguliers pour stocker des données de jeu, c'est une solution simple avec un faible coût technique.

+0

Je devrai récupérer tous les niveaux et tous les éléments de niveaux et construire des objets (sprites et forme physique) à partir d'eux. C'est pourquoi je pense à l'utilisation de SQLite. Et la mise à jour de contenu à partir d'un serveur distant serait moins pénible (si je stockais toutes les données dans des fichiers je devrais avoir pour chaque mise à jour un nouveau fichier - ce serait un gâchis s'il y aurait beaucoup de mises à jour) – blejzz

+0

Je ne pense pas que SQLite rende le chargement plus facile pour vous. En ce qui concerne les mises à jour, je ne peux pas imaginer exactement votre cas d'utilisation, donc je ne peux pas commenter cela. – zoul

+0

Bien si j'utiliserais SQL, le chargement serait simple car tout ce qui concerne le jeu serait stocké dans une base de données unique, donc le jeu s'initialiserait à partir de cette base de données. Et la mise à jour se ferait également en copiant le contenu des bases de mise à jour dans la base de données locale (et non à partir des fichiers N). – blejzz

Questions connexes