2016-03-14 2 views
0

Bienvenue à tous! Je suis en train de programmer un jeu mobile sur Anroid. Je veux vraiment savoir comment sauvegarder les données du joueur. Ce jeu peut être exécuté sur différents appareils sans perte de données.Android - Sauvegarde des données des joueurs - Comparaison de 3 options différentes

  1. Utilisation SharedPreferences
  2. Utilisation JSONObject, JSONArray et enregistrez-le dans le fichier dans Stockage interne et le télécharger sur le serveur externe
  3. SQLite, MySQL

Que choisiriez-vous ? Quels sont les avantages et les inconvénients de chaque option?

Je voudrais enregistrer des données par exemple:

  1. Highscore
  2. Vie
  3. Mana
  4. Nombre d'étapes
  5. Niveau de caractère
  6. Montant de l'argent
  7. et plus ...
+0

Je pense qu'il serait bénéfique d'expliquer plus sur les données du joueur pour permettre aux gens de vous fournir une meilleure réponse, mieux adaptée. – sark9012

+0

J'ai édité une question. Chercher. –

+0

Toutes ces informations peuvent simplement être incluses dans l'objet Player. –

Répondre

0

SharedPreferences devrait être la voie à suivre pour une petite quantité de données. Il y a de nombreux avantages à les utiliser sur SQLite dans cet exemple.

Je déconseillerais d'utiliser un serveur externe parce que personnellement, je ne voudrais pas que mon jeu nécessite Internet pour jouer.

+0

Mais l'application requie l'accès à Internet pour le registre/lecteur de connexion. Le serveur externe est comme le serveur de secours. –

+0

dans ce cas, vous pouvez l'utiliser, mais ne comptez pas sur cela. Utilisez un serveur externe pour certaines sauvegardes, afin que les utilisateurs puissent passer à un périphérique différent et transférer la progression, mais assurez-vous également d'en sauvegarder une copie localement avec SharedPrefs car l'expérience utilisateur ne permet pas de jouer au jeu sans connexion Internet. – Vucko

+0

Oui, je le sais :) alors préférez-vous SharedPreferences, oui? Par exemple, je me connecte à mon application et certaines données sont téléchargées à partir du serveur. Je mets ces données dans le fichier SharedPreferences et je peux l'utiliser dans toutes les applications? –

0

Cela dépend de la quantité de données du lecteur. Mais à moins qu'il y ait beaucoup de données de joueur, je suggère d'utiliser des préférences partagées, particulièrement s'il y a quelque chose de simple comme un objet Player, ou une liste d'objets Player. ça va le couvrir.

Vous pourriez utiliser quelque chose comme ce qui suit pour une liste de joueurs, et changer toute référence à cette liste en un objet joueur si vous voulez seulement sauvegarder 1. Si vous avez beaucoup de données, joueurs, ou auriez besoin sécurité supplémentaire, vous voudrez peut-être aller avec SQLLite.

public class PlayerPrefs { 

    private static final String PLAYERS_PREF_FILE = "PLAYERS_PREF_FILE"; 
    private static final String PLAYERS = "PLAYERS"; 

    private static SharedPreferences getPrefs(){ 
     final Context context = ApplicationData.getAppContext(); 
     return context.getSharedPreferences(PLAYERS_PREF_FILE, Context.MODE_PRIVATE); 
    } 

    public static List<Player> getPlayers() { 
     final Gson gson = new Gson(); 
     Type listType = new TypeToken<ArrayList<Player>>() {}.getType(); 
     SharedPreferences prefs = getPrefs(); 
     String players = prefs.getString(PLAYERS, null); 
     if (players == null){ 
      return new ArrayList<Player>(); 
     } 
     return gson.fromJson(players, listType); 
    } 

    public static void setPlayers(List<Player> players) { 
     final Gson gson = new Gson(); 
     if (players != null) { 
      final SharedPreferences prefs = getPrefs(); 
      SharedPreferences.Editor editor = prefs.edit(); 
      editor.putString(PLAYERS, gson.toJson(players)); 
      editor.apply(); 
     } 
    } 
} 

En outre, vous devrez inclure les éléments suivants dans votre fichier Gradle:

compile 'com.google.code.gson:gson:2.5' 
+0

Ce ne sera pas un jeu multijoueur, pour le moment. Un joueur - un appareil. Je voudrais sauvegarder des données externes parce que si j'ai joué au jeu sur mon smartphone et maintenant je veux jouer sur ma tablette, les données doivent être téléchargées depuis un serveur externe. –

+0

Ensuite, c'est une question complètement différente. Si vous voulez le charger en externe et accessible à partir d'un emplacement centralisé, vous aurez besoin de services Web configurés sur un serveur avec au moins un service get and set pour l'objet Player. –

+0

Mais pour le moment jusqu'à ce que vous ayez cette configuration, pour maintenir les données de ce joueur à travers les sessions, je vous suggère d'utiliser la solution que j'ai là-haut. –